Targeting R+ (version 30 and above) requires the resources.arsc of installed APKs to be stored uncom

本文介绍了在Android 11及以上版本中,由于资源文件要求4字节边界对齐导致的安装问题,重点讲解了如何通过zipalign工具进行文件对齐和使用apksigner进行签名的解决方案。务必确保APK资源的正确处理以确保应用安装成功。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

APK项目设置target30后出现:

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]
 

官方解释:

如果以 Android 11(API 级别 30)或更高版本为目标平台的应用包含压缩的 resources.arsc 文件或者如果此文件未按 4 字节边界对齐,应用将无法安装。如果存在其中任意一种情况,系统将无法对此文件进行内存映射。无法进行内存映射的资源表必须读入 RAM 中的缓冲区,从而给系统造成不必要的内存压力,并大大增加设备的 RAM 使用量

zipalign

zipalign 是一种 zip 归档文件对齐工具。它可确保归档中的所有未压缩文件相对于文件开头都是对齐的。这样一来,您便可直接通过 mmap(2) 访问这些文件,而无需在 RAM 中复制相关数据并减少了应用的内存用量。

在将 APK 文件分发给最终用户之前,应该先使用 zipalign 进行优化。如果您使用 Android Studio 进行构建,则此步骤会自动完成。本文档适用于自定义构建系统的维护者。

注意:您必须在应用构建过程中的两个特定时间点之一使用 zipalign,具体在哪个时间点使用,取决于您所使用的应用签名工具:

  • 如果您使用的是 apksigner,只能在为 APK 文件签名之前执行 zipalign。如果您在使用 apksigner 为 APK 签名之后对 APK 做出了进一步更改,签名便会失效。
  • 如果您使用的是 jarsigner,只能在为 APK 文件签名之后执行 zipalign。

解决方案有两种:

1、降低target30以下

2、使用Sdk\build-tools下的zipalign工具做对齐,然后使用apksigner

a.Sdk\build-tools下 找到zipalign.exe 放到指定文件下,可以用CMD到该指定的文件目录下使用命令

  //对齐操作命令,4代表对齐为4个字节
  //input 输入的apk路径 output 输出的apk路径
  zipalign -p -f -v 4 input.apk output.apk
  
  //确认对齐结果命令
  zipalign -c -v 4 output.apk

  //操作或验证成功后会看到 Verification succesful 

b.使用apksigner签名

'''
同时使用v1和v2签名
java -jar apksigner.jar sign           //执行签名操作
 --ks 你的jks路径                       //jks签名证书路径
--ks-key-alias 你的alias                //生成jks时指定的alias
--ks-pass pass:你的密码                 //KeyStore密码
--key-pass pass:你的密码                //签署者的密码,即生成jks时指定alias对应的密码
--out output.apk                        //输出路径
input.apk                               //被签名的apk  
'''

验证签名是否成功:

java -jar apksigner.jar verify -v my.apk

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值