签名apk安装失败,都是signature version惹的祸

签名apk安装失败,都是signature version惹的祸

新建的一个项目由于引用了一些三方库,还没打过签名包,担心混淆会有问题,准备先打个签名包试一下,结果一打出来就遇到个很让人郁闷的问题:安装失败!!!

一开始我以为是混淆的问题,因为在打包过程中还遇到过几个错误和警告,所以重点都放在了这几个问题上,以为自己排除这些错误和警告的方法不对,导致虽然能打包成功但无法安装。折腾了好久也没有弄好。后来想了一下,签名包与调试包有两个不一样的地方,一是混淆,二是加了签名。所以决定先在debug包中用同样的混淆规则混淆代码看能不能安装,结果发现这样没问题,那说明并不是混淆的问题,那就只剩下签名了,签名会有什么问题呢?都是Android Studio自动完成的,人工的参与度太少了。硬着头皮再次 Generate Signed Apk… 仔细瞧了一下选项,注意到一个 Signature Versions ,这个选项很陌生,如下图:

之前是扫了一眼也不知道二者是什么意思,有什么区别,就惯性地选择了 V2(Full APK Signature),而且还以为这是个单选项,其实是可多选的。结果结果就悲剧了。这次因为特地留意了一下,就点旁边的链接signature help进去看了一下,下面是点进去的原文

APK Signature Scheme v2
Android 7.0 introduces APK Signature Scheme v2, a new app-signing scheme
that offers faster app install times and more protection against 
unauthorized alterations to APK files. By default, Android Studio 2.2
and the Android Plugin for Gradle 2.2 sign your app using both APK 
Signature Scheme v2 and the traditional signing scheme, which uses JAR 
signing.

Although we recommend applying APK Signature Scheme v2 to your app, 
this new scheme is not mandatory. If your app doesn't build properly
when using APK Signature Scheme v2, you can disable the new scheme.
The disabling process causes Android Studio 2.2 and the Android Plugin
for Gradle 2.2 to sign your app using only the traditional signing 
scheme. To sign with only the traditional scheme, open the module-level
build.gradle file, then add the line v2SigningEnabled false to your 
release signing configuration:

  android {
    ...
    defaultConfig { ... }
    signingConfigs {
      release {
        storeFile file("myreleasekey.keystore")
        storePassword "password"
        keyAlias "MyReleaseKey"
        keyPassword "password"
        v2SigningEnabled false
      }
    }
  }
Caution: If you sign your app using APK Signature Scheme v2 and make further changes
to the app, the app's signature is invalidated.
For this reason, use tools such as zipalign before signing your app
using APK Signature Scheme v2, not after.

For more information, read the Android Studio documents that describe
how to sign an app in Android Studio and how to configure the build 
file for signing apps using the Android Plugin for Gradle.

看完之后说实话也没觉得这跟我的安装失败有什么关系,不过此时已引起了我的高度注意,所以就在网上搜了一下,结果一看,还真是这里的问题。

大概的原因是:

v2是android7.0引入的一个签名机制,相比v1使得apk更安全及在安装时速度更快,但有可能会引起问题,具体可能会遇到什么问题并没有说,所以这个v2签名机制并不是强制性的,原文说如果不能正确构建则可以不用v2签名,只用v1签名。

网上的说法是:

1、只勾选v1签名并不会影响什么,但是在7.0上不会使用更安全的验证方式

2、只勾选V2签名,7.0以下会直接安装完显示未安装,7.0以上则使用了V2的方式验证

3、同时勾选V1和V2则所有机型都没问题

网上的说法没有在官方渠道上看到(或许是我没找到地方),但实际现象貌似就是这样的,我试了勾选v1、v2、v1+v2三种情况,v1和v1+v2的情况是可以在7.0以下机子上安装成功的,v2不行,7.0以上的机子没试过,因为我没有这么高级的货。。。

So,找到原因后,解决办法也就有了

  • 只勾选v1
  • 同时勾选v1和v2

参考链接:

https://stackoverflow.com/questions/42648499/difference-between-signature-versions-v1jar-signature-and-v2full-apk-signat

https://developer.android.com/about/versions/nougat/android-7.0#apk_signature_v2

https://blog.csdn.net/lvshuchangyin/article/details/62227286



