最近,当我打算将我的APK签名发布到Play商店时,我得到了这个新选项:
按“签名帮助”链接,打开此网页: https://developer.android.com/about/versions/nougat/android-7.0.html#apk_signature_v2
搜索更多,我发现了这个:
事实证明,这是Android 7.x的新验证,可以帮助使APK更安全,但也有点小。
我尝试使用这个新功能,就像在博客上写的那样,它确实使APK有点小。此外,正如它的编写,它仅适用于Android 7.x及更高版本(但你可以在同一个APK上使用这两种方法实际签名,让你也可以在旧版本的Android上安装该应用程序。)
我不明白使用新的签名机制是否安全,以及他们对文档的确切警告。
至少有一条警告我已经读过,我认为大多数开发商都不需要特别照顾:
警告:如果您使用APK Signature Scheme v2和make进行应用签名 进一步更改应用程序,应用程序的签名无效。对于 这个原因,在使用之前使用诸如zipalign之类的工具 APK签名方案v2,而不是之后。
我想我可以忽略这个警告,因为我只是让IDE本身使用默认的构建行为来构建APK。
我尝试使用所有3种方式对应用进行签名:
似乎单独的v2不能安装在7.x之前版本的Android上,但其余的可以,而且似乎v2小于v1,而v1和v2实际上比v1小一点。
从旧签名切换到新签名是否安全(启用两个签名)?
用户是否会遇到升级问题?用户从v1升级到v2,或从v2(或v1& v2)升级到v1(如果出现问题) - 是否有任何问题?
我应该知道任何警告吗?我是对的,我可以忽略我提到的警告吗?
除了更好的安全性之外,使用v1& v2(一起)提供的签名是什么,我在v1上没有?
我的猜测是,只有Android 7,我们才能使用v2,这提供了一种拥有更小的APK的方法。这是真的吗?
答案 0 :(得分:11)
- 从旧签名切换到新签名是否安全(当然是启用签名)?
醇>
是。只要您在签名后不修改APK,您就会很好。
- 用户是否会有升级问题?用户从v1升级到v2,或从v2(或v1& v2)升级到v1(如果出现问题) - 是否有任何问题?
醇>
没问题。一旦Android Package Manager验证APK签名(使用v1或v2方案),它就会提取签名证书,然后以任何进一步的逻辑为基础(例如,此APK是否允许用作旧版本的更新)在签署证书上。因此,只要您的APK使用相同的签名证书进行签名,您就应该做得很好。
- 我应该知道任何警告吗?我是对的,我可以忽略我提到的警告吗?
醇>
如果您只使用Gradle / Android Studio的Android插件来构建&签署你的APK。对于使用自定义构建管道的开发人员,可能会发出警告,这些管道可能会在签名后修改APK。
我不知道有任何其他警告。
- 除了更好的安全性之外,使用v1& v2(一起)提供的签名,我在v1上没有提供什么?
醇>
v2签名验证速度更快。这意味着v2签名的APK会在Android Nougat(Android 7.0,API Level 24)及更新版本上更快地安装/更新。
- 我的猜测是,只有Android 7,我们才能使用v2,这提供了一种拥有更小的APK的方法。这是真的吗?
醇>
正确。但是,APK大小节省从来都不是APK Signature Scheme v2的目标。保存只是一个与APK中文件数量成比例的小数字,而不是它们的大小。您节省的是META-INF/MANIFEST.MF
和META-INF/*.SF
中的每个文件摘要。 META-INF/*.(RSA|DSA|EC)
被APK中其他地方类似大小的APK签名方案v2 Block取代。