Hoffentlich brauchen Sie nicht ...
Typische Lager Android ROMs Root-Rechte nur sehr wenige Dinge bieten, im Einklang mit dem principle of least privilege. Stattdessen erhalten Apps genau die Berechtigungen, die sie benötigen.
Warum genau benötigen Sie diese App, um Root-Berechtigungen zu haben? Sie sollten zuerst durch die Liste von all the internal unpublished Android permissions schauen, um zu sehen, ob einer von ihnen tut, was Sie wollen. Da Sie eine System-App erstellen, können Sie sogar signature
Berechtigungen verwenden, die normalerweise für andere Apps nicht verfügbar sind. Sie müssen lediglich sicherstellen, dass Ihre App mit dem Schlüssel signiert ist, mit dem Sie das Android-ROM erstellen - Sie können es dann mit dem ROM oder separat verteilen und es hat weiterhin Zugriff auf die erforderlichen Berechtigungen.
Die Vorteile es auf diese Art und Weise zu tun, sind:
- Wenn Ihre Anwendung beeinträchtigt wird oder Buggy, die Auswirkungen begrenzt sind.
- Ihr tatsächlicher Java-Code verfügt über diese Berechtigungen, sodass Sie keine fiddly-Befehlszeilen erstellen müssen.
Also, wenn Sie Ihre Aufgabe auf diese Weise tun können, tun Sie.
Aber wenn Sie wirklich tun ...
Wenn Sie wirklich root tun müssen, dann werden die Dinge kompliziert.
Sie haben drei Möglichkeiten. In der Reihenfolge der Priorität:
- Fügen Sie einen neuen Systemdienst hinzu.
- Fügen Sie eine alternative setuid-root-Binärdatei hinzu, die genau das tut, was Sie brauchen.
- Ändern Sie die
su
Binärdatei, um genau zu überprüfen, wer sie anruft.
Wenn Sie wirklich Wurzel benötigen, dann würde ich add a new system service. Dies kann als root ausgeführt werden. Sie fügen dann geeignete zusätzliche APIs hinzu, damit Ihre App sie aufrufen kann - und die Berechtigungen können signature
-level lauten, sodass nur Ihre System-App sie aufrufen kann. Dies ist der architektonisch "richtige" Weg, dies in Android-Land zu tun.
Die zweite oder dritte Option umfasst das Erstellen eines Befehlszeilentools, das das ausführt, was Sie möchten, aber ich kenne keinen sicheren Weg für ein solches Tool, um zu überprüfen, wer es aufruft. Es kann akzeptabel sein, dass jede App diese Funktionalität aufruft. Wenn ja, könnte eine neue setuid-root ausführbare Datei der richtige Weg sein. Wie ich jedoch sage, ich weiß nicht, wie ich andere Apps davon abhalten kann.
Installieren Sie es zu System/App anstelle von Daten/App –
Installation in System/App gewährt nicht automatisch Root-Zugriff. –