Android 7.0 引入一项新的应用签名方案 APK Signature Scheme v2,它能提供更快的应用安装时间和更多针对未授权 APK 文件更改的保护。在默认情况下,Android Studio 2.2 和 Android Plugin for Gradle 2.2 会使用 APK Signature Scheme v2 和传统签名方案来签署您的应用。
虽然我们建议您对您的应用采用 APK Signature Scheme v2,但这项新方案并非强制性的。如果您的应用在使用 APK Signature Scheme v2 时不能正确开发,您可以停用这项新方案。禁用过程会导致 Android Studio 2.2 和 Android Plugin for Gradle 2.2 仅使用传统签名方案来签署您的应用。要仅用传统方案签署,打开模块级 build.gradle
文件,然后将行 v2SigningEnabled false
添加到您的版本签名配置中:
android { ... defaultConfig { ... } signingConfigs { release { storeFile file("myreleasekey.keystore") storePassword "password" keyAlias "MyReleaseKey" keyPassword "password" v2SigningEnabled false } } }
注意:如果您使用 APK Signature Scheme v2 签署您的应用,并对应用进行了进一步更改,则应用的签名将无效。出于这个原因,请在使用 APK Signature Scheme v2 签署您的应用之前、而非之后使用 zipalign
等工具。
证书和密钥库
公钥证书(也称为数字证书或身份证书)包含公钥/私钥对的公钥,以及可以标识密钥所有者的一些其他元数据(例如名称和位置)。证书的所有者持有对应的私钥。
在您签署 APK 时,签署工具会将公钥证书附加到 APK。公钥证书充当“指纹”,用于将 APK 唯一关联到您及您的对应私钥。这有助于 Android 确保您 APK 的任何将来更新都是原版更新并来自原始作者。
密钥库是一种包含一个或多个私钥的二进制文件。在您使用 Android Studio 签署要发布的 APK 时,您可以选择生成新的密钥库和私钥,或者使用您已经拥有的密钥库和私钥。您应当为密钥库选择一个强密码,并为密钥库中存储的每个私钥选择一个单独的强密码。您必须将密钥库存放在安全可靠的地方。请参阅下面的保护您的私钥部分。
您必须在应用的整个生命周期内使用相同的证书,以便用户能够以应用更新的形式安装新版本。要详细了解为所有应用在其整个生命周期内使用相同证书的好处,请参阅下面的签署注意事项。
签署您的调试构建
从 IDE 中运行或调试您的项目时,Android Studio 将自动使用通过 Android SDK 工具生成的调试证书签署您的 APK。当您在 Android Studio 中首次运行或调试项目时,IDE 将自动在 $HOME/.android/debug.keystore
中创建调试密钥库和证书,并设置密钥库和密钥密码。
由于调试证书通过构建工具创建并且在设计上不安全,大多数应用商店(包括 Google Play 商店)都不接受使用调试证书签署要发布的 APK。
Android Studio 会自动将您的调试签署信息存储在签署配置中,因此您不必在每次调试时都输入此信息。签署配置是一种包含签署 APK 所需全部必要信息的对象,这些信息包括密钥库位置、密钥库密码、密钥名称和密钥密码。您无法直接编辑调试签署配置,不过可以配置如何签署您的发布构建。
如需了解有关如何针对调试构建和运行应用的详细信息,请参阅