自定义构建 - 签名配置
3.4.3 签名配置
要对一个应用签名,要求如下:
- 一个 keystore
- 一个 keystore 的密码
- 一个 key 的别名
- 一个 key 的密码
- 存储类型
位置、key 别名、key 密码以及存储类型一起组成了签名配置( SigningConfig 类型)
默认情况下, 已经有了一个 debug 的签名配置,它使用了 debug keystore,该 keystore 有一个已知的密码和默认的带有已知密码的 key。
debug keystore 位于$HOME/.android/debug.keystore,如果没有会被创建。
debug Build Type 被设置为自动使用 debug 签名配置。
你也可以创建其他的签名配置或者自定义内置的配置。可以通过 signingConfigs DSL容器实现。
android {
signingConfigs {
debug {
storeFile file("debug.keystore")
}
myConfig {ss
storeFile file("other.keystore")
storePassword "android"
keyAlias "androiddebugkey"
keyPassword "android"
}
}
buildTypes {
foo {
debuggable true
jniDebuggable true
signingConfig signingConfigs.myConfig
}
}
}
以上片段会把 debug keystore 的路径改为工程的根目录。这会自动的影响任何用到它的 Build Types ,在这里影响到的是 debug Build Type 。
以前片段也创建了一个新的签名配置,并且被一个新的 Build Type 使用。
注意: 只有默认路径下的 debug keystores 才会被自动创建。如果改变了 debug keystore 的路径将不会在需要的时候创建。创建一个使用不同名字的 SigningConfig ,但是用的是默认的 debug keystore 路径的话是会被自动创建的。也就是说,会不会被自动创建,和 keystore 的路径有关,和配置的名字无关。
说明: 通常情况下,会使用工程根目录的相对路径作为 keystores 的路径,但有时候也会用绝对路径,虽然这并不推荐(被自动创建的 debug keystore 除外)。
注意:如果已经你将这些文件放到版本控制中,你可能不想把密码存储在文件中。Stack Overflow 上有个帖子介绍可以从控制台或者环境变量中获取这些密码等信息。
http://stackoverflow.com/questions/18328730/how-to-create-a-release-signed-apk-file-using-gradle
我们以后更新这个指南的时候会添加更多的信息。