由于第三方jar包的格式问题,如果想引用包中类的某些方法,可行的做法是:

在framework 层添加一个模块,包含以下这些文件:

1.反射第三方jar包的java类
2.framework的makefile 文件
3.以工程包名为文件名的xml文件

---------------------
一、反射jar包类内容(略)

二、xml文件内容

<? xml version ="1.0" encoding ="utf-8" ?>
< permissions >
< library name ="com.test.lib"
file ="/system/framework/mylib.jar" />
</ permissions >


此处的library name 属性值为工程包名、文件名与编译Jar包的module name一致。

三、framework makefile 内容:
主要包括两部分的编译内容:
1.拷贝xml文件到OUT-TARGET/permission 目录下

2.编译工程中的源文件为Jar包

LOCAL_PATH:= $(call my-dir)

#make xml

  include $(CLEAR_VARS)

  LOCAL_MODULE_TAGS := optional

  LOCAL_MODULE := com.test.lib.xml

  LOCAL_MODULE_CLASS := ETC

  LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/permissions

  LOCAL_SRC_FILES := $(LOCAL_MODULE)

  include $(BUILD_PREBUILT)

#make mylib.jar

  include $(CLEAR_VARS)

  LOCAL_SRC_FILES := $(call all-subdir-java-files)

  LOCAL_MODULE:= mylib

  LOCAL_MODULE_CLASS := JAVA_LIBRARIES

  LOCAL_MODULE_TAGS:= optional

  include $(BUILD_JAVA_LIBRARY)


-------------------------
编译这个framework jar 包:

1.<Android_RootPath>$make mylib
2.
(1).<Android_RootPath>$ . build\envsetup.sh

(2).<Android_RootPath>\framework\base\core\<Module_Path>$make mylib

//编译结束后会在 out/target/product/generic/system/framework 目录下生成相应的 mylib.jar 库文件
//在 out/target/product/generic/system/etc/permissions 目录下生成相应的 com.test.lib.xml 文件

-------------------------

在应用程序中引用库

1.在应用的make 文件(Android.mk)中添加

LOCAL_JAVA_LIBRARIES := mylib
#如果引用多个库中间用空格隔开

2.在工程的AndroidManifest.xml中的<application>节点下添加

< uses-library
android:name ="com.test.lib" >
</ uses-library >


---------------------------
在应用程序下测试
在工程类内引用包中的类,

import com.test.lib.Mylib;
public static void main(String[] args){
         //there is a class naming Mylib in Jar Libary
        Mylib mLib = new Mylib();
         //there is a test method in class Mylib
        mLib.test();
}


编译工程
。。。。。。。。


(本文完)