- 通常在gradle里配置apk签名信息方式如下:
andorid{
signingConfigs {
release {
storeFile file("smart_keystore.jks")
storePassword "jjhd_@"
keyAlias "smart"
keyPassword "jjhd123"
}
}
buildTypes {
debug {
signingConfig signingConfigs.release
}
release {
signingConfig signingConfigs.release
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro', 'proguard.cfg'
}
}
......
}
- 但是这种方法,相当于把签名信息暴露在了配置文件里。可以用另一种方法把这些信息保护起来。
步骤1: 首先在工程目录下创建一个 signinfo.properties 文件,(当然,名字可以随便取。。)
添加属性:
release.keyPassword=jjhd123
release.storePassword=jjhd_@
其它属性如keyAlias,签名文件名等也可以写在这个文件里,这里只示范两个密码。
步骤2:在app的build.gradle文件里添加两个task
task getReleasePassword << {
def releaseKeyPassword = ''
def releaseStorePassword = ''
if(rootProject.file('signinfo.properties').exists()){
def properties = new Properties();
properties.load(rootProject.file('signinfo.properties').newDataInputStream())
releaseKeyPassword = properties.getProperty('release.keyPassword')
releaseStorePassword = properties.getProperty('release.storePassword')
}
android.signingConfigs.release.keyPassword = releaseKeyPassword
android.signingConfigs.release.storePassword = releaseStorePassword
}
tasks.whenTaskAdded{ theTask ->
//这里可以做过滤,只对某些渠道或类型的包签名
// if(theTask.name.contains("Release"))
theTask.dependsOn "getReleasePassword"
}
至于签名配置,则可以不填了
signingConfigs {
release {
storeFile file("smart_keystore.jks")
storePassword ""
keyAlias "smart"
keyPassword ""
}
}
步骤3:将signinfo.properties文件添加到.gitignore文件里。这样使用git推送工程的时候,就不会把signinfo.properties文件推送到云服务器上。
*.iml
.gradle
/local.properties
/signinfo.properties
- 还有一种方法,比2简单,即把签名信息放到gradle.properties文件里
APK_SIGN_KEY_PASSWORD=jjhd123
APK_SIGN_STORE_PASSWORD=jjhd_@
在gradle.properties里声明的属性,可以直接在build.gradle文件里使用,如下
signingConfigs {
release {
keyAlias 'smart'
keyPassword APK_SIGN_KEY_PASSWORD
storeFile file('smart_keystore.jks')
storePassword APK_SIGN_STORE_PASSWORD
}
}
但是gradle.properties要不要ignore掉呢?如果可以ignore,建议使用这种方法,毕竟比方法2简单得多。如果不能ignore,则建议用方法2。