Android源码定制(3)——Android10无源码内置apk到系统
背景
作者:退役debug选手
环境 AOSP 10
当我们经常编译AOSP后有可能需要全量更新我们的修改,全量更新就意味着之前我们手机上面安装的软件都清空了,等同于回复出厂设置,那么我们可不可以提前放入一些我们自己需要用的APP呢,刷机之后APP就不用重复安装了。
无源码内置apk到系统
这一次我们先做一个无源码无so库的APP到系统中。
有so库的下一篇实践。
准备工作
准备好apk安装包,这个包也可以是自己的,也有可能是客户给的,只给成品不给源码。这是前提。
比如我现在就编写了一个简单的无so的apk。
App名字就是内置App。 编译成功之后先安装到手机看看运行情况,是否会崩溃等等检查。
能看到我们的log正常输入,且App没有崩溃。 我们把这个apk复制到这里: 在源码目录下packages/apps下创建一个目录,这个目录就是我们存放apk的目录。 创建MyApp目录,保存上面打包出来的apk文件,命名MyApp.apk。
创建Android.mk文件,文件内容是这样的。
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := MyApp
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE := PRESIGNED
include $(BUILD_PREBUILT)
当我们加入到这个地方之后,是可以进行编译,但是无法加入到系统编译中,还需要修改另一个地方配置。
这里有很多App,我们在build中搜索他们是怎么配置的。
比如相机,我们找到了build/make/target/product/handleld_product.mk中有相机的配置,通常这种文件夹配置后面会有一个 \反斜杠。我们模仿他们去配置就行。
加入我们的apk的目录。
编译刷机
上面配置完成之后,我们开始编译。
接下里是错误的操作,make -j4后我snod重新生成system.img,然后就刷入手机了。
这个时候手机重启,直接显示分区坏了。。。
具体原因不明,如果知道的大佬,还望告知。
怎么抢救呢?刷入同代号的官方刷机包就行。这个我很早就准备好了,因为之前已经遇到过这个情况n次,我现在内心毫无波澜了。
找到之前的刷机包,执行flash-all.sh就行了。 抢救回来之后,当然是继续刷,我们还没验证是否内置成功。 这一次就是全量刷入。
进入源码目录
adb reboot bootloader
#重启手机到bl模式
fastboot devices
#看看设备是否链接了,有xxfaf devices就是连接了。开始刷机。
fastboot flashall -w
刷机完成正常开机,查看APP是否内置成功。
这里没有卸载选项的了
打开App
成功了!
总结
本文主要介绍了如何通过源码定制内置APP到Android系统,更多移动安全知识欢迎关注安全后厨!