Android第三方应用集成到Android系统的解决方法
最近项目中需要将开发中的应用继承到Android系统设备中,使得设备在出版本的时候Android系统会自带这个应用。如果这个我们自己开发的应用有用到第三方是用到第三方的SDK库的话,则还必须对这些库(.jar、.so)等进行统一的管理,操作步骤如下:
1. 将开发的第三方应用比如应用名为 VTest,项目结构如下图所示:
将项目移到Android系统源码:workspace_Android/packages/apps路径下 [workspace_Android为Android工程,名字是自定义命名的],注意Android工程首先必须是全编过的。
2. 在当前目录(workspace_Android/packages/apps/VTest)下新建一个 Android.mk 文件(这个文件的作用自己google),当然也可以从已有的系统项目,比如Browser中拷贝Android.mk文件然后修改。
修改如下所示:
LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE_TAGS := optional# Only compile source java files in this apk.LOCAL_SRC_FILES := $(call all-java-files-under, src)LOCAL_PACKAGE_NAME := VTestLOCAL_CERTIFICATE := platformLOCAL_STATIC_JAVA_LIBRARIES := baiduMapAPILOCAL_SHARED_LIBRARIES := baiduMapApiEngineinclude $(BUILD_PACKAGE)# ============================================================include $(CLEAR_VARS) LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES :=baiduMapAPI:libs/baidumapapi.jarLOCAL_PREBUILT_LIBS :=baiduMapApiEngine:libs/armeabi/libBMapApiEngine_v1_3_5.so LOCAL_MODULE_TAGS := optional include $(BUILD_MULTI_PREBUILT)[说明]:其中 LOCAL_STATIC_JAVA_LIBRARIES 和 LOCAL_SHARED_LIBRARIES 为静态库和共享库,其中的区别自己搜索,这里不再阐述。3. 设置好Android.mk文件之后就可以将一些不必要的文件配置文件删除。同时管理好第三方的SDK库,整个工程目录如下图2所示。注意把(.jar和 .so) 统一放在lib包下管理。
4. 以上步骤基本上可以完成单模块的编译要求,但是如果系统全编的话,则可能这个模块会没办法编译到,所以我们还需要在路径 workspace_Android\build\target\product下的 core.mk文件中的 PRODUCT_PACKAGES 字段下追加需要编译的应用 VTest 名称。如下代码片段所示:
PRODUCT_PACKAGES := \ ApplicationsProvider \ Antitheft \ VTest \ BackupRestoreConfirmation \ Browser \ CarSettings \ Contacts \
5. 然后就可以在Linux环境下进行编译了,如果有第三方库,编译在生成apk的同时,还会生成第三方库的so文件,如下图所示:所以要将它们各自push到Android指定目录里面。
更多相关文章
- 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
- 一款常用的 Squid 日志分析工具
- GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
- RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
- Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
- Nginx系列教程(六)| 手把手教你搭建 LNMP 架构并部署天空网络电影
- 不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...
- 【Android笔记】Android(安卓)Resourse
- Android(安卓)4.0 和 Galaxy Nexus 香港发布会实录