无法在GitLab CI中生成已签名的APK [英] Can't generate signed APK in GitLab CI

查看:113
本文介绍了无法在GitLab CI中生成已签名的APK的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm testing gitlab ci/cd and I'm trying to build a signed APK but my script failed. What should I change or add?

我添加了变量KEYSTORE_FILE,KEYSTORE_PASSWORD,KEY_ALIAS,KEY_PASSWORD 带有值.

I add variables KEYSTORE_FILE, KEYSTORE_PASSWORD, KEY_ALIAS, KEY_PASSWORD with values.

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 ,无需进一步争论

Provided you have correct indentations (as posted they are not), the problem is likely to be caused by multi-line command - it just executes - ./gradlew assembleRelease first, without further arguments

要包裹长行,可以使用YAML多行字符串:

To wrap the long line you can use YAML multi-line strings:

  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

了解更多:

  • In YAML, how do I break a string over multiple lines?
  • https://gitlab.com/snippets/1717579

-

另一个可能的原因-如果您的环境变量在项目设置中设置为受保护的
并且您在不受保护的分支中工作.
然后var不会传递给您的工作

Another possible cause - if your env var is set as Protected in project settings,
and you are working in a branch which is not Protected.
Then var is not passed to your job

这篇关于无法在GitLab CI中生成已签名的APK的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