背景:
在以前学习马哥framework入门课程时候有讲解预制apk,一般apk或者native程序等,需要集成到系统都需要有如下两个步骤:
1、Apk或者native需要有自己的Android.mk,Android.bp要定义好自己的目标
2.该Module要被加入到PRODUCT_PACKAGES下面
但是经常我们有时候为了方便,自己写的一些简单的测试native,apk,可能只会进行的Module进行编译,不会把Moudle加入到PRODUCT_PACKAGES进行预制。
具体可以看看下面使用简单方式,看看aosp14和aosp15上面的差异。
aosp14和aosp15在make目标然后进行打包差异对比
简单说就是为了方便,只会make xxx目标,,一般都会在system/bin目录或者system/app目录有对应程序,然后触发一下系统打包system.img,emulator启动后就可以在设备上看到编译的目标
编译一下sound目标,本来系统不包含sound
上面完成后就可以在out/target/product/emulator_x86_64/system/bin/下看到sound的程序了
接下来要触发系统打包system.img,一般这里采用touch一个系统一定会编译的cpp文件,然后进行make
然后adb shell进入后明显可以看到确实system/bin下面有这个sound
但是上面一样的操作方式,然后在aosp15上结果如下:
然后进行更新和触发打包system.img
运行后adb shell查看是否有sound文件
可能有人怀疑没有触发打包成功,但是我们更新了AudioFlinger文件对应audioserver时间点就是最新的,所以不存在没有重新打包system
那这个到底是为啥,慢慢
作业要求
1、请找出一种方法可以让aosp15上不加入PRODUCT_PACKAGES也可以被打包到system.img的方法
2、请分析出google在打包这块有啥差异相比aosp14,这样做的目的是啥?
更多framework实战干货,请关注千里马学框架