1. APEX简介
(APEX)Android Pony EXpress
google为了使低层次的系统组件,能够像应用模块那样可以独立的更新升级,不受大版本升级的限制,才有了APEX方案。
2. APEX文件生成
在低版本的安卓系统中一些链接库是可以独立编译和替换的(eg: libmp4extractor), 之前改动了相关的代码只需要编译这个so,然后push到手机对应的目录下并重启即可生效。
但是现在,google推出了APEX方案,有些so编译好了并不会直接Push到手机里面,所以无法替换so生效。那怎么替换呢?这些so编译完之后会再统一编译成apex二进制文件,如果想替换某个so就编译这个so所在的apex文件并push到手机里面就可以了。
那么apex文件是怎么编译的呢?其实和so编译的过程一样。
eg: 需要编译"com.android.media"
mmm frameworks/av/apex/ 即可
3. 替换apex文件
本地生成的apex文件存放在
out/target/product/venus/system/apex 这个目录下
将这个文件push到手机system/apex目录下即可
adb push com.android.media.apex system/apex
4. 总结
如果改动了代码发现替换so不生效,对应的so被加入了apex,怎么办?
step1: 找到这个so对应的apex的目录(eg: frameworks/av/apex/)
step2: 编译apex文件(mmm frameworks/av/apex/)
step3: 替换apex文件, cd out/target/product/venus/system/apex, 然后adb push com.android.media.apex system/apex
step4: 重启即可生效