由于水平有限,如果文中存在错误之处,请大家批评指正,欢迎大家一起来分享、探讨!

博客:http://blog.csdn.net/MingHuang2017

GitHub:https://github.com/MingHuang1024

Email: MingHuang1024@foxmail.com

微信:724360018

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 可能的原因有很多,以下是一些可能的解决方法: 1. 检查设备是否已启用“未知来源”的安装选项。在Android设备上,您需要在“设置”>“安全”>“未知来源”中启用此选项,以允许安装来自非Google Play商店的应用程序。 2. 检查您的APK文件是否已经损坏或不完整。您可以尝试重新下载APK文件或从其他来源获取APK文件。 3. 检查您的设备是否有足够的存储空间来安装应用程序。如果您的设备存储空间不足,您可能需要删除一些不必要的文件或应用程序。 4. 检查您的设备是否已经安装了与该应用程序冲突的其他应用程序。如果是这种情况,您可能需要卸载冲突的应用程序,然后重新尝试安装应用程序。 5. 尝试清除您的设备的缓存和数据。您可以在“设置”>“应用程序”>“应用程序管理器”中找到应用程序,并尝试清除其缓存和数据。 如果以上方法都无法解决问题,您可以尝试在Android开发者社区或相关论坛上寻求帮助。 ### 回答2: 在使用 Android Studio 安装 apk 文件时,有时会遇到安装失败的情况。这种情况可能会由多种因素引起,以下是一些可能的解决方案。 1、检查设备是否连接 安装失败可能是因为你的 Android 设备没有正确连接到电脑。你可以在 Android Studio 的 Tools 菜单中进入 Android Device Monitor,查看你的设备是否处于连接状态。如果没有连接,请重新连接设备并确保您的USB线缆正常。 2、卸载旧版本应用 安装同一个应用程序的不同版本时,可能会发生冲突从而导致安装失败。在这种情况下,你需要先卸载旧版本应用,之后再安装新版本。 3、检查应用程序权限 应用程序可能需要某些权限才能正常安装。在这种情况下,Android 系统可能会提示您某些权限需要开启。您可以在 Android 应用程序管理器中检查应用程序的权限设置,确保您已经授予所需权限以及允许该应用程序的安装。 4、清除缓存和数据 如果您的设备上已经安装过该应用程序,而且您正在尝试重新安装,那么缓存数据可能会导致安装失败。在这种情况下,您可以尝试清除应用程序的缓存和数据。您可以在应用程序管理器中打开应用程序,然后找到 "清除数据" 和 "清除缓存" 选项。 5、更新 Android Studio 和 Gradle 在一些情况下,Android Studio 或 Gradle 本身的问题可能导致安装失败。因此,您可以尝试更新软件到最新版本。 总之,以上是一些可能导致 Android Studio 安装失败的原因以及相应的解决方法。如果问题仍然存在,请考虑向 Android 开发者社区或这款软件的官方支持团队寻求帮助。 ### 回答3: 在使用Android Studio安装APK时,可能会出现安装失败的情况。这种情况的原因可能有多种,下面列出了一些可能的原因和解决方案。 1. 应用程序不受信任。 在安装APK程序时,如果安装包不是来自Google play或官方网站,系统会提示“应用程序不受信任”。这时,需要在手机或平板电脑的“安全设置”中打开“未知来源”选项。 2. 存储空间不足。 如果手机或平板电脑的存储空间不足,也可能会导致APK安装失败。解决这个问题的方法是释放一些存储空间,例如删除不常用的应用程序、照片等。 3. APK文件损坏。 有时,APK文件可能会损坏,导致安装失败。在这种情况下,可以重新下载APK文件并尝试重新安装。 4. 与系统版本不兼容。 APK文件可能不兼容当前系统版本,导致安装失败。解决这个问题的方法是找到与当前系统版本兼容的APK文件进行安装。 5. 安装权限不足。 在初次安装时,系统可能会提示“需要安装授权”,需要用户同意并授权安装。如果此步骤被跳过或没有进行授权,可能会导致APK安装失败。在这种情况下,可以在手机或平板电脑的“安全设置”中找到“授权管理”选项,并授权安装。 总之,APK安装失败的解决方法可能因为不同的原因而有所不同。因此,在解决APK安装失败的问题时,需要根据具体情况采取相应的措施,才能确保APK安装成功。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值