Android 如何使用Gitlab CI/CD生成已签名的发布APK?

Android 如何使用Gitlab CI/CD生成已签名的发布APK?,android,gitlab,Android,Gitlab,我正在试验GitLab的CI/CD,并正在研究如何生成已签名的APK发行版 我读过这篇文章 它建议如下: - ./gradlew assembleRelease -Pandroid.injected.signing.store.file=$(pwd)/my.keystore -Pandroid.injected.signing.store.password=$KEYSTORE_PASSWORD -Pandroid.injected.signing.key.alias=$K

我正在试验GitLab的CI/CD,并正在研究如何生成已签名的APK发行版

我读过这篇文章

它建议如下:

- ./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
并将变量存储在Gitlab CI/CD变量中

但每次我运行管道时,都会产生以下结果:

* What went wrong:
Execution failed for task ':app:packageRelease'.
> 1 exception was raised by workers:
  java.lang.RuntimeException: java.lang.RuntimeException: 
com.android.ide.common.signing.KeytoolException: Failed to read key key0 from store "/tmp/Lp7GrQLJ/0/XXXXX/sample-android-project/keystore": Keystore was tampered with, or password was incorrect

有人能带我到这里吗?我可能做错了什么?

希望这对你有帮助

image: openjdk:8-jdk

variables:
  ANDROID_COMPILE_SDK: "27"
  ANDROID_BUILD_TOOLS: "27.0.0"
  ANDROID_SDK_TOOLS: "24.4.1"

before_script:
  - apt-get --quiet update --yes
  - apt-get --quiet install --yes wget tar unzip lib32stdc++6 lib32z1
  - wget --quiet --output-document=android-sdk.tgz https://dl.google.com/android/android-sdk_r${ANDROID_SDK_TOOLS}-linux.tgz
  - tar --extract --gzip --file=android-sdk.tgz
  - echo y | android-sdk-linux/tools/android --silent update sdk --no-ui --all --filter android-${ANDROID_COMPILE_SDK}
  - echo y | android-sdk-linux/tools/android --silent update sdk --no-ui --all --filter platform-tools
  - echo y | android-sdk-linux/tools/android --silent update sdk --no-ui --all --filter build-tools-${ANDROID_BUILD_TOOLS}
  - echo y | android-sdk-linux/tools/android --silent update sdk --no-ui --all --filter extra-android-m2repository
  - echo y | android-sdk-linux/tools/android --silent update sdk --no-ui --all --filter extra-google-google_play_services
  - echo y | android-sdk-linux/tools/android --silent update sdk --no-ui --all --filter extra-google-m2repository
  - export ANDROID_HOME=$PWD/android-sdk-linux
  - export PATH=$PATH:$PWD/android-sdk-linux/platform-tools/
  - export GRADLE_USER_HOME="$(pwd)/.gradle"
  - export ANDROID_HOME="$(pwd)/.android"
  - mkdir -p "${ANDROID_HOME}/licenses"
  - echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55\nd56f5187479451eabf01fb78af6dfcb131a6481e" > "${ANDROID_HOME}/licenses/android-sdk-license"
  - echo -e "\n84831b9409646a918e30573bab4c9c91346d8abd" > "${ANDROID_HOME}/licenses/android-sdk-preview-license"
  - echo -e "\nd975f751698a77b662f1254ddbeed3901e976f5a" > "${ANDROID_HOME}/licenses/intel-android-extra-license"
  #- ./gradlew --parallel --stacktrace --no-daemon build 
  - chmod +x ./gradlew

stages:
  - build

build:
  stage: build
  script:
    - ./gradlew assembleDebug
  artifacts:
    paths:
    - app/build/outputs/
此代码用于调试构建,请将脚本中的AssembleDefug替换为assembleRelease


将它放在项目主文件夹中,名称为.gitlab ci.yml

上面的配置将生成一个debugAPK。。如果将其更改为release,则需要指定密钥库文件、别名、密钥库密码和密码。您的配置中没有显示。您是否尝试通过配置密钥库详细信息将其与build.gradle文件一起创建assembleRelease应用程序?5月99%他们将尽可能多地工作出于安全原因,我不想将这些信息放在build.gradle文件中。如果你看我链接的那篇文章,那正是他所做的。@ShubhamSejpal如何添加密钥和密码?@Midhilaj请查看此链接,以了解gradle文件中的版本构建密钥库路径配置。(或)如果要配置CI,请遵循以下步骤:您的密码是否包含空格?如果是,请将变量置于双引号之间。很可能是密码错误。我现在解决了此问题。:)