2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Erste Adresse:https://mp.weixin.qq.com/s/1e8er_amC94DTVCaNbSuUw
Der Zweck dieser Sache besteht nicht darin, Spiele oder ähnliches zu spielen, sondern beim Reverse Engineering der APP weniger vom Mobiltelefon abhängig zu sein. Schließlich sind die Schritte zum Flashen eines Mobiltelefons ziemlich nervig und es kann leicht kaputt gehen, wenn man nicht aufpasst.
Beispielsweise können einige Apps, die keine strengen Umwelttests erfordern, darauf getestet werden, was es auch einfacher macht, den Systemquellcode zu ändern und die Maschine später zu flashen. Schade ist jedoch, dass der Kernel nicht angepasst werden kann (redroid und Waydroid verwenden beide Containerlösungen und teilen den Kernel mit dem Host). Wenn Sie den Kernel anpassen möchten, können Sie nur Cuttlefish oder avd von Google verwenden, diese bieten jedoch nur begrenzte Unterstützung am Arm und kann ausgeführt werden, aber es gibt keine GPU-Beschleunigung, daher werde ich es später mit Tintenfisch versuchen.
Ich werde nicht auf den Prozess der Aktualisierung von Ubuntu mit Orange Pie eingehen. Wenn Sie interessiert sind, lesen Sie bitte den vorherigen Artikel:Orange Pie 5plus startet Ubuntu von der SSD . Wenn Sie dieses System flashen, müssen Sie nichts installieren oder konfigurieren, um Redroid auszuführen. Wenn Sie jedoch virtuelles WIFI oder ebpf verwenden möchten, müssen Sie die Kernel-Parameter noch ändern und den Linux-Kernel selbst kompilieren. In diesem nächsten Artikel wird speziell auf den Kompilierungsprozess eingegangen.
Offizielles Tutorial:https://github.com/remote-android/redroid-doc
grep binder /proc/filesystems
grep ashmem /proc/misc
Wenn nichts gedruckt wird, müssen Sie es möglicherweise manuell starten (ich verwende einfach die folgenden zwei Befehle auf einem Computer, auf dem Ubuntu Kunpeng 920 installiert ist. Obwohl dieser Computer über eine AMD-Grafikkarte verfügt, kann er die GPU nicht direkt aufrufen.)
sudo modprobe ashmem_linux
sudo modprobe binder_linux devices=binder,hwbinder,vndbinder
Wenn diese beiden Befehle einen Fehler melden oder keine Wirkung haben, kann es sein, dass der aktuelle Linux-Kernel diese beiden Funktionen nicht aktiviert. Sie müssen die folgenden Warehouse-Anweisungen befolgen, um einen unterstützten Kernel zu installieren oder einen Kernel zu kompilieren, um diese beiden Funktionen zu aktivieren :https://github.com/remote-android/redroid-modules
Es kann mit dem offiziellen Docker-Image gestartet werden, es gibt jedoch keine GPU-Beschleunigung und das Video wird weich dekodiert (CPU-Simulation), sodass der Vorgang in Github relativ verzögert istAusgabe[1]Suchen Sie nach rk3588 und Sie können mehrere Kommentare zur GPU-Beschleunigung sehen.
Aber niemand hat zuvor mitgeteilt, wie man ein Bild mit GPU-Beschleunigung kompiliert. Die Kommentare können nur eine einigermaßen hilfreiche Schlussfolgerung ziehen: Besorgen Sie sich einige GPU-Beschleunigungs-Treiberdateien aus dem offiziellen SDK-Quellcode von Orange Pi und fügen Sie sie in Android zusammen Quellcode. Oder kopieren Sie diese Dateien direkt in den Docker-Container und starten Sie den Container neu.
Diese Schlussfolgerung ist zu vage und es muss viele Fallstricke geben, deshalb habe ich es nicht versucht.Bis ein großer Kerl ein komplettes herausgabKompilierungsprozess und Quellcode[2]:
Das Tutorial ist sehr detailliert geschrieben. Sie können es einmal kompilieren und durch Befolgen der Schritte weitergeben. Zusätzlich,Und der Chef[3]Basierend auf diesem Bild wurde etwas hinzugefügt.
Verwenden Sie dies also hierSpiegelbild des Chefs[4]Schauen Sie sich vorher die von ihm erwähnten Abhängigkeiten an (Kernel-Version 5.10.160 und Mali ddk g18p0):
Das sollte kein Problem sein. Er erwähnte auch, dass er es tun würdemali_csffw.bin
Datei kopiert nach/lib/firmware/
Als nächstes habe ich nachgesehen und festgestellt, dass sich diese Datei in diesem Ordner befindet.
Der Standardwert ist verknüpftg15p0
, also löschen wir diesen Softlink und erstellen einen neuen Link zug18p0
.Nach dem Testen jedoch verwendeng15p0
Der Redroid-Container der Version kann die GPU auch normal verwenden.
Der Test des Bürstenvideos ist in Ordnung. Ich kann nur sagen, dass es nicht klemmt oder glatt ist. Schließlich ist die aktuelle Mobiltelefonkonfiguration bereits sehr hoch und es ist viel flüssiger als dieses Entwicklungsboard.
sudo apt install docker.io -y
sudo usermod -aG docker $USER
sudo chmod a rw /var/run/docker.sock
Die letzten beiden Befehlszeilen dienen dazu, dass normale Benutzer Docker ausführen können, ohne sudo hinzuzufügen.
Ziehen Sie dann das Bild: docker pull cnflysky/redroid-rk3588:12.0.0-latest
。
docker run -d --privileged
-p 5555:5555
-v ~/redroid-data:/data
--name redroid
cnflysky/redroid-rk3588:12.0.0-latest androidboot.redroid_height=1920 androidboot.redroid_width=1080 androidboot.redroid_magisk=1 androidboot.redroid_virt_wifi=1
Verwenden Sie dann adb, um eine Verbindung zu diesem Port herzustellen (adb connect 192.168.31.208:5555
) kann verwendet werdenQtScrcpy
Sehen Sie sich den Desktop dieses Containers an
Installieren Sie zuerst aida64, um zu sehen, ob die Grafikkartenaufrufe normal sind:
Wenn Sie die Mali-G610-Grafikkarte zum Rendern verwenden, gibt es kein Problem und die Bildwiederholfrequenz beträgt 60 Hz. Wenn Sie eine Soft-Lösung verwenden, beträgt die Bildwiederholfrequenz nur 15 Hz.
Wenn dieser Container gestartet wird, bringt er aandroidboot.redroid_magisk=1
Schalten Sie einfach Magisk ein, damit Sie sehen können, dass Magisk nach dem Einschalten des Computers normal läuft. Beim ersten Klicken müssen Sie möglicherweise neu startendocker restart redroid
Nach dem Neustart kann es normal verwendet werden.
Öffnen Sie zuerst Zygisk in Magisk und verwenden Sie dann den Befehl ADB Push, um das lsposed-Installationspaket in den Container zu verschieben. Installieren Sie es dann in Modules, starten Sie es neu und Sie werden sehen, dass lsposed auch normal läuft.
Installieren Sie einfach ein xposed-Modul und Sie können die lsposed-Einstellungsoberfläche aufrufen.
Es ist offiziellLernprogramm[5]Erklären Sie, wie Sie ein Docker-Image mit Gapps kompilieren. Allerdings kommt es selbst mit Gapps nicht an Google vorbei.safetynet
Verifizierung, viele Apps können nicht genutzt werden.
Jemand hat in der Ausgabe auch gefragt, aber es gibt keine Lösung:https://github.com/remote-android/redroid-doc/issues/378
. Die heruntergeladenen Bilder umfassen den Google Store.
Wenn Sie nach dem Lesen des Problems kein virtuelles WLAN einrichten, stellt einige Software fest, dass kein Netzwerk vorhanden ist, selbst wenn ein Netzwerk vorhanden ist, z. B. QQ. Denn sie erkennen nur WLAN und Datenverkehr, die beide im Docker-Container nicht verfügbar sind. Mein Test ergab jedoch, dass viele Softwareprogramme mit virtuellem WLAN zwar anzeigen, dass kein Netzwerk vorhanden ist, das Internet jedoch normal funktioniert, ohne das virtuelle WLAN einzuschalten. Es wird daher empfohlen, es nicht einzuschalten, sondern nur zu wissen, dass es so etwas gibt .
Wir brauchen also ein virtuelles WLAN im Container, das brauchen wirKernel-Unterstützung[6]
sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
wechseln zuip6tables-legacy
Danach muss Docker den Dienst neu startensudo systemctl restart docker
, ist ein Neustart der Maschine nutzlos und der Container wird vom Internet getrennt.
Der installierte Systemkernel aktiviert diesen Parameter nicht.zcat /proc/config.gz | grep CONFIG_MAC80211_HWSIM
Der von Github bereitgestellte Kernel-Code ist sehr einfach zu kompilieren und kann in einem Schritt kompiliert werden. Leider gibt es keine Möglichkeit, die Kernel-Parameter zu ändern, und wenn Sie die Kernel-Konfigurationsdatei ändern, wird sie während der Kompilierung wieder geändert.
Nachdem ich einige Tage lang gekämpft hatte, ging ich alle Fragen in der Ausgabe durch und konnte keine Antwort finden, als mir das Kompilierungsskript selbst anzusehen. Dieser spezifische Prozess wird im nächsten Artikel besprochen Der Kernel wird hier bereitgestellt.
Download-Adresse des Kernel-Deb-Pakets, die vom System verwendet wirdUbuntu22[7]:https://www.123pan.com/s/ihEKVv-TbOx.html
Extraktionscode:AZ3A
. Zusätzlich zu den oben genannten Parametern habe ich auch ebpf-bezogene Parameter hinzugefügt, die später besprochen werden.
Zuerst mituname -a
Überprüfen Sie die aktuellen Kernel-Informationen
Übertragen Sie zunächst die kompilierte Kerneldatei auf den Computer und führen Sie sie dann aussudo dpkg -i *.deb
, es gibt insgesamt fünf Deb-Dateien. Die erste enthält die Build-Informationen und muss nicht installiert werden.
Dann benutzesudo reboot
Starten Sie neu und überprüfen Sie die Kernel-Informationen.
Auch die Kernel-Parameter sind normal aktiviert:
Nach der Aktualisierung des Kernels und dem Neustart wird der ursprünglich erstellte Container vom Internet getrennt und nur die später erstellten Container können normal auf das Internet zugreifen. Zuerst dachte ich, es gäbe ein Problem mit dem Kernel, also musste ich das System aktualisieren und den Kernel neu kompilieren.
Obwohl eine Internetverbindung besteht, kann das Video von Station B nicht aktualisiert werden. Ich kann nur die Startseite aktualisieren und der Browser kann nicht auf die Webseite zugreifen. (Hinweis: Sie müssen zuerst zu den Einstellungen gehen, um eine Verbindung zum virtuellen WLAN herzustellen, bevor Sie eine Verbindung zum Internet herstellen können.)
Gemäß den Anweisungen hier:https://github.com/CNflysky/redroid-rk3588/issues/2
Nur garantierte drahtlose Verbindung?Obwohl ich nicht verstehe, was es bedeutet. Könnte es sein, dass es nur eine Route geben kann?ip route
Standardmäßig gibt es zwei Routen
Das zweite ist virtuelles WLAN. Wie wäre es, wenn ich das erste lösche und es versuche: ip route del 192.168.200.0/24 dev radio0 proto kernel scope link src 192.168.200.2
Ich habe festgestellt, dass das Video manchmal abgespielt werden kann, wenn eine Internetverbindung besteht. Meistens bleibt es hängen und das Laden des Videos dauert einige Zeit. Das Aktualisieren der Homepage geht jedoch sehr schnell schnell. Das Ändern des DNS hilft auch nicht. Ich werde später eine andere Software ausprobieren, um zu sehen, ob das Gleiche passiert.
Sie können sich beziehen auf:https://github.com/CNflysky/redroid-rk3588/issues/5
, ich werde es nicht versuchen. Gemäß der Anleitung von Redroid kann man beim Start auch den Agenten angeben. Wenn Sie VPN global festlegen, kann es sein, dass ADB die Verbindung trennt.
Es könnte fehlschlagen, versuchen Sie es einfach noch ein paar Mal.
https://github.com/remote-android/redroid-doc/issues?q=rk3588
https://github.com/redroid-rockchip
https://blog.csdn.net/CNflysky/article/details/136452455
https://github.com/CNflysky/redroid-rk3588
https://github.com/remote-android/redroid-doc/blob/master/android-builder-docker/README.md
https://github.com/redroid-rockchip/vendor_redroid_ext/tree/master/wifi
https://github.com/Joshua-Riek/ubuntu-rockchip/releases