budtmo / docker-android

Android in docker solution with noVNC supported and video recording
Other
9.61k stars 1.27k forks source link

Back & Restore avd not working #129

Open omritoptix opened 5 years ago

omritoptix commented 5 years ago

Operating System: Ubuntu 18.04

Docker Image: butomo1989/docker-android-x86-7.1.1

Docker Version:
17.12.1-ce

Docker-compose version (Only if you use it):
1.22.0

Docker Command to start docker-android:
docker-compose up --build -d

Expected Behavior

I installed an apk on a fresh avd. I expected the former avd to be used (with the installed apk) once I restart docker compose with docker-compose stop && echo 'y' | docker-compose rm && docker-compose up --build -d

Actual Behavior

The avd is initialized from scratch again and doesn't include the previously installed apk.

docker compose file

# Note: It requires docker-compose 1.13.0
#
# Usage: docker-compose up -d
version: "2.2"

services:
  # Docker-Android for Android application testing
  nexus_7.1.1:
    image: butomo1989/docker-android-x86-7.1.1
    container_name: appium_emulator_1
    privileged: true
    # Increase scale number if needed
    scale: 1
    ports:
      - 6080
    # Change path of apk that you want to test. I use sample_apk that I provide in folder "example"
    volumes:
      - ./video-nexus_7.1.1:/tmp/video
      - ./local_backup/.android:/root/.android
      - ./local_backup/android_emulator:/root/android_emulator
    environment:
      - DEVICE=Nexus 5
      - CONNECT_TO_GRID=true
      - APPIUM=true
      - SELENIUM_HOST=selenium_hub
      - AUTO_RECORD=true

Update:

it seems like the file devices.xml is not created under the .android directory which causes the is_initialized() function to return False

cesarandreslopez commented 5 years ago

The same issue is seen here too. Did you ever get to fix it? @omritoptix

cesarandreslopez commented 5 years ago

A bit more data in case anyone else encounters this issue. I've found that if before stopping and rm the container I turn off the emulator phone on novnc, this issue goes away.

K4W1H0R53 commented 5 years ago

same issue as above, i try to use docker volume, but it still not save any changes in avd every time i restart/stop the container.

cleancoderob commented 4 years ago

In the file src/app.py there is a lookup for 'hw.device.name={}', however in the config file for my emulator (Nexus 5), there are spaces around the equals sign. I changed it to 'hw.device.name = {}' and then re-built the image. It now works fine for me, remembering the avd state.

cleancoderob commented 4 years ago

The spacing issue appears to depend on the API version. I moved from API 27, where the spaces were needed, back to API 23, where the spaces must be removed.