自己开发的App在华为荣耀系列手机上安装失败,“未包含任何证书”

时间:2024-03-28 21:34:41

自己开发的App在华为荣耀系列手机上安装失败,“未包含任何证书”

问题描述

自己使用Android Studio开发的App打包生成apk之后,在真机上安装时,显示安装错误,真机的型号是荣耀畅玩6,显示的错误信息时下图所示内容:
自己开发的App在华为荣耀系列手机上安装失败,“未包含任何证书”

问题解决方法

一开始也是百度了很多解决方法,但是没有找到解决办法,之后自己想到会不会是打包生成apk文件的时候,选择Signature有关。所以进行了测试,发现真是和这个有关。
之前打包生成apk文件时,选择的Signature是如下图所示:
自己开发的App在华为荣耀系列手机上安装失败,“未包含任何证书”
这样生成的apk在安装时会出现上面描述的问题,但是把上图中V1、V2都选中时,就不会出现安装失败的问题,下图所示:
自己开发的App在华为荣耀系列手机上安装失败,“未包含任何证书”
这样就把问题解决了。。。所以写篇博客记录一下采坑历程。

内容扩展

百度了一下V1、V2的解释:
V1:应该是通过ZIP条目进行验证,这样APK 签署后可进行许多修改 - 可以移动甚至重新压缩文件。
V2:验证压缩文件的所有字节,而不是单个 ZIP 条目,因此,在签名后无法再更改(包括 zipalign)。正因如此,现在在编译过程中,我们将压缩、调整和签署合并成一步完成。好处显而易见,更安全而且新的签名可缩短在设备上进行验证的时间(不需要费时地解压缩然后验证),从而加快应用安装速度。

只勾选v1签名并不会影响什么,但是在7.0上不会使用更安全的验证方式
只勾选V2签名7.0以下会直接安装完显示未安装,7.0以上则使用了V2的方式验证
同时勾选V1和V2则所有机型都没问题

想看相关的详细解释请参考下面的文章:
Android Studio 打包时 Signature Version V1 V2
Android Studio 打包时 Signature Version 选择 V1 V2 说明