Android 在应用程序中引用第三方Jar包

来源:互联网 发布:手机画画软件sketchbook 编辑:程序博客网 时间:2024/05/17 22:40

转自:http://lirui.blog.51cto.com/2336974/512446

由于第三方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 staticvoid 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();
}


编译工程


原创粉丝点击