如果您愿意,可以指定自己的调试密钥库。该解决方案还使您能够将密钥存储在项目目录之外,并在签名过程中享受自动化。是的,您可以转到File -> Project Structure 并在Signing 选项卡中分配签名密钥库和密码,但这会将纯文本条目放入您的 gradle.build 文件中,这意味着您的秘密可能会被泄露(尤其是在存储库提交中)。借助此解决方案,您可以控制使用自己的密钥库,并在调试和发布构建期间实现自动化。
1) 创建一个 gradle.properties(如果您还没有)。
此文件的位置取决于您的操作系统:
/home/<username>/.gradle/ (Linux)
/Users/<username>/.gradle/ (Mac)
C:\Users\<username>\.gradle (Windows)
2) 添加一个指向yourprojectname.properties 文件的条目。
(Windows 示例)
yourprojectname.properties=c:\\Users\\<username>\\signing\\yourprojectname.properties
3) 在步骤 2 中指定的位置创建 yourprojectname.properties 文件,并提供以下信息:
keystore=C:\\path\\to\\keystore\\yourapps.keystore
keystore.password=your_secret_password
4) 修改您的gradle.build 文件以指向yourprojectname.properties 文件以使用变量。
if(project.hasProperty("yourprojectname.properties")
&& new File(project.property("yourprojectname.properties")).exists()) {
Properties props = new Properties()
props.load(new FileInputStream(file(project.property("yourprojectname.properties"))))
android {
signingConfigs {
release {
keyAlias 'release'
keyPassword props['keystore.password']
storeFile file(props['keystore'])
storePassword props['keystore.password']
}
debug {
keyAlias 'debug'
keyPassword props['keystore.password']
storeFile file(props['keystore'])
storePassword props['keystore.password']
}
}
compileSdkVersion 19
buildToolsVersion "20.0.0"
defaultConfig {
applicationId "your.project.app"
minSdkVersion 16
targetSdkVersion 17
}
buildTypes {
release {
}
}
}
}
dependencies {
...
}
5) 享受吧! 现在您的所有密钥都将位于目录的根目录之外,但您仍然可以享受每次构建自动化的乐趣。
如果您在 gradle.build 文件中收到有关“props”变量的错误,那是因为您没有在第一个 if 条件中执行“android {}”块,其中分配了 props 变量,所以只需将整个 android{ ... } 部分移动到分配 props 变量的条件,然后再试一次。
我根据here 和here 找到的信息拼凑了这些步骤。