2017-03-02 61 views
2

我正嘗試在AWS服務器中安裝Android環境。 這裏是buildspec.yml文件,其中包含安裝的一組命令 Android SDK,NDK和gradlew用於生成android構建。 SDK和NDK for Android已成功下載並安裝在AWS Ubuntu系統上。即使我可以看到./gradlew構建的日誌成功構建 。在AWS codebuild for Android中設置環境

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/**/* 

當我試圖執行./gradlew組裝命令爲Android打造它可以產生在Android的輸出目錄應用程序文件(apk文件)Android Studio中 可惜它不適用於AWS CodeBuild環境。

任何人都對這個問題有深刻的認識?如果您在設置部分中發現任何錯誤,請提出建議。

I have followed this tutorial for AWS CodeBuild.

+0

什麼是'root /./ gradlew'?那裏的'。'爲什麼? –

+0

另外'echo sdk.dir ='pwd''使用了錯誤的引號 –

+0

root /./ gradlew它是在子目錄中執行gradlew命令的路徑,否則它找不到。我檢查了這些痕跡並且它適用於./gradlew build – QuokMoon

回答

4

我覺得這裏的問題是跨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

我希望這有助於。

謝謝!