Wie installiere ich eine apk als Systemanwendung?

Ich versuche, eine Anwendung im System-/App-Ordner eines Geräts zu installieren. Es muss getan werden, da ich ein QAT-Programm schreibe und die Tests mit einigen Privilegien ausgeführt werden müssen, die Apps von Drittanbietern nicht zur Verfügung stehen.

Ich habe bereits den Firmware-Signaturschlüssel des Geräts und muss die sharedUserId der Anwendung auf android.uid.system setzen. Es gibt mir jedoch immer eine Fehlermeldung "INSTALL_FAILED_SHARED_USER_INCOMPATIBLE" .

Irgendwelche Ideen, wie ich das beheben kann?

Was genau gibt dir diese Fehlermeldung? Bitte fügen Sie die Schritte hinzu, die Sie unternehmen.
Es ist der Paketmanager. Eine mögliche Ursache ist, dass ich das Zertifikat selbst mit keytool und den entsprechenden Angaben erzeuge, die Anwendungen des Systems aber anscheinend mit einem Zertifikat mit einer anderen Gültigkeit als meiner signiert wurden, da es zu einem früheren Zeitpunkt erstellt wurde. Könnte das das Problem sein, mit dem ich konfrontiert bin?

Antworten (3)

Wenn Sie nicht über Root verfügen, um dem manuellen Installationsverfahren zu folgen, das Demizey beschreibt, muss die App mit demselben Schlüssel signiert werden, mit dem das ROM signiert ist. das heißt, derselbe Schlüssel, mit dem die vorhandenen System-Apps signiert sind. Dies ist eine Sicherheitsvorkehrung: Andernfalls könnte jeder eine App schreiben, die auf jedem Gerät mit vollem Systemzugriff ausgeführt würde.

Habe diese Anweisungen gefunden, um PowerManagerPro in zu installieren /system/app, habe sie nur ein wenig modifiziert. (Hinweis: Installieren Sie zuerst die App in /data/app, wie Sie es mit jeder anderen App tun würden, und Sie benötigen ein gerootetes Gerät.)

Öffnen Sie eine Terminal-Emulator-App und führen Sie den folgenden Befehl aus, um die Anwendung auf die SD-Karte zu kopieren:

so
cp /data/app/ your.apk /sdcard/ your.apk

/data/appWenn Sie die Anwendung in try nicht finden können /data/apps-private/. Deinstallieren Sie dann Ihre App vom Gerät.

Führen Sie die folgenden Befehle im Terminalemulator aus, um das /systemVerzeichnis als Lese-/Schreibzugriff neu einzuhängen und die Anwendung in das /system/appVerzeichnis zu installieren:

so
mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system
cp /sdcard/ your.apk /system/app

Wenn Sie es vorziehen, adb von Ihrem Computer aus zu verwenden, führen Sie diese Befehle aus:

adb remount
adb shell cp /sdcard/ your.apk /system/app
@Demizide: Das habe ich schon probiert. Ich habe zwei Probleme, erstens ist das Gerät nicht gerootet und wird es auch nicht. Zweitens sind die Dateien in /system/app im Besitz von root und die Gruppe ist auch root. Irgendwie lässt es mich die Gruppe nicht auf root setzen und behält das als Shell. Entweder aus diesem oder einem anderen Grund scheint die obige Methode nicht zu funktionieren.

Möglicherweise möchten Sie die Master Key - Schwachstelle ausnutzen .

Wählen Sie eine App aus, die Ihre Verwendung des Geräts nicht beeinträchtigt, wenn sie verloren geht oder ersetzt wird. Nehmen Sie die APK und finden Sie einen Weg, den Inhalt zu ändern, und fügen Sie die Dateien Ihrer App ein. Überschreiben Sie nichts in der Original-APK, sondern versuchen Sie, 2 Einträge der gleichen Datei im ZIP-Header zu machen. Dann können Sie das modifizierte APK über das Original installieren. Es erbt Berechtigungen vom Original, funktioniert aber so, wie Sie es beabsichtigen.