您的位置:首页 > 其它

framework调用第三方的Jar包

2015-11-10 19:28 309 查看
工作中碰到需要在framework中调用第三方的jar包中的函数

在源码环境下,按照下面的步骤即可实现:

1 在源码frameworks/opt/中创建文件夹demo, 将第三方的demo.jar拷贝拷贝到该目录下,同时在该目录下创建Android.mk (参考android2.1)

LOCAL_PATH := $(my-dir)

include $(CLEAR_VARS)

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := myjar:demo.jar

include $(BUILD_MULTI_PREBUILT)


“myjar” 只是一个标示名,可以用任意命名替换,该名称在下面步骤中会用到

2 将demo.jar编译到源码环境中

执行命令:mmm framework/opt/demo/

编译之后会生成

out/target/product/xxx/obj/JAVA_LIBRARIES/demo_intermediates/javalib.jar

3 在framework加入demo.jar,需要修改framework/base/Android.mk:

# Build ext.jar
# ============================================================

# NOTICE notes for non-obvious sections
# apache-http - covered by the Apache Commons section.

ext_dirs := \
../../external/nist-sip/java \
../../external/apache-http/src \
../../external/tagsoup/src \
../../external/libphonenumber/java/src

ext_src_files := $(call all-java-files-under,$(ext_dirs))

ext_res_dirs := \
../../external/libphonenumber/java/src

# ====  the library  =========================================
include $(CLEAR_VARS)

LOCAL_SRC_FILES := $(ext_src_files)

LOCAL_NO_STANDARD_LIBRARIES := true
LOCAL_JAVA_LIBRARIES := core
LOCAL_JAVA_RESOURCE_DIRS := $(ext_res_dirs)
LOCAL_STATIC_JAVA_LIBRARIES := myjar 增加该行,myjar是步骤1中的标示名
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := ext

LOCAL_DX_FLAGS := --core-library

include $(BUILD_JAVA_LIBRARY)


4 将demo.jar编译到framework中

执行命令: mmm framework/base/

会更新3个系统jar包

out/target/product/xxx/system/framework/ext.jar

out/target/product/xxx/system/framework/framework.jar

out/target/product/xxx/system/framework/framework2.jar

需要注意:

编译的中间文件会存在下列目录中

out/target/common/obj/JAVA_LIBRARIES/demo_intermediates/

out/target/common/obj/JAVA_LIBRARIES/ext_intermediates/xxx

out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/xxx

out/target/common/obj/JAVA_LIBRARIES/framework2_intermediates/xxx

out/target/product/xxx/obj/JAVA_LIBRARIES/demo_intermediates/javalib.jar

out/target/product/xxx/obj/JAVA_LIBRARIES/ext_intermediates/javalib.jar

out/target/product/xxx/obj/JAVA_LIBRARIES/framework_intermediates/javalib.jar

out/target/product/xxx/obj/JAVA_LIBRARIES/framework2_intermediates/javalib.jar

如果调试中不想打包第三方的Jar包时,需要手动删除上述目录/文件,再重新编译。

经过上述步骤,就可以在framework调用demo.jar包中函数了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: