Die meisten Fragen, die ich dazu finden kann, stammen aus dem Jahr 2011 und ungefähr so. Vielleicht ist es nicht allzu überraschend, dass sich die Dinge seitdem geändert haben. Ich habe eine ganze Reihe von Dingen ausprobiert, ohne irgendwelche Ergebnisse.
Es gibt einige Skripte in /system/etc/init.d
(die auch /etc/init.d
auf meinem Gerät unter angezeigt werden). Insbesondere gibt es ein 00banner
Skript, das eine Willkommensnachricht protokollieren soll. Die Begrüßungsnachricht wird in logcat nie angezeigt.
Ich habe hier mein eigenes Skript platziert, das schließlich auf nichts anderes reduziert wurde:
#!/system/bin/sh
log -t mytest Testing
Nichts. Wird in logcat nur angezeigt, wenn es manuell über das Terminal ausgeführt wird. Dann funktioniert es.
Hier gibt es auch eine 90userinit
Datei, die aufgerufen wird, /data/local/userinit.sh
falls vorhanden. Ich habe es mit dem gleichen Inhalt wie oben erstellt. Auch hier wird in logcat nie etwas angezeigt. Was eigentlich nicht überraschend ist, denn wenn00banner
es nicht läuft, dann auch nicht.
Ich habe nach etwas mit dem Namen "init.rc" gesucht, aber nichts dergleichen existiert irgendwo auf meinem Gerät.
Alle meine Skripte haben 755 Berechtigungen.
Was kann ich noch versuchen? (außer Apps, die Skripte für mich ausführen)
quelle
Antworten:
Es gibt eine einfache Methode, um init.d-Unterstützung zu jedem gerooteten Android für Versionen 4.0 und höher hinzuzufügen. Google hat ein Skript erstellt, das beim Booten als Superuser ausgeführt wird. Das Skript
install-recovery.sh
wird verwendet, um die Wiederherstellung des Bestands bei jedem Start neu zu starten, den sie für gut hielten Sicherheit, um benutzerdefinierte Wiederherstellungen zu verhindern, aber es wurde eine neue Lücke geöffnet, die von Benutzern ausgenutzt werden kann, um die Funktion init.d zu fälschen. Abhängigkeiten : Damit diese Methode funktioniert, benötigen Sie Folgendesrun-parts
Symlink zu Ihrem Pfad wie/system/xbin
/system
als montiert werden kannrw
Methode I: (Der einfachste Weg!)
Methode II: (Schwierigkeitsgrad: mittel)
Laden Sie diese Zip- Datei herunter, entpacken Sie sie und setzen Sie init.sh auf Ihre SD-Karte (in diesem Beispiel kann es sein, dass
/sdcard
sie von Gerät zu Gerät wechseln kann.Öffnen Sie jetzt ein Terminal oder verwenden Sie es
adb shell
vom Computer aus und führen Sie das Skript aus.su
cp /sdcard/init.sh /data/tmp/init.sh
chmod 777 /data/tmp/init.sh
/data/tmp/init.sh
Das Skript wird ausgeführt und fordert Sie auf, zweimal neu zu starten. Sie haben offiziell die init.d-Unterstützung: D.
Referenz: [MOD] [APK + SCRIPT + ZIP] Aktivieren Sie Init.d für alle Telefone ohne benutzerdefinierte Kernel !!!
quelle
Bearbeiten: Ich habe das Ende des Beitrags gesehen. Auf diese Weise werde ich versuchen, so schnell wie möglich ohne Apps hinzuzufügen (nicht zu Hause, Veröffentlichung mit dem Handy), aber Sie können dies verwenden, wenn etwas anderes nicht funktioniert.
Sie können versuchen, die App Tasker zu verwenden .
Es kostet 3,29 $ und erfordert Root-Zugriff, kann aber Shell-Skripte ausführen. Außerdem gibt es eine Testversion, die Sie vor dem Kauf ausprobieren können.
Erstellen Sie zuerst eine Aufgabe. Gehen Sie zur Registerkarte Aufgabe, tippen Sie auf + Zeichen und geben Sie den Namen der Aufgabe ein. Gehen Sie jetzt erneut + unterschreiben Sie und geben Sie den
shell
Filter ein. Sie finden die OptionRun Shell
, wählen sie aus und konfigurieren sie gemäß Ihren Anforderungen.Gehen Sie danach zurück zur ersten Registerkarte - Profile, tippen Sie auf + Zeichen, um neue zu erstellen. Wählen Sie Ereignis als Typ, gehen Sie zu System und wählen Sie Gerätestart. Gehen Sie zurück und Sie werden aufgefordert, die Aufgabe auszuwählen. Wählen Sie nun die zuvor erstellte Aufgabe aus und Sie können loslegen!
quelle
Dazu müssen Sie eine Zip-Datei flashen, aber dann können Sie Ihre Skripte in / system / etc / startup ablegen und sie sollten dann automatisch mit dem Telefon gestartet werden.
http://forum.xda-developers.com/showthread.php?t=2664645
Auch aus meinem Kommentar unter der Frage. Ich habe versucht, in meiner Geschichte nachzuschauen, aber ich konnte den Link nicht finden, bei dem Leute behaupteten, CM habe ihre eigene Art, Skripte beim Booten auszuführen.
Bearbeiten. Nach einigem Graben ist es nicht CM, der seine eigene Sache für Skripte macht. Es ist der Kernel. Nicht alle Kernel unterstützen init.d für Android. Wenn Sie angeben, welches Gerät Sie verwenden. Ich kann mich nach einem Kernel umsehen, der beim Booten benutzerdefinierte Skripte unterstützt.
quelle
Ich habe auch das gleiche Problem beim Ausführen der Skriptdatei im Terminal in CM12.1. Die Lösung besteht darin, das Skript in einen
/data
Ordner zu kopieren und auszuführen. Daher denke ich, dass CM 12 nur ausführbare Skripts von einem bestimmten Speicherort aus zulässt.quelle
Einfacher Weg (arbeiten):
Bereiten Sie Ihre Post-Boot-Befehle in einem Skript vor, z. B. / system / xbin / post-boot (set exec perm)
Fügen Sie den obigen benutzerdefinierten Skriptpfad am Ende von /system/etc/init.qcom.post_boot.sh hinzu
Z.B:
echo / system / xbin / post-boot >> /system/etc/init.qcom.post_boot.sh
Erledigt!
(Wenn Sie das qcom post_boot (Qualcomm-Geräte) nicht finden können, suchen Sie nach post_boot-Skripten.)
quelle
Befolgen Sie die Schritte zum Ausführen von Skripten beim Booten. (Erforderliche adb)
es funktioniert für mich. Ich hoffe das hilft dir.
quelle