配置签名设置
简单实现配置化:
方式1:
把签名信息(主要是密码)写在gradle中是不安全的,我们可以把这些签名信息添加到gradle.properties:
RELEASE_KEY_PASSWORD = 123456
RELEASE_KEY_ALIAS = releaseKey
RELEASE_STORE_PASSWORD = 123456
RELEASE_STORE_FILE = key/releaseKey.jks
然后在build.gradle中引用即可:
android {
signingConfigs {
config_release {
storeFile file(RELEASE_STORE_FILE)
keyAlias RELEASE_KEY_ALIAS
storePassword RELEASE_KEY_PASSWORD
keyPassword RELEASE_STORE_PASSWORD
}
}
}
我们也可以将签名信息添加到local.properties中,然后在build.gradle中读取.
方式2 :
signingConfigs {
debug {
v1SigningEnabled true
v2SigningEnabled true
//获取keystore 里面相关信息
def keystoreProFile = rootProject.file("keystore.properties")
def keystoreProes = new Properties()
keystoreProes.load(new FileInputStream(keystoreProFile))
keyAlias keystoreProes["keyAlias"]
keyPassword keystoreProes["storePassword"]
storeFile file(keystoreProes['keystore'])
storePassword keystoreProes["keyPassword"]
}
release {
v1SigningEnabled true
v2SigningEnabled true
//获取keystore 里面相关信息
def keystoreProFile = rootProject.file("keystore.properties")
def keystoreProes = new Properties()
keystoreProes.load(new FileInputStream(keystoreProFile))
keyAlias keystoreProes["keyAlias"]
keyPassword keystoreProes["storePassword"]
storeFile file(keystoreProes['keystore'])
storePassword keystoreProes["keyPassword"]
}
}
创建keystore.properties 文件,配置相关信息
keystore=aaa.jks
storePassword=aa
keyAlias=aaa
keyPassword=aa
除非您明确定义发布 build 的签名配置,否则 Gradle 不会为该 build 的 APK 签名。您可以轻松创建发布密钥并使用 Android Studio 为“release”构建类型签名。
如需使用 Gradle 构建配置为“release”构建类型手动进行签名配置,请执行以下操作:
创建一个密钥库。密钥库是一个包含一组私钥的二进制文件。您必须将密钥库保存在安全可靠的地方。
创建一个私钥。私钥代表将通过应用识别的实体,如个人或公司。
将签名配置添加到模块级 build.gradle 文件中:
...
android {
...
defaultConfig {...}
signingConfigs {
release {
storeFile file("myreleasekey.keystore")
storePassword "password"
keyAlias "MyReleaseKey"
keyPassword "password"
}
}
buildTypes {
release {
...
signingConfig signingConfigs.release
}
}
}
如需生成已签名的 APK,请从菜单栏中依次选择 Build > Generate Signed APK。app/build/apk/app-release.apk 中的软件包现已使用发布密钥进行签名。
注意:在构建文件中添加发布密钥和密钥库的密码并不是一种好的安全做法。作为替代方案,您可以将构建文件配置为从环境变量获取这些密码,或让构建流程提示您输入这些密码。
如需从环境变量获取这些密码,请添加以下代码:
storePassword System.getenv("KSTOREPWD")
keyPassword System.getenv("KEYPWD")
如需让构建流程在您要从命令行调用 build 时提示您输入这些密码,请添加以下代码:
storePassword System.console().readLine("\nKeystore password: ")
keyPassword System.console().readLine("\nKey password: ")
完成此流程后,您可以分发您的应用并在 Google Play 上发布它。
警告:请将密钥库和私钥保存在安全可靠的地方,并确保您为其创建了安全的备份。如果您将应用发布到 Google Play,随后丢失了为应用签名的密钥,那么您将无法发布任何应用更新,因为您必须始终使用相同的密钥为应用的所有版本签名。