为什么安卓aosp15打包system.img中无法包含没有在PRODUCT_PACKAGES定义的目标--学员作业

0 阅读2分钟

背景:

在以前学习马哥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实战干货,请关注千里马学框架

原文地址:为什么安卓aosp15打包system.img中无法包含没有在PRODUCT_PACKAGES定义的目标--学员作业