将APK直接放入系统目录中,会导致APK找不到so文件。正常情况下的安装是使用PackageManager它会将so文件拷贝到系统读取的so目录(system/lib或system/lib64)下,提供给App使用,系统应用不会使用PackageManager去安装,所以在使用系统应用前,需要提前将so文件拷贝到system/lib或system/lib64目录下。
那么有没有方法,在系统应用预装时,就自动提取apk中的so拷贝到system/lib或system/lib64目录下呢。下面阐述一下系统预置app的整个流程,包含对这个问题的解决

1、前提

(1)studio已编译好的app 并已经签名

(2)拥有系统源码

2、添加app到系统

将编译号的app在windows中解压,并得到 lib 文件夹,其中有很多的动态链接库(.so)

将编译好的apk如test.apk放到系统源码的packages/apps/test(test 自己创建的)中,

把上面解压的lib文件夹也放到test中。

3、编写Android.mk文件

include $(CLEAR_VARS)
# Module name should match apk name to be installed
LOCAL_MODULE := Test
LOCAL_MODULE_TAGS := optional //不管是user 还是eng 版本都会编译此app
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_PREBUILT_JNI_LIBS := \@lib/armeabi/libtest.so \ //注意前面要用tab键隔开。  通过这种方式来完成半自动提取apk中的so,并拷贝到system/lib或system/lib64目录下@lib/armeabi/libtest2.so //这是你需要添加的so。 如果是 armeabi-v7a 直接替换掉armeabi
LOCAL_CERTIFICATE := PRESIGNED //表示app已经签名
include $(BUILD_PREBUILT)
如果so文件是32位,而源码是针对64机器的,那么还需要在android.mk文件中加上
LOCAL_MULTILIB := 32

4、在系统预置app的配置文件中添加我们目录

我的系统源码的配置文件在bulid/target/product/generic.mk 这个文件中又包含其他的配置文件,最终就是在配置文件中的 PRODUCT_PACKAGES 标志下添加你的test目录

PRODUCT_PACKAGES := \Bluetooth \Camera2 \Gallery2 \Music \MusicFX \OneTimeInitializer \Provision \SystemUI \WallpaperCropper\test

Android系统添加预置APP(so库自动释放)相关推荐

  1. 为android系统添加USB AUDIO设备的放音和录音功能

    转载请注明出处:http://blog.csdn.net/adits/article/details/8242146 开发环境简介 1. 主机系统: Unbuntu10.10 2. android系统 ...

  2. 为android系统添加USB AUDIO设备的放音和录音功能(转载)

    开发环境简介 1. 主机系统: Unbuntu10.10 2. android系统版本: 4.0.3(Linux kernel 3.0.8) 综述 android的音频系统非常庞大复杂:涉及到java ...

  3. qt android 重启,一种Android系统支持QT APP的实现方法专利_专利查询 - 天眼查

    1.一种Android系统支持QT APP的实现方法,其特征在于:所述实现方法首先使 Ministro服务能作为Android系统的系统应用程序运行,其次将QT程序依赖的QT库以及其 他文件部署到An ...

  4. 开发一个基于 Android系统车载智能APP

    很久之前就想做一个车载相关的app.需要实现如下功能: (1)每0.2秒更新一次当前车辆的最新速度值. (2)可控制性记录行驶里程. (3)不连接网络情况下获取当前车辆位置.如(北京市X区X路X号) ...

  5. android系统视频剪辑app推荐,知乎10w人收藏:玩短视频必装的9款剪辑App(最全)...

    声明:本文来自于微信公众号 微果酱(ID:wjam123456),作者:   橙子,授权站长之家转载发布. 做运营的 每天都要面临一些新难题 比如老板想追潮流做短视频 吐血写脚本.拍完视频 磨刀霍霍向 ...

  6. android系统裁剪之APP精简

    APP精简的目标是精简手机root下system/app和system/priv-app两个目录里的APK文件. 精简的手段是:弄清这些应用的用处,搞明白这些应用是否对系统无用,有没有用需要根据自己的 ...

  7. Android系统添加USB共享网络

    文章目录 一.代码修改: 1.内核添加RNDIS的支持 2.init.rc中增加两个针对usb0的配置服务 3.frameworks中修改配置 二.调试 测试平台:MT2712,Android9.0, ...

  8. text——为android系统添加一种默认字体,类似“sans”,“serif”,“monospace”

    在android系统中,默认的中文字体只有一种:DroidSansFallback.ttf,如果想在android应用程序中随意设置想要的中文字体,除了在应用程序中通过assets目录引入字体文件外, ...

  9. 精简Android系统下的APP

    当我们拿到Androd源码后,进行编译和烧写,发现里面有许许多多的内置apk和测试apk,这时就需要对系统里的apk进行精简了. 精简APP时候注意了,要先rm -rf out/target/prod ...

最新文章

  1. POJ 3458 Colour Sequence(简单题)
  2. (3)-JSONObject的过滤设置
  3. 数据库——mysql如何获取当前时间---https://www.cnblogs.com/Chenshuai7/p/5136469.html
  4. oracle数据文件5属于孤立,system数据文件问题库起不来,当家帮忙看看
  5. 《高等代数学》(姚慕生),习题1.4:行列式的展开和转置
  6. 【CISCN2021】第十四届全国大学生信息安全竞赛初赛-writeup
  7. Lucas-Kanade 20 Years On 正反向/累加/合成求解算法
  8. 类型查找器 ITypeFinder
  9. 帝恩思:网站被劫持跳转怎么办?
  10. MSDC 4.3 接口规范(26)
  11. 计算机与u盘连接使用,u盘虽然与电脑连接,但是插上后却没有反应,这该如何解决?...
  12. leaflet地图概念框架图
  13. 《D o C P》学习笔记(3 - 1)Regular Expressions, other languages and interpreters - Lesson 3
  14. 重启tomcat命令
  15. 【MySQL】6.0 表的增删查改
  16. Qt实现主窗口和子窗口的切换
  17. 22-函数与string 对象
  18. matlab fir系数,FIR滤波器的系数问题
  19. 红色藤野先生课件PPT模板
  20. zz .Net 实现游戏修改器

热门文章

  1. Okio基本使用以及源码分析
  2. 顶尖学术盛宴,CADD计算机辅助药物设计,AIDD人工智能药物发现与深度学习基因组概述
  3. LOOT 示波器软件功能 8位~13位垂直分辨率讲解
  4. 并发编程专题五-AbstractQueuedSynchronizer源码分析
  5. Nepxion Discovery学习笔记3 Sentinel流量防卫兵/服务容错综合方案
  6. 【英语】本周做了点啥呢?
  7. 【华为OD机试 2023】 密室逃生游戏(C++ Java JavaScript Python)
  8. 【Elasticsearch】文本分析 Text analysis (1)
  9. 计算机专业中,为什么网络工程最不起眼、最不受推荐?
  10. 批量下载某些网站的在线视频(如:bibi,优酷等)