Android 在不公开密钥库密码的情况下签署APK
示例
您可以build.gradle使用以下属性定义签名配置以对文件中的apk进行签名:
storeFile :密钥库文件
storePassword:密钥库密码
keyAlias:关键别名
keyPassword:密钥别名密码
在许多情况下,您可能需要避免build.gradle文件中出现此类信息。
方法A:使用keystore.properties文件配置发布签名
可以配置您的应用程序,build.gradle以便它将从的属性文件中读取您的签名配置信息keystore.properties。
这样设置签名是有益的,因为:
您的签名配置信息与build.gradle文件分开
您无需在签名过程中进行干预即可为密钥库文件提供密码
您可以轻松地keystore.properties从版本控制中排除文件
首先,keystore.properties在项目的根目录中创建一个名为的文件,其内容如下(用您自己的值替换值):
storeFile=keystore.jksstorePassword=storePassword
keyAlias=keyAlias
keyPassword=keyPassword
现在,在您应用的build.gradle文件中,signingConfigs按如下所示设置该块:
android {...
signingConfigs {
release {
def propsFile = rootProject.file('keystore.properties')
if (propsFile.exists()) {
def props = new Properties()
props.load(new FileInputStream(propsFile))
storeFile = file(props['storeFile'])
storePassword = props['storePassword']
keyAlias = props['keyAlias']
keyPassword = props['keyPassword']
}
}
}
}
这实际上就是所有内容,但不要忘记将您的密钥库文件和keystore.properties文件都从版本控制中排除。
需要注意的几件事:
文件中storeFile指定的路径keystore.properties应相对于您应用的build.gradle文件。本示例假定密钥库文件与应用程序build.gradle文件位于同一目录中。
本示例的keystore.properties文件位于项目的根目录中。如果将其放在其他位置,请确保将值更改为rootProject.file('keystore.properties')相对于项目根目录的位置。
方法B:通过使用环境变量
没有属性文件也可以实现相同的目的,这使得密码更难找到:
android {signingConfigs {
release {
storeFile file('/your/keystore/location/key')
keyAlias 'your_alias'
String ps = System.getenv("ps")
if (ps == null) {
throw new GradleException('missing ps env variable')
}
keyPassword ps
storePassword ps
}
}
该"ps"环境变量可以是全球性的,但一个更安全的方法可以将其添加到只有Android Studio中的壳。
在Linux中,可以通过编辑Android Studio的Desktop Entry
Exec=sh -c "export ps=myPassword123 ; /path/to/studio.sh"
您可以在本主题中找到更多详细信息。
以上是 Android 在不公开密钥库密码的情况下签署APK 的全部内容, 来源链接: utcz.com/z/350091.html