android - 在 AWS codebuild 中为 Android build设置环境

标签 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.

最佳答案

我认为这里的问题在于跨 CodeBuild 不遵循的命令传播环境变量值。 CodeBuild 在新的 shell 中执行每个命令。最后 2 个命令实质上会将 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

希望对您有所帮助。

谢谢!

关于android - 在 AWS codebuild 中为 Android build设置环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42547671/

相关文章:

java - 如何将 TextView 设置为长值?

android - 在按钮顶部添加水平分隔线

amazon-web-services - 在AWS EMR中连接到Google NGrams数据

amazon-web-services - Codebuild 没有安装 PHP 包

amazon-web-services - AWS CodeBuild buildspec.yml递归获取所有文件和子文件夹

java - SharedPreferences:为什么我的值没有被覆盖?

android - 如何使用android的httpURLconnection设置授权 header

aws-codepipeline - AWS CodePipeline 不遵守 CodeBuild 设置

python - AWS Elasticsearch批量插入延迟急剧增加

amazon-web-services - AWS Fargate 中的文件