Firefly Technology Case - Android in Docker

0 Kommentare

Docker ist eine Open-Source-Containerisierungplattform zum Verpacken, Verteilen und Ausführen von Anwendungen. Indem es die Anwendung und alle ihre Abhängigkeiten in unabhängige Container verpackt, stellt es sicher, dass Anwendungen in verschiedenen Umgebungen konsistent laufen. Docker bietet schnelle Bereitstellung, starke Isolation und effiziente Ressourcennutzung und wird weit verbreitet in Entwicklungs-, Test- und Produktionsumgebungen eingesetzt.

Android in Docker

Der Android-Container wird über Docker im Hostsystem ausgeführt. Unter Nutzung der Eigenschaften von Docker können wir die Gerätenodes des Hosts auf den Android-Container abbilden. Da der Container und der Host einen gemeinsamen Kernel nutzen, kann der Android-Container direkt die Hardwarebeschleunigungseinheiten der Rockchip-Plattform aufrufen: GPU, VPU, NPU, RGA usw.

Android in Docker - Bereitstellung

Host-Bereitstellung

Firefly bietet das Host-Firmware für mehrere Modelle an. Benutzer müssen lediglich die passende Firmware-Version gemäß dem verwendeten Modell auswählen und es upgraden, um die Host-Bereitstellung einfach abzuschließen.

Android-Container-Bereitstellung

(1) Wenn der Host-Rechner mit dem Internet verbunden ist, kann der Container-Ordner effizient über den SCP-Befehl in das /userdata/-Verzeichnis des Linux-Host-Rechners übertragen werden.

  1. scp -r ./AIC/container root@xxx.xx.xx.xx:/userdata/

(2) Gehen Sie in den Container-Ordner.

  1. cd /userdata/container

(3) Führen Sie beim ersten Start das Initialisierungsskript aus.

  1. ./aic.sh -i

(4) Warten Sie, bis die Initialisierung abgeschlossen ist, und führen Sie dann aus.

  1. ./aic.sh -r <Android Image.tgz><Anzahl der Container>

Demo:

Hinweis: Das Netzwerk verwendet standardmäßig die Portzuordnung.

  1. <Host-IP>:1100 --> <Container 0>:5555
  2. <Host-IP>:1100 --> <Container 1>:5555
  3. ....

Wenn Sie tiefere Anpassungen am Host oder am Android-Container vornehmen möchten, können Sie sich an uns wenden, um den vollständigen Quellcode zu erhalten.

Debugging und Nutzung

Containerverwaltung

(1) Zeigen Sie alle Container an (einschließlich der angehaltenen Container).

  1. docker ps -a

(2) Entfernen Sie den Android-Container.

  1. docker rm -f <Container-ID oder -Name>

(3) Stoppen Sie den laufenden Container.

  1. docker stop <Container-ID oder -Name>

(4) Starten Sie einen angehaltenen Container.

  1. docker start <Container-ID oder -Name>

Container-Debugging

(1) Greifen Sie auf einen laufenden Container zu.

  1. docker exec -it <Container-ID oder -Name> sh

(2) Zeigen Sie die CPU- und Speicherauslastung des Containers an.

  1. docker stats

(3) Zeigen Sie alle Container an (einschließlich der angehaltenen Container).

  1. docker cp lokale Datei Container-ID: Pfad im Container

(4) Verschieben Sie Dateien von anderen Geräten im lokalen Netzwerk in den Docker-Container.

  1. adb connect Host-IP: Portnummer
  2. adb -s 172.16.11.92:1102 push lokale Datei Container-ID: Pfad im Container

Hinweis: Fireflys Standard-Docker-Netzwerkkonfiguration ist das Docker0-Brückenmodus, d. h. das Portzuordnungsschema. Wenn Sie es ändern, um ein Macvlan-Netzwerk zu verwenden, muss der Connect-Befehl die Container-IP plus Portnummer 5555 verwenden

  1. adb connect Container-IP:5555

(5) Netzwerk-Bildschirmübertragung.

Verwenden Sie das Open-Source-Tool scrcpy: https://github.com/Genymobile/scrcpy

  1. scrcpy -s Container-IP: Portnummer

Leistungstest

  • Gerät: ITX - 3588J
  • Firmware: ITX - 3588J_Ubuntu20.04 - Minimal - r3104_v1.3.0c_241107.img
  • Sechs Android-Systeme laufen gleichzeitig auf ITX - 3588J

(1) Führen Sie den Host im Leistungsmodus aus.

  1. # Es ist normal, wenn ein "Ungültiges Argument" angezeigt wird. Ignorieren Sie es einfach.
  2. root@firefly:~# echo performance | tee $(find /sys/devices -name governor)
  3. performance
  4. tee: /sys/devices/system/cpu/cpuidle/current_governor: Ungültiges Argument

(2) Halten Sie Ihre CPU gut gekühlt und die Temperatur unter 80 Grad Celsius.

  1. root@firefly:~# cat /sys/class/thermal//temp
  2. 54538
  3. 56384
  4. 56384
  5. 55461
  6. 52692
  7. 51769
  8. 52692
  9. root@firefly:~# cat /sys/bus/cpu/devices/cpu*/cpufreq/cpuinfo_cur_freq
  10. 1800000
  11. 1800000
  12. 1800000
  13. 1800000
  14. 2256000
  15. 2256000
  16. 2256000
  17. 2256000

(3) Spieltest-Demonstration

In den praktischen Tests haben wir festgestellt, dass der RK3588-Prozessor mithilfe der AIC-Technologie (Android in Docker) mehrere Android-Systeme parallel im höchsten Leistungsstatus effizient ausführen kann. Wenn jedoch sechs Android-Container gleichzeitig laufen, teilen sie sich die CPU-Ressourcen. Wenn die CPU-Anforderungen dieser Container gleichzeitig stark ansteigen, kann dies die Benutzererfahrung beeinträchtigen. Im Vergleich dazu ist die Belastung der CPU bei der Ausführung von vier Android-Containern relativ moderat, und die gegenseitige Beeinflussung zwischen den Containern ist relativ gering. Daher kann die Anzahl der zu öffnenden Container flexibel gemäß den spezifischen Anwendungsfällen und Bedürfnissen festgelegt werden.

Dank der hervorragenden Unterstützung der AIC-Technologie wurde das Potenzial der Firefly-Server vollends ausgeschöpft. Bei der Verwendung des mit dem RK3588-Prozessor ausgestatteten Firefly B1-Servers in einer 10-Knoten-Konfiguration, auf dem jeder Knoten unabhängig sechs Android-Systeme ausführt, werden 60 Android-Systeme parallel betrieben. Dies demonstriert die starke Stärke der AIC-Technologie. Der auf 72 Knoten upgradierte B2-Server verfügt über bis zu 432 Systeme, was die Anzahl der Android-Container erheblich erweitert.


Qt Environment Deployment - Ubuntu

Hinterlasse einen Kommentar

Bitte beachte, dass Kommentare vor der Veröffentlichung freigegeben werden müssen.