Android 7.0 安装包修改后无法安装

今天在我的Nexus6P(Android7.0)安装公司最新版App的时候,报错说“文件已损坏”。
后来通过命令行adb install尝试安装时,报错如下:

Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES: Failed to collect certificates from /data/app/vmdl2097371921.tmp/base.apk: META-INF/CERT.SF indicates /data/app/vmdl2097371921.tmp/base.apk is signed using APK Signature Scheme v2, but no such signature was found. Signature stripped?]

经查询官网说明后得到解释:
官方文档说明

Android N引入一项新的应用签名方案 APK Signature Scheme v2 ,它能提供更快的应用安装时间和更多针对未授权APK文件更改的保护。在默认情况下,Android Studio 2.2 和Android Gradle
2.2插件会使用APK Singnature Scheme v2和传统签名方案来签署您的应用。

这种新的签名规则规定:使用了新的签名规则签署的应用,如果对应用apk进行了进一步更改,则应用签名无效。出于这个原因,请在使用APK Signature Scheme v2之前,而非之后使用ziplign工具。

当然也有关闭这项规则的方法,在build.gradle文件中添加 v2SigningEnabled false :

android {
    ...
    defaultConfig { ... }
    signingConfigs {
      release {
        storeFile file("myreleasekey.keystore")
        storePassword "password"
        keyAlias "MyReleaseKey"
        keyPassword "password"
        v2SigningEnabled false
      }
    }
  }

考虑到打包的流程,发现是使用apk中meta-info目录添加渠道标示文件的方法打多渠道包,导致签名后的apk文件与源文件不一致导致的。

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值