Android Studio是否会签署调试版本的构建?如果是的话,它使用哪个密钥库进行签名?
Android Studio是否会签署调试版本的构建?如果是的话,它使用哪个密钥库进行签名?
位于同一位置:~/.android/debug.keystore
如果您使用的是Windows系统,那么该文件通常位于以下位置:
C:\User\YourUser\.android\debug.keystore
文件-> 项目结构
,并在签名
选项卡中分配签名密钥库和密码,但这会将明文条目放入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”变量的错误,则是因为您没有执行“android {}”块内部的第一个if
条件,在该条件下分配了props
变量,因此只需将整个android{...}部分移入分配props变量的条件中,然后再试一次。
Android Studio的debug.keystore文件路径取决于环境变量ANDROID_SDK_HOME。
如果定义了ANDROID_SDK_HOME,则该文件将放置在SDK的名为.android的子文件夹中。
当未定义时,密钥库将放置在用户主目录路径下的同一个子文件夹中:
- 在Windows上为%HOMEPATH%\.android\
- 在Linux上为$HOME/.android/