2017-03-02 22 views
2

AWSサーバーにAndroid環境をインストールしようとしています。 アンドロイドビルドのために Android SDK、NDK、gradlewをインストールするコマンドセットを含むbuildspec.ymlファイルです。 Android用SDKとNDKが正常にダウンロードされ、AWS Ubuntuシステムにインストールされました。でも、./gradlewビルドのログを見ると、 が正常にログに記録されます。Android環境用のAWSコードビルド環境を設定する

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が、それは、Android StudioでAndroidの出力ディレクトリ内のアプリケーションファイル(の.apk)を生成することができます構築のためのコマンドを組み立てる./gradlew を実行しようとしますが が、残念ながらAWS CodeBuild環境では動作しません。

誰もがこの問題について深い洞察力を持っていますか?セットアップに間違いがあるかどうかをお尋ねください。

I have followed this tutorial for AWS CodeBuild.

+0

ルートとは何ですか?/ gradlewとは何ですか?なぜそこに '.'があるのですか? –

+0

また、 'echo sdk.dir = 'pwd''は間違った引用符を使用しています –

+0

root /./ gradlewそれはサブディレクトリでgradlewコマンドを実行するためのパスです。そうでなければ.Iトレースを確認して、それが働いています./gradlew – QuokMoon

答えて

4

は、私がここでの問題はCodeBuildが従っていないコマンドを越え、環境変数の値を伝播していると思います。 CodeBuildは新鮮なシェルで各コマンドを実行します。最後の2つのコマンドは、本質的にsdk.dir変数とndk.dir変数を空に設定します(cat local.propertiesを実行することでこれを検証できます)。ここでの適切なアプローチがbuildspec.yml

- ./my-gradle-build.sh

または

の環境変数を使用していないから実行されますスクリプトにビルドロジックを移動するだろう

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

local.propertiesに変数を設定し、代わりにパスを使用します。

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

私はこのことができます願っています。

ありがとうございます!