Ich habe eine Anwendung erstellt, die Schnittstellen und Klassen sowie Berechtigungen aus der versteckten API verwendet. Jetzt möchte ich eine flashbare Zip-Datei erstellen, die die apk als System-App installiert. Wenn ich richtig liege, muss ich die apk-Datei mit dem Zertifikat des aktuellen ROMs signieren (wegen der versteckten API-Nutzung).
Um so systemlos wie möglich zu sein, dachte ich, es wäre großartig, das Zertifikat aus dem ROM zu extrahieren und die apk innerhalb des Flash-Prozesses zu signieren, bevor sie in den internen Speicher kopiert wird. Ist das möglich?
Oder habe ich etwas falsch verstanden und es ist viel einfacher als ich denke?
Es scheint, dass Sie hier einige Missverständnisse haben: Um ein Paket zu signieren, benötigen Sie den Schlüssel, den Sie nicht aus dem ROM extrahieren können (er ist nicht dort oder es wäre ein Sicherheitsproblem). Sie benötigen diesen Schlüssel also nur, wenn Ihre App Berechtigungen anfordert, die mit dem Level ¹ geschützt sind signature
(dafür signatureOrSystem
reicht es aus, sie zu einer System-App zu machen).
Aus Ihrer Frage kann ich nicht sagen, in welche Kategorie die Berechtigungen Ihrer App fallen – aber das würde hier ohnehin den Rahmen sprengen, da sich Android.SE auf Endbenutzer konzentriert. Um das zu verdeutlichen, sind Sie mit Stack Overflow besser dran .
¹ Offenlegung: Link führt zu meiner Seite
Ich habe selbst einige Experimente mit System-Apps durchgeführt. Ich sage das also aus Erfahrung – Wenn Sie eine Release-App von Android Studio erstellt haben (versuchen Sie, die Debug-Releases zu vermeiden), benötigen Sie kein Zertifikat-Patching. Fahren Sie fort und erstellen Sie eine flashbare ZIP-Datei mit den entsprechenden Berechtigungen ( 0644
), die die App einfügt, /system/app/
oder /system/priv-app/
wenn Sie vollen Zugriff auf einige der Systemberechtigungen benötigen.
Ich rate Ihnen, zuerst zu versuchen, die App manuell mit einem beliebigen Root-Explorer in das /system
Verzeichnis zu stellen, da flashbare Zips überwältigend werden können, wenn sie in wenigen Versuchen nicht funktionieren.
Cilenco
Izzy
privileged
sollte es ausreichen, den.apk
in zu platzieren/system/priv-app/
(wie Chinmay betonte ). Laut den Entwicklerdokumenten wurde diessystem
für api 24+ ersetzt (siehe DetailsPROTECTION_FLAG_SYSTEM
dort). Siehedevelopment
den ersten Link, den ich in meiner Antwort angegeben habe.Cilenco
Izzy