2017-09-25 2 views
2

Ich muss den vorhandenen Android-Emulator mit den darin enthaltenen Änderungen (qcow2-Dateien) in das Docker-Image einschließen.Vorhandenen Android-Emulator (AVD) in den Docker-Container verschieben

Sequenzierung:

1) Erstellen Sie einen Emulator über den Android Studio

2) Führen Sie es mit der -writable-system Option

emulator -avd xposed -writable-system 

3) Nehmen Sie die notwendigen Änderungen (Xposed Installation, einige Xposed Module, Datenaufzeichnung auf der SD-Karte und so weiter). All diese Änderungen qcow2 Schreiben von Dateien (system.img.qcow2, sdcard.img.qcow2 usw.) Stoppen

4), um den Emulator

5) zu archivieren

cd /home/user/.android/avd && tar -cvzf xposed.tar.gz . 

6) in der docker-Datei:

ADD xposed.tar.gz /root/.android/avd 

7) in xposed.ini Änderung absoluten Pfad zu der Emulator Instanz

path=/root/.android/avd/xposed.avd 

Wenn Sie versuchen, den Emulator im Andockfenster auszuführen, werden die qcow2-Dateien mit Änderungen neu erstellt und nicht verwendet. :(

Ich erhalte die gleichen android-sdk-Tools und Emulator-Versionen, die gleiche JDK und so weiter.

auch Pfade in harware-qemu.ini auf die neue zu ändern versuchen (/root/.android/avd/xposed/....) aber kein Glück

Einige Informationen über System und docker.

1) Android-Version 23 (6.0) x86 google_apis Bild

2) Führen Sie docker Befehl:

sudo docker run -d -p 5900:5900 -p 5555:5555 --privileged -v /dev/kvm:/dev/kvm --name xposed xposed 

3) Führen Android-Emulator-Befehl:

usr/local/android-sdk/emulator/emulator -avd xposed -noaudio -no-window -gpu off -verbose -qemu -usbdevice tablet -vnc :0 

ich wirklich wissen, don `t, was zu tun ist. Es ist real, einmal habe ich ein Glück, ich bekomme es und es hat gut funktioniert, aber ich habe diesen Zustand verloren und jetzt passiert nichts mehr :(

Übrigens werde ich einen Fehler bekommen, wie:

avd\system.img.qcow2,read-only: Could not open backing file: Could not open ..... 

Aber jetzt keine Fehler, es ist nur meine Dateien überschreiben :(

Antwort

1

hatte ich das gleiche Problem, wenn der Emulator von dem Host zu einem docker Behälter Kopieren: der Emulator innerhalb docker würde immer starten (in der besten Fall) sauber wie nach einem Werksreset, alle meine Änderungen ignorierend. So habe ich das Problem gelöst:

  • Ich startete den Emulator in den Docker Container und ich installierte alles, was ich brauchte (Xposed, benutzerdefinierte apks etc.), während der Emulator in Docker lief.
  • Nachdem der Emulator eingerichtet wurde, wie ich es wollte, habe ich ausgeschaltet und kopierte das Verzeichnis /root/.android/avd/<emulator name> aus dem Andock-Container zum Host-Computer (mit docker cp Befehl). Auf diese Weise erhielt ich eine Sicherungskopie des Emulators mit allen benutzerdefinierten Einstellungen, die mit Docker verwendet werden können.
  • Ich habe ein neues Docker-Image erstellt, das alle SDK-Tools und Tools enthält, die zum Ausführen des Emulators benötigt werden, und ich habe das zuvor gespeicherte Verzeichnis /root/.android/avd/<emulator name> hinzugefügt. Wenn ich nun einen Andock-Container aus dem neuen Image starte, habe ich einen funktionierenden Emulator mit allen Einstellungen, die ich brauche.

Bonus-Tipp: Wenn Sie die Snapshot-Funktion des Emulators verwenden möchten, müssen Sie die Änderungen in dem Behälter zu einem neuen Bild begehen (siehe docker commit Befehl) und verwenden Sie dann das neue Bild, das Kopieren Sie einfach den avd Das Verzeichnis funktioniert in diesem Fall nicht und Ihr Snapshot wird immer ignoriert.

Verwandte Themen