请至少选择一个要在Android Studio 2.3中使用的签名版本
现在,在Android Studio中生成已签名的apk时,它显示两个选项(CheckBox),即1. V1(Jar Signature)
和2.“V2(完整APK签名)”,最后为签名版本签名apk生成过程的步骤。
那么,在新的Android Studio更新中,这些 V1(Jar Signature)和 V2(Full APK Signature)之间有什么区别?
我应该使用哪个(或两者兼而有之)来签署apk以进行游戏商店发布?
当我使用第二个选项时,我在安装apk时遇到错误安装解析失败无证书。
答案 0 :(得分:193)
这是Android 7.0中引入的一种新签名机制,其附加功能旨在使APK签名更加安全。
不是强制性的。如果可能,您应该检查这些复选框的两个,但如果新的V2签名机制给您带来问题,您可以省略它。
因此,如果您遇到问题,可以不选中V2,但如果可能,应该检查它。
答案 1 :(得分:35)
我应该使用(或两者)对apk进行Play商店发布吗? 答案是是。
根据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 设备下面安装发布版本时,我无法在设备中安装内置版。
之后我尝试通过检查版本复选框和生成版本构建来构建。然后就可以安装build。
答案 2 :(得分:21)
编写here“默认情况下,Android Studio 2.2和Gradle 2.2的Android插件使用APK签名方案v2和使用JAR签名的传统签名方案签署您的应用程序。”
由于似乎这些新的复选框出现在Android 2.3中,我明白我以前的Android Studio版本(至少2.2版)都签了两个签名。因此,为了像以前一样继续,我认为最好同时检查两个复选框。
编辑2017年3月31日:提交了多个具有签名=>的应用。没问题:)
答案 3 :(得分:5)
我认为this代表了一个很好的答案。
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
中的每位签名者:
SubjectPublicKeyInfo
是否与公钥相同。注意:如果在步骤3或4中发生故障,则不得使用v1方案验证APK。
JAR签名的APK验证(v1方案)
JAR签名的APK是标准的签名JAR,它必须包含META-INF/MANIFEST.MF
中列出的条目,并且所有条目必须由同一组签名者签名。其完整性验证如下:
META-INF/<signer>.SF
和META-INF/<signer>.(RSA|DSA|EC)
JAR条目表示。<signer>.(RSA|DSA|EC)
是带有SignedData结构的PKCS #7 CMS ContentInfo
,其签名通过<signer>.SF
文件进行验证。<signer>.SF
文件包含META-INF/MANIFEST.MF
的完整文件摘要和META-INF/MANIFEST.MF
的每个部分的摘要。验证了MANIFEST.MF
的整个文件摘要。如果失败,则会验证每个MANIFEST.MF
部分的摘要。META-INF/MANIFEST.MF
包含一个相应命名的部分,其中包含条目未压缩内容的摘要。所有这些摘要都经过验证。MANIFEST.MF
中列出且不属于JAR签名的JAR条目,则<signer>.(RSA|DSA|EC)
→<signer>.SF
→MANIFEST.MF
→每个受完整性保护的JAR条目的内容。答案 4 :(得分:3)
根据此链接:signature help
APK Signature Scheme v2提供:
Android 7.0引入了APK Signature Scheme v2,一个新的应用程序签名 提供更快的应用安装时间和更多保护的方案 防止对APK文件的未经授权的更改。默认情况下,Android Studio 2.2和用于Gradle 2.2的 Android插件使用标记您的应用 两者 APK签名方案v2和传统的签名方案,其中 使用JAR签名。
推荐使用APK签名方案 v2 ,但不是强制性的。
虽然我们建议将APK Signature Scheme v2应用到您的应用中, 这个新计划不是强制性的。如果您的应用无法正常构建 使用APK签名方案v2时,您可以禁用新方案。