Git实验室管道Android项目

Git实验室管道Android项目,android,continuous-integration,gitlab,Android,Continuous Integration,Gitlab,我在git实验室创建了一个android项目。我正在尝试使用管道 生成失败,返回消息 在构建项目之前,您需要接受许可协议,并使用Android Studio SDK管理器完成缺失组件的安装。 我如何自动接受此许可证? 添加--没有ui--全部是不够的(我已经尝试过添加它们!) 我尝试了[此处]介绍的所有解决方案(您需要接受许可协议并完成),但没有成功 有人真的设法让git实验室管道为android工作了吗 下面是我的.gitlab ci.yml文件 image: openjdk:8-jdk v

我在git实验室创建了一个android项目。我正在尝试使用管道

生成失败,返回消息

在构建项目之前,您需要接受许可协议,并使用Android Studio SDK管理器完成缺失组件的安装。

我如何自动接受此许可证? 添加
--没有ui--全部
是不够的(我已经尝试过添加它们!)

我尝试了[此处]介绍的所有解决方案(您需要接受许可协议并完成),但没有成功

有人真的设法让git实验室管道为android工作了吗

下面是我的
.gitlab ci.yml
文件

image: openjdk:8-jdk

variables:
  ANDROID_COMPILE_SDK: "24"
  ANDROID_BUILD_TOOLS: "25.0.3"
  ANDROID_SDK_TOOLS: "25.0.3"

before_script:
  - export ANDROID_HOME=$PWD/
  - export PATH=$PATH:$PWD/
  - apt-get --quiet update --yes
  - apt-get --quiet install --yes wget tar unzip lib32stdc++6 lib32z1
  - wget --quiet --output-document=android-sdk.zip https://dl.google.com/android/repository/tools_r${ANDROID_SDK_TOOLS}-linux.zip
  - unzip android-sdk.zip
  - echo y | tools/android --silent update sdk --no-ui --all --filter android-${ANDROID_COMPILE_SDK}
  - echo y | tools/android --silent update sdk --no-ui --all --filter platform-tools
  - echo y | tools/android --silent update sdk --no-ui --all --filter build-tools-${ANDROID_BUILD_TOOLS}
  - echo y | tools/android --silent update sdk --no-ui --all --filter extra-android-m2repository
  - echo y | tools/android --silent update sdk --no-ui --all --filter extra-google-google_play_services
  - echo y | tools/android --silent update sdk --no-ui --all --filter extra-google-m2repository
  - chmod +x ./gradlew

stages:
  - build

build:
  stage: build
  script:
    - ./gradlew assembleDebug --stacktrace
  artifacts:
    paths:
    - app/build/outputs/

sdkmanager
cli可用于更新SDK/接受许可证。 接受您可以运行的所有许可证


echo y | tools/bin/sdkmanager--许可证

可以使用
sdkmanager
cli更新SDK/接受许可证。 接受您可以运行的所有许可证


echo y | tools/bin/sdkmanager——许可证

我最终用
sdkmanager
解决了这个问题,但我不得不下载
sdk
zip
,而不是像我原来问题中的代码那样下载
工具
zip

这是我在gitlab问题跟踪器上复制的最后一段代码

image: openjdk:8-jdk

variables:
  ANDROID_COMPILE_SDK: "24"
  ANDROID_BUILD_TOOLS: "25.0.3"
 # ANDROID_SDK_TOOLS: "25.0.3"
  ANDROID_SDK_TOOLS_REV: "3859397"  # "26.0.1"

before_script:
  - mkdir $HOME/.android # For sdkmanager configs
  - echo 'count=0' > $HOME/.android/repositories.cfg # Avoid warning
  - wget --quiet --output-document=android-sdk.zip https://dl.google.com/android/repository/sdk-tools-linux-${ANDROID_SDK_TOOLS_REV}.zip
  - mkdir $PWD/android-sdk-linux
  - unzip -qq android-sdk.zip -d $PWD/android-sdk-linux
  - export ANDROID_HOME=$PWD/android-sdk-linux
  - export ANDROID_NDK_HOME=$ANDROID_HOME/ndk-bundle # Remove if you don't need NDK
  - export PATH=$PATH:$ANDROID_HOME/platform-tools/:$ANDROID_NDK_HOME
  - echo y | $ANDROID_HOME/tools/bin/sdkmanager --update 
  - echo y | $ANDROID_HOME/tools/bin/sdkmanager 'tools'
  - echo y | $ANDROID_HOME/tools/bin/sdkmanager 'platform-tools'
  - echo y | $ANDROID_HOME/tools/bin/sdkmanager 'build-tools;'$ANDROID_BUILD_TOOLS
  - echo y | $ANDROID_HOME/tools/bin/sdkmanager 'platforms;android-'$ANDROID_COMPILE_SDK
  - echo y | $ANDROID_HOME/tools/bin/sdkmanager 'extras;android;m2repository'
  - echo y | $ANDROID_HOME/tools/bin/sdkmanager 'extras;google;google_play_services'
  - echo y | $ANDROID_HOME/tools/bin/sdkmanager 'extras;google;m2repository'
  - chmod +x ./gradlew

