由于第三方jar包的格式问题,如果想引用包中类的某些方法,可行的做法是:
在framework 层添加一个模块,包含以下这些文件:
1.反射第三方jar包的java类
2.framework的makefile 文件
3.以工程包名为文件名的xml文件
---------------------
一、反射jar包类内容(略)
二、xml文件内容
此处的library name 属性值为工程包名、文件名与编译Jar包的module name一致。
三、framework makefile 内容:
主要包括两部分的编译内容:
1.拷贝xml文件到OUT-TARGET/permission 目录下
2.编译工程中的源文件为Jar包
-------------------------
编译这个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>节点下添加
---------------------------
在应用程序下测试
在工程类内引用包中的类,
编译工程
。。。。。。。。
(本文完)
在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 >
< 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)
#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 >
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();
}
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();
}
编译工程
。。。。。。。。
(本文完)
转载于:https://blog.51cto.com/lirui/512446