在AWS codebuild中为Android版本设置环境

时间:2017-03-02 05:42:58

标签: android amazon-web-services aws-codebuild

我正在尝试在AWS服务器中安装Android环境。 这是buildspec.yml文件,其中包含要安装的命令集 用于生成android构建的Android SDK,NDK和 gradlew 。 SDK和NDK for Android已成功下载并安装在AWS Ubuntu系统上。即使我可以看到构建的 ./ gradlew build 的日志 成功。

buildspec.yml

version: 0.1

phases:
  install:
    commands:
      - echo Nothing to do in the install phase...
      - sudo apt-get -y install wget
  pre_build:
    commands:
      - echo Nothing to do in the pre_build phase...
      - wget http://dl.google.com/android/android-sdk_r24.4.1-linux.tgz
      - tar zxvf android-sdk_r24.4.1-linux.tgz
      - mkdir -p android-sdk-linux/licenses
      - cp android-sdk-license ./android-sdk-linux/licenses/
      - echo sdk.dir='pwd'/android-sdk-linux > local.properties
      - wget https://dl.google.com/android/repository/android-ndk-r13b-linux-x86_64.zip
      - unzip android-ndk-r13b-linux-x86_64.zip
      - export ANDROID_NDK_HOME=`pwd`/android-ndk-r13b
      - export PATH=${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools:${ANDROID_NDK_HOME}
      - echo "sdk.dir=$ANDROID_HOME" > local.properties
      - echo "ndk.dir=$ANDROID_NDK_HOME" >> local.properties
  build:
    commands:
      - root/./gradlew --debug --stacktrace build
      - root/./gradlew assemble

  post_build:
    commands:
      - echo Build completed on `date`
artifacts:
   files:
    - Monoca/app/**/*

当我尝试为Android版本执行 ./ gradlew assemble 命令时,它可以在Android Studio的Android输出目录中生成应用程序文件(.apk) 但不幸的是,它在AWS CodeBuild环境中无效。

任何人都对这个问题有深刻见解吗?如果您在设置部件中发现任何问题,请建议。

I have followed this tutorial for AWS CodeBuild.

1 个答案:

答案 0 :(得分:5)

我认为这里的问题是在CodeBuild不遵循的命令之间传播环境变量值。 CodeBuild在新shell中执行每个命令。最后两个命令实际上将sdk.dir和ndk.dir变量设置为空(您可以通过运行cat local.properties来验证这一点。)

- echo "sdk.dir=$ANDROID_HOME" > local.properties - echo "ndk.dir=$ANDROID_NDK_HOME" >> local.properties

这里的正确方法是将构建逻辑移动到从buildspec.yml执行的脚本

- ./my-gradle-build.sh

不使用环境变量在local.properties中设置变量,而是使用路径。

- echo sdk.dir='pwd'/android-ndk-r13b > local.properties - echo ndk.dir='pwd'/android-ndk-r13b >> local.properties

我希望这会有所帮助。

谢谢!