----《Android Gradle 權(quán)威指南》學(xué)習(xí)筆記
總目錄:Gradle 學(xué)習(xí)系列 -- 目錄
上一篇:Android Gradle 插件 -- Android Gradle 工程示例
下一篇:自定義 Android Gradle -- 隱藏簽名文件信息
相關(guān)文章:Android 生成和使用簽名文件
1 配置簽名信息
1.1 一個(gè) APP 只有簽名之后才能被發(fā)布、安裝和使用,簽名是保護(hù) APP 的方式,標(biāo)記該 APP 的唯一性。如果 APP 被惡意篡改,簽名就不一樣了,就無法升級(jí)安裝,在一定程度上保護(hù)了 APP。
1.2 要想對(duì) APP 進(jìn)行簽名,先得有一個(gè)簽名證書文件,這個(gè)證書文件被開發(fā)者持有,這里不做詳述。
1.3 一般 APP 有 debug 和 release 兩種模式,在開發(fā)調(diào)試時(shí)使用 debug 模式,在發(fā)布的時(shí)候用 release 模式;可以針對(duì)兩種模式采用不同的簽名方式。一般 debug 模式的時(shí)候,Android SDK 已經(jīng)體用了一個(gè)默認(rèn)的 debug 簽名證書,可以直接使用;發(fā)布的時(shí)候,使用 release 模式時(shí)就要配置私有的簽名證書。
1.4 對(duì)于簽名信息的配置,Android Gradle 提供了非常簡(jiǎn)便的方式,可以很容易的配置一個(gè)簽名信息,如下所示:
android {
compileSdk 31
....
signingConfigs {
release {
storeFile file("myReleaseKey.keystore")
storePassword "pwd1"
keyAlias "myReleaseKey"
keyPassword "pwd2"
}
debug{
storeFile file("myDebugKey.keystore")
storePassword "pwd1"
keyAlias "myDebugKey"
keyPassword "pwd2"
}
}
...
}
上面的代碼中,配置了 release 和 debug 的配置。默認(rèn)情況下,debug 模式的簽名已經(jīng)配置好了,使用的就是 Android SDK 自動(dòng)生成的 debug 證書,一般位于 $HOME/.android/debug.keystore,其 key 和密碼都是已知的,一般情況下不需要單獨(dú)配置 debug 模式的簽名信息。如下所示:
android {
compileSdk 31
....
signingConfigs {
release {
storeFile file("myReleaseKey.keystore")
storePassword "pwd1"
keyAlias "myReleaseKey"
keyPassword "pwd2"
}
}
...
}
1.5 Android Gradle 提供了 signingConfigs{} 配置塊來生成多個(gè)簽名配置信息。 signingConfigs 是 Android 的一個(gè)方法,接受一個(gè)域?qū)ο笞鳛閰?shù)??梢耘渲玫脑厝缦拢?br>
storeFile: 簽名證書文件
storePassword:簽名證書文件的密碼
storeType:簽名證書的類型
keyAlias:簽名證書中密鑰別名
keyPassword:簽名證書中該密鑰的密碼
2 使用配置好的簽名信息
上面配置好了簽名信息,使用簽名信息有兩種方式:在 defaultConfig{} 中使用 和 在 buildTypes{} 中使用。
2.1 在 defaultConfig{} 中使用簽名信息
在 defaultConfig{} 中使用簽名信息時(shí),需要將 signingConfigs 代碼塊寫在 defaultConfig 代碼塊的上方,這樣在 defaultConfig 中才能使用到。代碼如下:
defaultConfig {
applicationId "com.cakes.testmodule"
...
signingConfig signingConfigs.release
}
2.2 在 buildTypes{} 中使用簽名信息
除了默認(rèn)簽名配置外,也可以對(duì)構(gòu)建的類型分別配置簽名信息,即在 buildTypes 代碼塊中配置簽名信息,代碼如下:
buildTypes {
release {
signingConfig signingConfigs.release
...
}
}