1

Ich verwende Circle.ci, um meinen Code auf einem Emulator zu testen.Android AVD mit Google Play Services auf Circle.ci

Ich habe einige Espresso-Tests, die Karten und Orte api von Google verwenden. Diese Tests arbeiten nicht mit dem Emulator von circle.ci gegeben

Also habe ich versucht, meine eigenen zu tun, in den circle.yml

machine: 
    environment: 
    PATH: "~/$CIRCLE_PROJECT_REPONAME/gradle-2.9/bin:$PATH" 
    TERM: "dumb" 
    ADB_INSTALL_TIMEOUT: "10" 
    GRADLE_OPTS: '-Dorg.gradle.jvmargs="-Xmx2048m -XX:+HeapDumpOnOutOfMemoryError"' 

dependencies: 
    pre: 
    - android list targets 
    - wget "https://services.gradle.org/distributions/gradle-2.9-bin.zip"; unzip gradle-2.9-bin.zip 
    - android list sdk -a -e 
    - echo y | android update sdk --no-ui --all --filter build-tools-23.0.2 
    - echo y | android update sdk --no-ui --all --filter tool,android-22,extra-android-m2repository,extra-android-support,extra-google-google_play_services,extra-google-m2repository,addon-google_apis-google-22 
    - echo y | android update sdk --no-ui --all --filter sys-img-armeabi-v7a-google_apis-22 
test: 
    override: 
    - echo no | android create avd -n avd22 -t 12 --abi google_apis/armeabi-v7a 
    - emulator -avd avd22 -no-audio -no-window: 
     background: true 
     parallel: true 

Leider, auch ich, wenn ich android update sdk --no-ui --all --filter sys-img-armeabi-v7a-google_apis-22 laufen, wenn ich ein android list target es scheint, dass mein Bild nicht availble ist:

id: 12 or "Google Inc.:Google APIs:22" 
    Name: Google APIs 
    Type: Add-On 
    Vendor: Google Inc. 
    Revision: 1 
    Description: Android + Google APIs 
    Based on Android 5.1.1 (API level 22) 
    Libraries: 
     * com.google.android.media.effects (effects.jar) 
      Collection of video effects 
     * com.android.future.usb.accessory (usb.jar) 
      API for USB Accessories 
     * com.google.android.maps (maps.jar) 
      API for Google Maps 
    Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800, WXGA800-7in 
Tag/ABIs : no ABIs. 

Wenn jemand eine Lösung hat einen Emulator auf circle.ci mit Play-Diensten zu verwenden, wäre es für mich wirklich nützlich sein ...

Antwort

2

Nach viel Versuch ich endlich ein Android AVD mit Play-Dienste mit dieser Konfigurationsdatei erstellen konnte:

machine: 
    environment: 
    PATH: "~/$CIRCLE_PROJECT_REPONAME/gradle-2.9/bin:$PATH" 
    TERM: "dumb" 
    ADB_INSTALL_TIMEOUT: "10" 
    GRADLE_OPTS: '-Dorg.gradle.jvmargs="-Xmx2048m -XX:+HeapDumpOnOutOfMemoryError"' 
dependencies: 
    pre: 
    - echo y | android update sdk --no-ui --all --filter tools 
    - echo y | android update sdk --no-ui --all --filter platform-tools 
    - echo y | android update sdk --no-ui --all --filter extra-android-m2repository 
    - echo y | android update sdk --no-ui --all --filter extra-android-support 
    - echo y | android update sdk --no-ui --all --filter extra-google-google_play_services 
    - echo y | android update sdk --no-ui --all --filter extra-google-m2repository 
    - echo y | android update sdk --no-ui --all --filter android-22 
    - echo y | android update sdk --no-ui --all --filter build-tools-23.0.2 
    - echo y | android update sdk -a -u -t sys-img-armeabi-v7a-google_apis-22 
    - android list targets 
test: 
    override: 
    - echo no | android create avd -n custom-android22-googleapis -t "android-22" --abi google_apis/armeabi-v7a 
    - android list avd 
    - emulator -avd custom-android22-googleapis -no-audio -no-window: 
     background: true 
     parallel: true 
    # wait for emulator to have booted 
    - circle-android wait-for-boot 
    # Sleeping isn't a brilliant fix... 
    - sleep 30 
    - fb-adb rcmd screencap -p > $CIRCLE_ARTIFACTS/screen-$(date +"%T").png 
    - adb shell input keyevent 82 
    - ./gradlew connectedAndroidTest -PdisablePreDex --console=plain --info 
    #- fb-adb devices 
    - fb-adb rcmd screencap -p > $CIRCLE_ARTIFACTS/screen-$(date +"%T").png 
+1

Ich habe dies so gut funktioniert, aber haben jetzt ein Problem, bei dem ein Dialog blockiert die UI. Es besagt, dass der Emulator aktualisierte Google Play-Dienste benötigt, die Aktualisierung jedoch nicht funktioniert. Ich frage mich, ob Sie auch dieses Problem haben und ob Sie eine Lösung haben –

Verwandte Themen