AOSP构建中android_app_import导致APK签名丢失问题求助
解决Soong蓝图中预构建APK签名被剥离的问题
问题根源
你的问题出在Soong对使用APK Signature Scheme v2/v3的预构建APK的默认处理上:即使设置了presigned: true,Soong仍可能会解压并重新打包APK,这会破坏v2/v3签名(这类签名基于APK文件整体哈希,重打包会直接导致签名失效),最终出现签名被剥离的报错。
解决方案
直接在android_app_import块中添加关键参数,阻止Soong修改APK文件:
1. 修改Soong蓝图,添加extract_apk: false
name: "App", apk: "App.apk", presigned: true, dex_preopt: { enabled: false, }, privileged: true, product_specific: true, extract_apk: false, // 禁止Soong解压重打包APK }
这个参数会让Soong直接将原始APK文件打包到系统镜像中,完全保留原有的签名信息,不会破坏v2/v3签名。
2. 验证APK的签名类型
先确认你的APK确实使用了v2/v3签名,执行以下命令:
如果输出中包含Verified using v2 scheme (APK Signature Scheme v2): true或v3相关内容,说明确实需要上述参数来保留签名。
3. 清理构建缓存后重新构建
为了避免旧的修改后APK残留,执行清理命令再重新构建:
make [你的目标产品名称]
额外注意事项
- 确保
presigned: true配置正确,该参数告诉Soong不要对APK进行重新签名操作 - 如果你的应用包含Split APKs,需要为每个Split的
android_app_import块都添加extract_apk: false - 若APK针对特定架构编译,可添加
compile_multilib: "32"或"64"匹配对应架构,避免构建过程中触发不必要的APK修改
内容的提问来源于stack exchange,提问作者artem
相关产品推荐
相关产品推荐