我最终使用
sdkmanager
解决了这个问题,但我不得不下载
sdk
zip
,而不是像我最初问题中的代码那样下载
工具

这是我在gitlab问题跟踪器上复制的最后一段代码

image: openjdk:8-jdk

variables:
  ANDROID_COMPILE_SDK: "24"
  ANDROID_BUILD_TOOLS: "25.0.3"
 # ANDROID_SDK_TOOLS: "25.0.3"
  ANDROID_SDK_TOOLS_REV: "3859397"  # "26.0.1"

before_script:
  - mkdir $HOME/.android # For sdkmanager configs
  - echo 'count=0' > $HOME/.android/repositories.cfg # Avoid warning
  - wget --quiet --output-document=android-sdk.zip https://dl.google.com/android/repository/sdk-tools-linux-${ANDROID_SDK_TOOLS_REV}.zip
  - mkdir $PWD/android-sdk-linux
  - unzip -qq android-sdk.zip -d $PWD/android-sdk-linux
  - export ANDROID_HOME=$PWD/android-sdk-linux
  - export ANDROID_NDK_HOME=$ANDROID_HOME/ndk-bundle # Remove if you don't need NDK
  - export PATH=$PATH:$ANDROID_HOME/platform-tools/:$ANDROID_NDK_HOME
  - echo y | $ANDROID_HOME/tools/bin/sdkmanager --update 
  - echo y | $ANDROID_HOME/tools/bin/sdkmanager 'tools'
  - echo y | $ANDROID_HOME/tools/bin/sdkmanager 'platform-tools'
  - echo y | $ANDROID_HOME/tools/bin/sdkmanager 'build-tools;'$ANDROID_BUILD_TOOLS
  - echo y | $ANDROID_HOME/tools/bin/sdkmanager 'platforms;android-'$ANDROID_COMPILE_SDK
  - echo y | $ANDROID_HOME/tools/bin/sdkmanager 'extras;android;m2repository'
  - echo y | $ANDROID_HOME/tools/bin/sdkmanager 'extras;google;google_play_services'
  - echo y | $ANDROID_HOME/tools/bin/sdkmanager 'extras;google;m2repository'
  - chmod +x ./gradlew
最后我用

速度更快,产生的问题更少:

before_script:
    - export GRADLE_USER_HOME=`pwd`/.gradle
    - mkdir -p $GRADLE_USER_HOME
    - chmod +x ./gradlew

cache:
  paths:
     - .gradle/wrapper
     - .gradle/caches

build:
  stage: build
  script:
     - ./gradlew assemble

test:
  stage: test
  script:
     - ./gradlew check
最后我用

速度更快,产生的问题更少:

before_script:
    - export GRADLE_USER_HOME=`pwd`/.gradle
    - mkdir -p $GRADLE_USER_HOME
    - chmod +x ./gradlew

cache:
  paths:
     - .gradle/wrapper
     - .gradle/caches

build:
  stage: build
  script:
     - ./gradlew assemble

test:
  stage: test
  script:
     - ./gradlew check

我已经为Android创建了一个CI图像,可以在上找到


它基于中所描述的内容,但图像中已经有了所有Android工具,因此您不必在每次CI运行时再次安装它们。与说明相比,该图像在每条管道上为您节省约30秒。

我为Android创建了一个CI图像,可在上找到


它基于中所描述的内容,但图像中已经有了所有Android工具,因此您不必在每次CI运行时再次安装它们。与说明相比,该映像在每个管道中为您节省约30秒。

sdkmanager
命令未包含在工具压缩包中,您必须下载整个sdk。
sdkmanager
命令未包含在工具压缩包中,您必须下载整个sdk。到目前为止,Gitlab已经有了适用于Android的CI模板,这篇文章对此进行了详细描述:尽管如此,它仍然需要在每次运行时动态下载和安装SDK工具。到目前为止,Gitlab有一个针对Android的CI模板,这篇文章对此进行了详细描述:它仍然需要在每次运行时动态下载和安装SDK工具,虽然.Fails for me with
未能安装以下Android SDK软件包,因为一些许可证尚未被接受。
并且它似乎缺少
sdkmanager
,因此我无法接受它们。Fails for me with
未能安装以下Android SDK软件包,因为一些许可证尚未被接受。
并且它似乎缺少
sdkmanager
所以我不能接受它们。