今天在我的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文件与源文件不一致导致的。

更多相关文章

  1. Android计算缓存大小、清空缓存
  2. 安卓开发之去标题栏
  3. Android实现手机振动设置的方法
  4. Mac Android(安卓)FFMpeg 编译及集成
  5. android studio 开发 cordova plugin(组件)的 helloWorld
  6. android工程版key
  7. ProgressBar 颜色的设置
  8. Error: Could not find gradle wrapper within Android(安卓)SDK
  9. android的apk包中的xml文件打开方法

随机推荐

  1. Android-StepsView
  2. Android 打造一个通用的TitleBar
  3. android 应用实现屏幕下沉(android 4.4及
  4. Android开发之-- 复制文本
  5. android集成友盟统计平台
  6. Android日志打印Util类
  7. Android实现Banner轮播效果
  8. 通过代码设置Android联系人的头像
  9. Script compiler android and make a fil
  10. Android中Activity中左右滑动手势的监听