最近项目中需要将开发中的应用继承到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指定目录里面。



更多相关文章

  1. 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
  2. 一款常用的 Squid 日志分析工具
  3. GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
  4. RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
  5. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
  6. Nginx系列教程(六)| 手把手教你搭建 LNMP 架构并部署天空网络电影
  7. 不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...
  8. 【Android笔记】Android(安卓)Resourse
  9. Android(安卓)4.0 和 Galaxy Nexus 香港发布会实录

随机推荐

  1. Docker 镜像的备份恢复迁移
  2. 人生首套房子的重要性,怎么买对,怎么置换?
  3. 组件化思维对于一个UI设计来说有多重要?
  4. 如何使gateway_worker与客户端通信,有哪几
  5. thinkphp6 验证码 异步刷新 记录,
  6. php之类与继承
  7. jQuery中的DOM操作实现留言板功能、$get
  8. 0506oop作业
  9. 【PHP 面向对象】面向对象(OOP)编程知识
  10. python 集合知识