使用apktool 重新打包后安装失败

异常1:Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES: Scanning Failed.: No signature found in package of version 2 or newer for package xxx.xxx.xxx

使用   java -jar apksigner.jar verify -v XXX.apk 得知:

ERROR: Target SDK version 31 requires a minimum of signature scheme v2; the APK is not signed with this or a later signature scheme

错误:该APK开发的目标版本是31,需要有V2签名

再次执行 :java -jar apksigner.jar verify -v xxx.apk

Verified using v1 scheme (JAR signing): true
Verified using v2 scheme (APK Signature Scheme v2): true
Verified using v3 scheme (APK Signature Scheme v3): true
Verified using v4 scheme (APK Signature Scheme v4): false
Verified for SourceStamp: false
Number of signers: 1

异常2: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目标版本在30以上才会有的报错,没按4字节对齐

zipalign -p -f -v 4 infile.apk outfile.apk

异常3: Failed to collect certificates from /data/app/vmdl991791850.tmp/base.apk: META-INF/ABC_KEYS.SF indicates /data/app/vmdl991791850.tmp/base.apk is signed using APK Signature Scheme v2, but no such signature was found. Signature stripped?

原文说证书收集失败,没有找到V2签名,通过android官网可知V2签名不是必须的,重新签一个部开起V2签名的apk再安装

异常4:[INSTALL_PARSE_FAILED_NO_CERTIFICATES: Failed to collect certificates from /data/app/vmdl1445377762.tmp/base.apk: META-INF/ABC_KEYS.SF indicates /data/app/vmdl1445377762.tmp/base.apk is signed using APK Signature Scheme v3, but no such signature was found. Signature stripped?]

那就签名时关闭V3

依旧安装失败

1.修改AndroidManifest.xml 的编译版本,降低到30以下25以上

2.签名时V2还是得开启,v3可以关掉

Verified using v1 scheme (JAR signing): true
Verified using v2 scheme (APK Signature Scheme v2): true
Verified using v3 scheme (APK Signature Scheme v3): false
Verified using v4 scheme (APK Signature Scheme v4): false
Verified for SourceStamp: false

最终安装成功

提示:

先压缩,后签名

zipalign -p -f -v 4 old.apk new.apk

基本使用:

 解码: java -jar apktool.jar d xxx.apk

根据提示,还需签上自己的签名才能安装,下面先生成签名

keytool -genkey -alias abc.keystore -keyalg RSA -validity 20000 -keystore abc.keystore( abc.keystore 中的abc就是你签名的名称,这里名称随便命名,不能输入中文或中文符号) 命令运行后输入密码(自己设置一个密码,不做要求) 填写一下信息

签名:

java -jar apksigner.jar sign --ks abc.keystore --ks-key-alias abc.keystore --v2-signing-enabled true --v3-signing-enabled false --out new.apk --in old.apk

官网:Apktool - How to Install

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值