framework调用第三方的Jar包
2015-11-10 19:28
309 查看
工作中碰到需要在framework中调用第三方的jar包中的函数
在源码环境下,按照下面的步骤即可实现:
1 在源码frameworks/opt/中创建文件夹demo, 将第三方的demo.jar拷贝拷贝到该目录下,同时在该目录下创建Android.mk (参考android2.1)
“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:
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包中函数了。
在源码环境下,按照下面的步骤即可实现:
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包中函数了。
相关文章推荐
- Xcode 6中添加预编译pch文件
- 在LitePal中解析XML
- LitePal的CRUD操作
- 软件架构师成长之路
- iOS开发之设计一个新闻客户端模板(Swift)
- 网络爬虫介绍及数据采集
- NVLink技术及影响解析
- 匿名内部类
- Android快速SDK(7)图像加载库ImageLoader【傻瓜模式】
- AndroidStudio快速入门二:Gradle快速构建Android项目(多个Module同时构建)
- LitePal中需要用到的Model
- 一些异常封装
- NoSQL:从关系型数据库到非关系型数据库
- java基础1
- ajax订单支付,提示订单过期 (传递data为普通格式)
- codeforces 150A 题解
- Generator数据库的管理者
- 题目1.2.4 The Seven Percent Solution(C++)
- 二孩成驱动力?母婴垂直电商坐等机遇不可取
- cookie和Jsessionid