1.在项目的根目录下创建一个名为 keystore.properties 的文件。此文件应当包含您的签署信息,如下所示:
storePassword=myStorePassword
keyPassword=mykeyPassword
keyAlias=myKeyAlias
storeFile=myStoreFileLocation
2.在模块的 build.gradle 文件中,于 android {} 块的前面添加用于加载 keystore.properties 文件的代码。
…
// Create a variable called keystorePropertiesFile, and initialize it to your
// keystore.properties file, in the rootProject folder.
def keystorePropertiesFile = rootProject.file(“keystore.properties”)
// Initialize a new Properties() object called keystoreProperties.
def keystoreProperties = new Properties()
// Load your keystore.properties file into the keystoreProperties object.
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
android {
…
}
3.您可以使用语法 keystoreProperties[‘propertyName’] 引用存储在 keystoreProperties 中的属性。修改模块 build.gradle 文件的 signingConfigs 块,以便使用此语法引用存储在 keystoreProperties 中的签署信息。
android {
signingConfigs {
config {
keyAlias keystoreProperties[‘keyAlias’]
keyPassword keystoreProperties[‘keyPassword’]
storeFile file(keystoreProperties[‘storeFile’])
storePassword keystoreProperties[‘storePassword’]
}
}
…
}
要通过环境变量获取这些密码:
storePassword System.getenv(“KSTOREPWD”)
keyPassword System.getenv(“KEYPWD”)
要让构建流程在您要从命令行调用此构建时提示您输入这些密码:
storePassword System.console().readLine(“\nKeystore password: “)
keyPassword System.console().readLine(“\nKey password: “)
构建未签署 APK 并手动签署它
打开命令行,然后导航至项目的根目录 - 在 Android Studio 中,选择 View > Tool Windows > Terminal。然后调用 assembleRelease 任务:
gradlew assembleRelease
这将在 project_name/module_name/build/outputs/apk/ 中创建一个名为 module_name-unsigned.apk 的 APK。此 APK 此时处于未签署且未对齐的状态,使用您的私钥签署后才能安装。
使用 zipalign 对齐未签署的 APK:
zipalign -v -p 4 my-app-unsigned.apk my-app-unsigned-aligned.apk
zipalign 可以确保所有未压缩的数据的开头均相对于文件开头部分执行特定的字节对齐,这样可减少应用消耗的 RAM 量。
通过 apksigner 使用您的私钥签署 APK:
apksigner sign –ks my-release-key.jks –out my-app-release.apk my-app-unsigned-aligned.apk
在本例中,在使用单密钥库文件 my-release-key.jks 中存储的私钥和证书签署 APK 后,将以 my-app-release.apk 的形式输出签署的 APK。
apksigner 工具支持其他签署选项,包括使用单独的私钥和证书文件签署 APK 文件和使用多个签署人签署 APK。有关更多详情,请参阅 apksigner 参考。
注:要使用 apksigner 工具,您必须已安装 Android SDK Build Tool 的修订版 24.0.3 或更高版本。您可以使用 SDK 管理器更新此软件包。
验证您的 APK 是否已签署:
apksigner verify my-app-release.apk