作者:Eliza | 来源:互联网 | 2023-02-09 18:01
如何解决《签名版本之间的区别-V1(JarSignature)和V2(FullAPKSignature)在AndroidStudio中生成签名的apk时?》经验,为你挑选了5个好方法。
请至少选择一个要在Android Studio 2.3中使用的签名版本
现在,在Android Studio中生成已签名的apk时,它会在签名的apk生成过程的最后一步中显示两个选项(CheckBox),即1. V1(Jar Signature)
和2.`V2(Full APK Signature)'作为签名版本.
那么,在新的Android Studio更新中,这些V1(Jar Signature)和V2(Full APK Signature)之间有什么区别?
我应该使用哪个(或两者)来为Play商店发布的apk进行签名?
此外,当我使用第二个选项时,我在安装apk时遇到错误安装Parse Failed No Certificate.
1> Booger..:
这是Android 7.0中引入的一种新签名机制,其附加功能旨在使APK签名更加安全.
这不是强制性的.如果可能,您应该检查这些复选框的两个,但如果新的V2签名机制给您带来问题,您可以省略它.
因此,如果遇到问题,您可以不选中V2,但如果可能的话应该检查它.
2> pRaNaY..:
我应该使用(或两者)签署apk进行游戏商店发布吗?
答案是肯定的.
根据https://source.android.com/security/apksigning/v2.html#verification
:
在Android 7.0中,可以根据APK签名方案v2(v2方案)或JAR签名(v1方案)验证APK.较旧的平台忽略v2签名并仅验证v1签名.
我尝试使用检查V2(Full Apk签名)选项生成构建.然后,当我尝试在7.0以下的设备中安装发布版本时,我无法在设备中安装内置版本.
之后我尝试通过检查版本复选框和生成发布版本来构建.然后能够安装构建.
3> Regis_AG..:
这里写的是"默认情况下,Android Studio 2.2和Gradle 2.2的Android插件使用APK签名方案v2和使用JAR签名的传统签名方案签署您的应用程序."
由于似乎这些新的复选框出现在Android 2.3中,我明白我以前的Android Studio版本(至少2.2版)都签了两个签名.所以,为了像以前一样继续,我认为最好同时检查两个复选框.
编辑2017年3月31日:提交了几个带签名的应用程序=>没问题:)
4> zonda..:
我认为这代表了一个很好的答案.
APK签名方案v2验证
找到APK Signing Block
并验证:
两个大小的字段APK Signing Block
包含相同的值.
ZIP Central Directory
紧接着是ZIP End of Central Directory
记录.
ZIP End of Central Directory
没有更多的数据.
找到第一个APK Signature Scheme v2 Block
内部APK Signing Block
.如果v2阻止(如果存在),请继续执行步骤3.否则,回退到使用v1方案验证APK.
对于每个签名者APK Signature Scheme v2 Block
:
从签名中选择最强支持的签名算法ID.强度排序取决于每个实现/平台版本.
使用公钥验证签名数据签名的相应签名.(解析签名数据现在是安全的.)
验证摘要和签名中的签名算法ID的有序列表是否相同.(这是为了防止签名剥离/添加.)
使用与签名算法使用的摘要算法相同的摘要算法来计算APK内容的摘要.
验证计算的摘要是否与摘要中的相应摘要相同.
验证SubjectPublicKeyInfo
第一个证书证书是否与公钥相同.
如果找到至少一个签名者并且每个找到的签名者的步骤3成功,则验证成功.
注意:如果在步骤3或4中发生故障,则不得使用v1方案验证APK.
JAR签名APK验证(v1方案)
JAR签名的APK是标准的签名JAR,它必须包含所列条目,META-INF/MANIFEST.MF
并且所有条目必须由同一组签名者签名.其完整性经过验证如下:
每个签名者由一个META-INF/.SF
和META-INF/.(RSA|DSA|EC)
JAR条目表示.
.(RSA|DSA|EC)
是一个PKCS #7 CMS ContentInfo
带有SignedData结构,其签名是通过.SF
文件验证的.
.SF
file包含META-INF/MANIFEST.MF
每个部分的摘要和摘要的整个文件摘要META-INF/MANIFEST.MF
.MANIFEST.MF
验证了整个文件摘要.如果失败,MANIFEST.MF
则会验证每个部分的摘要.
META-INF/MANIFEST.MF
对于每个受完整性保护的JAR条目,包含相应命名的部分,其中包含条目未压缩内容的摘要.所有这些摘要都经过验证.
如果APK包含未在MANIFEST.MF
JAR签名中列出且不属于JAR签名的JAR条目,则APK验证将失败.因此,保护链是.(RSA|DSA|EC)
→ .SF
→ MANIFEST.MF
每个完整性保护的JAR进入→内容.
5> Shirish Herw..:
根据此链接:签名帮助
APK签名方案v2提供:
更快的应用安装时间
提供更多保护,防止未经授权更改APK文件。
Android 7.0引入了APK签名方案v2,这是一种新的应用程序签名方案,可提供更快的应用程序安装时间,并提供更多保护,防止未经授权擅自更改APK文件。默认情况下,Android Studio 2.2和适用于Gradle 2.2的Android插件使用 APK签名方案v2和使用JAR签名的传统签名方案对您的应用进行签名。
这是推荐使用APK签名方案v2的,但不是强制性的。
尽管我们建议将APK签名方案v2应用于您的应用,但这不是强制性的新方案。如果使用APK签名方案v2时您的应用无法正确构建,则可以禁用新方案。