AOSP构建中系统应用原生库解压转换的具体步骤咨询
AOSP 10预构建APK原生库自动转未压缩的构建步骤解析
触发转换的核心规则
这个转换动作是由**BUILD_PREBUILT**规则触发的,具体逻辑定义在AOSP源码的build/core/apk_prebuilt.mk文件中,关键执行环节是uncompress_native_libraries目标。
具体处理流程
当你在Android.mk中使用include $(BUILD_PREBUILT)构建预构建APK时,AOSP会自动执行以下操作:
- 解压原始APK到临时工作目录
- 扫描APK内
lib/路径下的所有.so文件,将这些文件的ZIP存储方式从压缩的DEFLATED改为未压缩的STORED - 重新打包修改后的内容生成新APK
- 对新APK执行zipalign对齐和指定签名(即你配置的
LOCAL_CERTIFICATE := platform) - 将最终处理后的APK输出到
LOCAL_MODULE_PATH指定的目录
关于signapk和zipalign的说明
你排查的signapk和zipalign确实不负责修改压缩状态——它们仅在APK重新打包完成后,分别执行签名和对齐操作,不会改变.so文件的存储格式。
自定义后构建替换APK的建议
如果要在构建完成后替换该APK,可以通过在Android.mk中添加LOCAL_POST_INSTALL_CMD来指定自定义命令,示例如下:
LOCAL_POST_INSTALL_CMD := cp /path/to/your/custom.apk $(LOCAL_MODULE_PATH)/$(LOCAL_MODULE)$(LOCAL_MODULE_SUFFIX)
这条命令会在BUILD_PREBUILT完成所有默认处理(包括.so转未压缩、重新打包、签名对齐)之后,用你指定的自定义APK替换系统生成的版本。
内容的提问来源于stack exchange,提问作者philipp
相关产品推荐
相关产品推荐

