APK安装报错:Targeting R+要求resources.arsc未压缩且4字节对齐
解决APK安装报错Failure [-124]的问题
问题背景
安装APK时触发以下错误:
Failure [-124: Failed parse during installPackageLI: Targeting R+ (version 30 and above) requires the resources.arsc of installed APKs to be stored uncompressed and aligned on a 4-byte boundary]
当前构建流程:
- 使用Apktool构建APK:
apktool build app --use-aapt2 --output app.apk - 对齐APK:
zipalign -p -v 4 app.apk apk-aligned.apk - 签名APK:
apksigner sign --ks-key-alias keys --ks keys --ks-pass xxxxx apk-aligned.apk
Zipalign验证输出显示resources.arsc对齐状态正常:
Verifying alignment of apk-aligned.apk (4)... 44 resources.arsc (OK)
已在apktool.yml中设置resourcesAreCompressed: false,但错误依然存在。
排查方向与修复方案
1. 强制Apktool禁用资源压缩
apktool.yml的配置在aapt2构建模式下可能未生效,直接在构建命令中添加--no-resource-compression参数,确保resources.arsc生成时处于未压缩状态:
apktool build app --use-aapt2 --no-resource-compression --output app.apk
2. 重新执行Zipalign并强制覆盖
即使Zipalign输出显示正常,也可能存在缓存文件干扰,添加-f参数强制覆盖输出文件:
zipalign -f -p -v 4 app.apk apk-aligned.apk
3. 验证resources.arsc的实际压缩状态
用unzip命令检查APK内文件的压缩方式:
unzip -lv apk-aligned.apk
查看resources.arsc对应的Method列,若显示Stored则为未压缩(符合要求),若为Deflated则说明该文件被压缩,需回到构建阶段排查配置问题。
4. 升级Apktool版本
旧版本Apktool对aapt2的兼容性可能存在bug,导致resourcesAreCompressed配置不生效。升级至最新版Apktool后重新构建。
总结
优先尝试在构建命令中添加--no-resource-compression参数,同时升级Apktool到最新版,重新执行构建→对齐→签名流程。若问题依旧,通过unzip命令确认resources.arsc的实际状态,定位问题环节。
内容的提问来源于stack exchange,提问作者janic0
相关产品推荐
相关产品推荐

