android - 无法在 GitLab CI 中生成签名的 APK

标签 android gitlab gitlab-ci gitlab-ci-runner

我正在测试 gitlab ci/cd,我正在尝试构建一个签名的 APK,但是我的 脚本失败。我应该更改或添加什么?

我添加变量 KEYSTORE_FILE、KEYSTORE_PASSWORD、KEY_ALIAS、KEY_PASSWORD 有值(value)观。

assembleRelease:
 stage: release
 script:
 - echo $KEYSTORE_FILE | base64 -d > my.keystore
 - ./gradlew assembleRelease
 -Pandroid.injected.signing.store.file=$(pwd)/my.keystore
 -Pandroid.injected.signing.store.password=$KEYSTORE_PASSWORD
 -Pandroid.injected.signing.key.alias=$KEY_ALIAS
 -Pandroid.injected.signing.key.password=$KEY_PASSWORD
  artifacts:
  paths:
  - app/build/outputs/apk/release

错误:

FAILURE: Build failed with an exception.
What went wrong:
Execution failed for task ':app:packageRelease'.
1 exception was raised by workers:
java.lang.RuntimeException: 
com.android.ide.common.signing.KeytoolException: Failed to read key  from 
store "/builds/juantamad.02072019/2019_samplebuild/my.keystore": null

不过应该​​可以成功

最佳答案

如果你有正确的缩进(正如发布的那样,它们不是),问题很可能是由多行命令引起的 - 它只是首先执行 - ./gradlew assembleRelease,没有进一步的参数

要换行,您可以使用 YAML 多行字符串:

  script:
   - ...
   - >
     ./gradlew assembleRelease
       -Pandroid.injected.signing.store.file=$(pwd)/my.keystore
       -Pandroid.injected.signing.store.password=$KEYSTORE_PASSWORD
       -Pandroid.injected.signing.key.alias=$KEY_ALIAS
       -Pandroid.injected.signing.key.password=$KEY_PASSWORD

阅读更多:

--

另一个可能的原因 - 如果您的环境变量在项目设置中设置为 protected
并且您在一个不 protected 的分支机构工作。
然后 var 没有传递给你的工作

关于android - 无法在 GitLab CI 中生成签名的 APK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56879626/

相关文章:

android - Zxing 项目作为项目中的库不会构建

git - 从 GitLab merge 请求中排除特定提交

grails - 用于 grails 项目的 GitLab-CI

Angularjs + grunt + Bower + Gitlab CI。测试设置

kotlin - Gitlab CI Pipeline - Selenium 服务无法连接到主机

android - 在 Android 5 中将视频文件存储在 SD 卡上

android - 设置 Google Analytics 以触发具有维度更改的新 session

android - 布局高度 AppCompat 非全屏

gitlab - 如何禁止同一管道并发执行

caching - 如何为 Gitlab Pages 启用 GZip 压缩?