android - 为 Jenkins 和 Android 构建调试 keystore

标签 android jenkins

jenkins 在构建 android 项目时使用什么 keystore 。

因为我使用 Google 登录。 我需要使用我在本地使用的相同调试 keystore 。 为此,我覆盖了服务器上的 debug.keystore。 但是,由于 keystore 不同,我仍然无法登录。

最佳答案

默认情况下,Android 构建系统使用 $HOME/.android/debug.keystore 中的 keystore .

如果该文件在构建时不存在,它将自动生成。因此,很可能该应用程序正在使用您的机器和 Jenkins 机器上完全不同的 keystore 进行签名。

您可以通过将 keystore 从您的机器复制到 Jenkins 机器,复制到 Jenkins 运行的用户$HOME 目录 来解决此问题。


或者,您可以通过在构建应用程序的调试版本时显式提供要使用的 keystore 来覆盖默认的构建系统行为。

这意味着,无论用户在哪台机器上构建应用程序,都将始终使用相同的调试 keystore 来签署 APK。

例如,你可以添加一个新的signingConfigapp/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/

相关文章:

java - 在类(而不是 Activity )之间传递数据会导致空指针异常

java - 在 Java (android) 中高效地声明 UI 元素

Android 如何获取联系人照片的图像路径?

android - 在 CoordinatorLayout 内滚动 CollapsingToolbar 时修复图标下方的标题文本

Jenkins : Copy artifacts from Multibranch pipeline

git - 从声明式 Jenkins 管道中的私有(private) Git 存储库下载单个文件

android - 如果我使用 Android 4.2.2 API 17 开发我的应用程序,它可以在最旧版本中运行吗?

java - 将变量从 jenkins 传递到 testng.xml

java - Jenkins 进行了挂起的 Maven 可靠测试

jenkins - 什么会导致控制台 View 和 blueocean View 之间的时间戳不同?