jenkins 在构建 android 项目时使用什么 keystore 。
因为我使用 Google 登录。
我需要使用我在本地使用的相同调试 keystore 。
为此,我覆盖了服务器上的 debug.keystore
。
但是,由于 keystore 不同,我仍然无法登录。
最佳答案
默认情况下,Android 构建系统使用 $HOME/.android/debug.keystore
中的 keystore .
如果该文件在构建时不存在,它将自动生成。因此,很可能该应用程序正在使用您的机器和 Jenkins 机器上完全不同的 keystore 进行签名。
您可以通过将 keystore 从您的机器复制到 Jenkins 机器,复制到 Jenkins 运行的用户$HOME
目录 来解决此问题。
或者,您可以通过在构建应用程序的调试版本时显式提供要使用的 keystore 来覆盖默认的构建系统行为。
这意味着,无论用户在哪台机器上构建应用程序,都将始终使用相同的调试 keystore 来签署 APK。
例如,你可以添加一个新的signingConfig
到app/build.gradle
:
signingConfigs {
debug {
// Override the local debug keystore, so that
// all builds have consistent certificates
storeFile file('../debug.keystore')
}
}
这假设您已经在项目的根目录下创建并 checkin 了一个调试 keystore 。
此调试 keystore 必须与 Android 构建系统生成的 keystore 具有相同的 key 别名和密码,即别名 androiddebugkey
,密码 android
。
您可以使用 keytool
生成具有以下属性的 key :
keytool -genkey -v -keyalg RSA -keysize 2048 -validity 10000 \
-dname 'CN=Android Debug,O=Android,C=US' -keystore debug.keystore \
-storepass android -alias androiddebugkey -keypass android
关于android - 为 Jenkins 和 Android 构建调试 keystore ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32314624/