Android应用进行系统内置失败问题

1,001 阅读1分钟

问题

前提:Android12 targetSDk:31
apk手动可以安装,但系统内置失败!

PackageManager: Failed to parse /system/priv-app/base: Targeting R+ (version 30 and above) requires the resources.arsc of installed APKs to be stored uncompressed and aligned on a 4-byte boundary

解决思路

  1. 确认resource.arsc没有被压缩
  2. 确认aligned on a 4-byte boundary
// 执行
C:\android_sdk\build-tools\32.0.0>zipalign -c -v 4 base.apk
...
91366736 resources.arsc (OK)  #没有被压缩
89142105 res/layout/layout_main_top_menu.xml (OK - compressed)  #压缩了
88363996 res/drawable-xhdpi-v4/icon_menu_light.png (OK)
...
Verification succesful  #确认成功

3. 确认资源文件是否有中文命名,包括assets文件夹下;

历程

在执行zipalign命令的时候,发现有资源名称显示为乱码,找到项目中对应的资源,是以中文命名,固怀疑是否跟中文命名有关;修改为英文后,再次进行内置,反馈内置成功。

参考