2017-07-31 49 views
4

試圖將我的Android項目升級到CircleCI 2.0。一切都很好,但無法使用仿真器運行Android UI測試。如何在CircleCI 2.0上正確運行Android UI測試?

  • 日誌說com.android.builder.testing.api.DeviceException: No connected devices!
  • 其實我已經下載的模擬器圖像,並對其進行設置(堂妹CircleCI的默認的Android泊塢窗圖像不來與仿真器):sdkmanager "system-images;android-22;default;armeabi-v7a" && echo "no" | avdmanager create avd -n test -k "system-images;android-22;default;armeabi-v7a" && (emulator64-arm -avd test -noaudio -no-boot-anim -no-window -accel on) &
  • adb devices沒有返回裝置:(

回答

12

circle.yml

version: 2 
jobs: 
    build: 
    docker: 
     - image: circleci/android:api-26-alpha 
    steps: 
     - run: 
      name: Setup emulator 
      command: sdkmanager "system-images;android-22;default;armeabi-v7a" && echo "no" | avdmanager create avd -n test -k "system-images;android-22;default;armeabi-v7a" 
     - run: 
      name: Launch emulator 
      command: export LD_LIBRARY_PATH=${ANDROID_HOME}/emulator/lib64:${ANDROID_HOME}/emulator/lib64/qt/lib && emulator64-arm -avd test -noaudio -no-boot-anim -no-window -accel on 
      background: true 
     - run: 
      name: Run Tests 
      command: ./gradlew :demo:connectedAndroidTest 

  • 某些某些架構影像不被谷歌,例如提供API級別26沒有ARM EABI v7a系統映像,這就是爲什麼我選擇上面的system-images;android-22;default;armeabi-v7a。要查看哪些圖像可用,請運行命令sdkmanager --list --verbose | grep system-images

  • 您需要設置變量LD_LIBRARY_PATH的環境下lib64qt路徑,否則你可能會遇到ERROR: Could not load OpenGLES emulation library [lib64OpenglRender]error while loading shared libraries: libQt5Widgets.so.5: cannot open shared object file: No such file or directory Exited with code 127。這是由於a bug from Android SDK

  • 運行在CircleCI後臺命令,它不是像通常的方式只是追加&到命令結束,將由掛斷(HUP)信號最終被殺害。正確的方法是說background: true

+0

我通過添加步驟複製並粘貼腳本,但它在仿真器啓動時崩潰。我得到這個錯誤:'模擬器:錯誤:無法加載OpenGLES模擬庫[lib64OpenglRender]:lib64OpenglRender.so:無法打開共享對象文件:沒有這樣的文件或目錄 模擬器:錯誤:無法加載OpenGLES模擬庫[lib64OpenglRender]: lib64OpenglRender.so:無法打開共享對象文件:沒有這樣的文件或目錄 模擬器:錯誤:無法初始化OpenglES仿真,使用'-gpu off'來禁用它。' – filol

+0

@filol感謝您的反饋。我只是修改了我的答案,更改是在env變量部分'LD_LIBRARY_PATH'。你可以再試一次,讓我知道嗎?順便說一句,只是爲了確認,你在使用ARM模擬器嗎? –

+0

感謝您的快速回復,但是當我應用修正了模擬器問題的修補程序時,gradle崩潰:'Gradle構建守護進程意外消失(可能已被殺死或可能崩潰)'。我想這與記憶問題有關,我會調查。是的,我正在使用ARM模擬器。 – filol