2017-03-02 2 views
2

Ich versuche, Android-Umgebung in AWS-Server zu installieren. Hier ist es buildspec.yml Datei, die Satz von Befehl zu installieren Android SDK, NDK und Gradlew für Android-Build zu erstellen. SDK und NDK für Android wurden erfolgreich heruntergeladen und auf dem AWS Ubuntu System installiert. Auch ich kann ein Protokoll für ./gradlew build sehen, die erfolgreich erstellen.Legen Sie die Umgebung in AWS Codebuild für Android 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/**/* 

Während ich versuche auszuführen Befehl ./gradlew zusammenbauen für Android bauen kann es Anwendungsdatei (apk) im Android Ausgabeverzeichnis in Android Studio erzeugen, aber leider Es funktioniert nicht in der AWS-CodeBuild-Umgebung.

Jeder hat einen tiefen Einblick in dieses Thema? Bitte schlagen Sie vor, wenn Sie im Setup-Teil etwas falsch finden.

I have followed this tutorial for AWS CodeBuild.

+0

Was ist 'root /./ gradlew'? Warum ist das '.' dort? –

+0

Auch 'echo sdk.dir = 'pwd'' verwendet die falschen Anführungszeichen –

+0

root /./ gradlew es ist der Pfad zum Ausführen von gradlew Befehl im Unterverzeichnis, sonst kann es nicht finden. Ich überprüfte diese Spuren und es funktioniert für ./gradlew Build – QuokMoon

Antwort

4

Ich denke, das Problem hier ist die Umgebungsvariable Werte über Befehle mit propagieren, die CodeBuild folgt nicht. CodeBuild führt jeden Befehl in der neuen Shell aus. Die letzten beiden Befehle würden im Wesentlichen die Variablen sdk.dir und ndk.dir leer setzen (Sie können dies überprüfen, indem Sie cat local.properties ausführen).

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

Der richtige Ansatz wäre hier zu Build-Logik zu einem Skript zu bewegen, die von den buildspec.yml

- ./my-gradle-build.sh

oder

nicht die Umgebungsvariablen ausgeführt werden um Variablen in local.properties zu setzen, aber stattdessen Pfade zu verwenden.

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

Ich hoffe, das hilft.

Danke!

Verwandte Themen