2017-07-24 2 views
0

J'essaye de construire un projet NDK Android en utilisant l'intégration continue de Bitbucket Pipelines en utilisant ndk-build (pas le plus récent CMAKE). Mais je reçois l'erreur suivante lorsque vous appelez ./gradlew assembleDebug:Android NDK CI utilisant Bitbucket Pipelines

/opt/android-sdk-linux/ndk-bundle/build/ndk-build: 144: /opt/android-sdk-linux/ndk-bundle/build/ndk-build: file: not found 
:sensorylib:ndkBuild 
make: Entering directory '/opt/atlassian/pipelines/agent/build/sensorylib/src/main' 
/bin/sh: 1: file: not found 
make: execvp: /opt/android-sdk-linux/ndk-bundle/build/extract_manifest.py: Permission denied 
make: execvp: /opt/android-sdk-linux/ndk-bundle/build/extract_manifest.py: Permission denied 
[armeabi] Install  : libSensoryVoiceJNI.so => libs/armeabi/libSensoryVoiceJNI.so 
/opt/android-sdk-linux/ndk-bundle/build/core/build-binary.mk:797: recipe for target 'libs/armeabi/libSensoryVoiceJNI.so' failed 
make: Leaving directory '/opt/atlassian/pipelines/agent/build/sensorylib/src/main' 
make: /opt/android-sdk-linux/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86/bin/arm-linux-androideabi-strip: Command not found 
make: *** [libs/armeabi/libSensoryVoiceJNI.so] Error 127 
make: *** Deleting file 'libs/armeabi/libSensoryVoiceJNI.so' 
:sensorylib:ndkBuild FAILED 

20 actionable tasks: 20 executed 
FAILURE: Build failed with an exception. 

* What went wrong: 
Execution failed for task ':sensorylib:ndkBuild'. 
> Process 'command '/opt/android-sdk-linux/ndk-bundle/ndk-build'' finished with non-zero exit value 2 

* Try: 
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. 

BUILD FAILED in 45s 

bitbucket-pipelines.yml

image: java:8 

pipelines: 
    default: 
    - step: 
     caches: 
      - gradle 
     script: 
      # dependencies 
      - apt-get update 
      - apt-get -y install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip 
      # environment vars 
      - export SDK_URL="https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip" 
      - export ANDROID_HOME="/opt/android-sdk-linux" 
      - export ANDROID_NDK_HOME="$ANDROID_HOME/ndk-bundle" 
      - export PATH="$ANDROID_HOME/tools:$ANDROID_HOME/tools/bin:$ANDROID_NDK_HOME:$PATH" 
      # download and unzip sdk 
      - wget -q $SDK_URL -O android-sdk.zip 
      - unzip android-sdk.zip -d $ANDROID_HOME && rm -f android-sdk.zip 
      # accept all licences http://stackoverflow.com/questions/38096225/automatically-accept-all-sdk-licences 
      - mkdir -p "$ANDROID_HOME/licenses" 
      - echo -e "8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_HOME/licenses/android-sdk-license" 
      - echo -e "84831b9409646a918e30573bab4c9c91346d8abd" > "$ANDROID_HOME/licenses/android-sdk-preview-license" 
      # download ndk 
      - sdkmanager "ndk-bundle" 
      # build 
      - chmod +x gradlew 
      - ./gradlew assembleDebug 

Le chemin ANDROID_NDK_HOME semble correct que je ls le dossier et il semble correct. La permission sur ndk-build semble également réglée correctement ...

Répondre

0

L'erreur était que je manquais file dans les dépendances apt-get install.

Voici le fonctionnement bitbucket-pipelines.yml.

(j'ai aussi réussi à réduire les dépendances globales apt-get)

image: java:8 

pipelines: 
    default: 
    - step: 
     caches: 
      - gradle 
     script: 
      # dependencies 
      - apt-get update && apt-get -y install file build-essential 
      # environment vars 
      - export SDK_URL="https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip" 
      - export ANDROID_HOME="/opt/android-sdk-linux" 
      - export ANDROID_NDK_HOME="$ANDROID_HOME/ndk-bundle" 
      - export PATH="$ANDROID_HOME/tools:$ANDROID_HOME/tools/bin:$ANDROID_NDK_HOME:$PATH" 
      # download and unzip sdk 
      - wget -q $SDK_URL -O android-sdk.zip && unzip android-sdk.zip -d $ANDROID_HOME && rm -f android-sdk.zip 
      # accept all licences http://stackoverflow.com/questions/38096225/automatically-accept-all-sdk-licences 
      - mkdir -p "$ANDROID_HOME/licenses" 
      - echo -e "8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_HOME/licenses/android-sdk-license" 
      - echo -e "84831b9409646a918e30573bab4c9c91346d8abd" > "$ANDROID_HOME/licenses/android-sdk-preview-license" 
      # download ndk 
      - sdkmanager "ndk-bundle" 
      # build 
      - chmod +x gradlew 
      - ./gradlew assembleDebug 
0

Voici une version simplifiée

image: umbrela/android-ndk-builder:latest 

pipelines: 
    branches: 
    master: 
    - step: 
     caches: 
      - gradle 
     script: 
      # build 
      - chmod +x gradlew && ./gradlew assembleDebug 

umbrela/android-ndk-builder:latest est

FROM java:8 

RUN apt-get update \ 
    && apt-get -y install file build-essential 

ENV SDK_URL    https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip 
ENV ANDROID_HOME  /opt/android-sdk-linux 
ENV ANDROID_NDK_HOME $ANDROID_HOME/ndk-bundle 
ENV PATH    $ANDROID_HOME/tools:$ANDROID_HOME/tools/bin:$ANDROID_NDK_HOME:$PATH 

# accept all licences http://stackoverflow.com/questions/38096225/automatically-accept-all-sdk-licences 
RUN mkdir -p "$ANDROID_HOME/licenses" 
RUN echo 8933bad161af4178b1185d1a37fbf41ea5269c55 > $ANDROID_HOME/licenses/android-sdk-license 
RUN echo 84831b9409646a918e30573bab4c9c91346d8abd > $ANDROID_HOME/licenses/android-sdk-preview-license 

RUN ls $ANDROID_HOME/licenses 

# download and unzip sdk 
RUN mkdir -p $ANDROID_HOME \ 
    && wget -q $SDK_URL -O android-sdk.zip \ 
    && unzip android-sdk.zip -d $ANDROID_HOME \ 
    && rm -f android-sdk.zip 

# download ndk 
RUN sdkmanager "ndk-bundle"