2014-04-25 14 views
6

Ich habe bereits im Internet eine Antwort auf mein Problem gesucht, aber leider habe ich keine gefunden Lösung für mein Problem. Ich habe sogar in diesem Fall auf die official forum geschrieben, leider konnten die Moderatoren dieses Problem nicht bewältigen. Im Folgenden beschreibe ich das Problem, in der Hoffnung, dass jemand ein ähnliches Problem hat und die Lösung kennt.RecoverySystem.InstallPackage -/Cache/Wiederherstellung/Befehl: Öffnen fehlgeschlagen: EACCESS (Berechtigung verweigert) - fehlende Berechtigung nach Update Android 4.3+

Ich habe eine Anwendung, die gut funktioniert auf Android 4.1, weshalb ich die Probleme mit dem Mangel an "etwas" abgelehnt. Vorerst scheint es, dass ein Fehler in neueren Versionen von Android ist, weil nach der Android Aktualisierung 4.3+ (API 18+) meine App zeigt die Meldung:

/cache/recovery/command: open failed: EACCESS (permission denied)

Meine Anwendung ist eine Systemanwendung, so dass die Datei *.apk/system/app/ zusammen mit einer geeigneten Dateizugriffsberechtigungen (chmod) im Verzeichnis gesetzt wurde, so dass die context.getApplicationInfo().flags & ApplicationInfo.FLAG_SYSTEM gleich 1.

Da die Anwendung die Methode RecoverySystem.installPackage(...) verwendet habe ich Berechtigungen:

<uses-permission android:name="android.permission.ACCESS_CACHE_FILESYSTEM" /> <uses-permission android:name="android.permission.REBOOT" /> <uses-permission android:name="android.permission.DELETE_CACHE_FILES" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

Mehr als das erforderliche Minimum, weil unter anderem meine Anwendung der Methode RecoverySystem.verifyPackage(...) Auch verwendet dieses Verfahren hatte Probleme nach dem Android 4.3+ Aktualisierung, aber diese Probleme wurden nach einem der Zugabe gelöst (oder alle) Berechtigungen:

<uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />

HINWEIS: zum Testen ich habe alle Datei auch die möglichen Berechtigungen zu manifestieren, die verfügbar sind, aber das löst nicht das Problem.

Noch einmal möchte ich betonen, dass die Anwendung bis zu einem Update auf Android 4.3+ richtig funktioniert. Nach dem Update gibt es einen Fehler mit der Meldung:

/cache/recovery/command: open failed: EACCESS (permission denied)

Dieser Fehler tritt auf, wenn RecoverySystem.installPackage(...) die Methode aufrufen. (FileWriter command = new FileWriter(COMMAND_FILE); wo COMMAND_FILE == /cache/recovery/command)

Ich bin nicht sicher, aber ich glaube, dass einer der möglichen Gründe Fehler können in der ‚bootfähige/Recovery/recovery.c‘, aber ich kann keine Bestätigung finden .

Wenn jemand helfen kann, wäre ich dankbar.

P.S. Um Unordnung im Internet zu vermeiden, poste nicht mit Texten wie "benutze Google", "schon war es - ich habe es irgendwo gesehen - aber kann mich nicht erinnern wo", "Ich habe das gleiche Problem/auch nicht für mich" und andere Beiträge, die nicht helfen, das Problem zu lösen.


@ shiri-HRW Danke für Ihre Antwort.

nach dem Hinzufügen android: sharedUserId = "com.google.uid.shared" zu meinem apps manifest (AndroidManifest.xml) ist ein Fehler aufgetreten:

Installation error: INSTALL_FAILED_SHARED_USER_INCOMPATIBLE Please check logcat output for more details. Launch canceled!

LogCat

Package com.example.test has no signatures that match those in shared user com.google.uid.shared; ignoring!

und/oder

Package com.example.test has no signatures that match those in shared user android.uid.system; ignoring!

Sie schrieb:

...as your app isn't signed with google signatures...

aber nach der Zeichenanwendung mit den Dateien * .pk8 und * .x509.pem, die unter build/target/product/security im pulbic sdk zu finden sind.

java -jar SignApk.jar platform.x509.pem platform.pk8 Application.apk Application_signed.apk

und/oder

java -jar SignApk.jar shared.x509.pem shared.pk8 Application.apk Application_signed.apk

der Fehler immer noch auftritt.

Wenn ich meine App auf System/App (und Neustart) drücken, ist die Anwendung in Apps nicht sichtbar.

Antwort

0

Ich hatte dasselbe Problem, aber löste es. Wenn Sie Firmware 4.3+ dann, Sie in Ihrem apps Manifest android:sharedUserId="com.google.uid.shared" hinzufügen, und schieben Sie Ihre App auf System/App.

Hierfür können Sie Ihr Gerät Wurzel Aber nach dieser Zugabe, Ihr nicht installiert werden, da bei der Installation verifySignaturesLP Methode von PackageManagerService wird false zurück, wie Ihre App nicht mit Google-Signaturen signiert ist, so dass Sie Änderungen vornehmen müssen in dieser Methode, um Ihr apps-Paket zu überprüfen und dort wahr zurückzukehren.

Sie erhalten diesen Fehler, weil Ihre App keine Signaturen enthält, die denen von Google entsprechen. Obwohl Sie Ihre App mit * .pk signiert haben, enthält diese Datei jedoch keine Signatur, mit der Google ihre App signiert.

Um Ihre App zu installieren, müssen Sie Ihren Framework-Code wie bereits erwähnt ändern. z.B. Sie können Ihre verifySignaturesLP-Methode so ändern, dass sie für Ihre Anwendung den Wert true zurückgibt.

Oder zweite Option Wenn Sie nicht in der Lage, dies zu tun, dann nicht sicher, ob ich bin, aber man kann noch etwas anderes versuchen. Anstatt diese gemeinsame ID zu verwenden, verwenden Sie die gemeinsame ID anderer Systemanwendungen auf Ihrem Gerät. z.B. Ich benutzte android:sharedUserId="android.uid.system" Dann wird Ihr Gerät permissive machen, indem unter Befehle geben

1. adb shell 
2. setenforce 0 

Denken Sie daran, sollten Sie Permissive statt Erzwingen für getenforce nach oben Befehle erhalten. Und dann versuch es. Ich bin mir bei dieser zweiten Option nicht 100% ig sicher. Hoffe, dass diese zweite Option in Ihrem Fall funktioniert.

+0

Ich gab Antworten, meine Frage redigierend. Haben Sie eine Idee, wie Sie das lösen können? –

+0

überprüfen Ich habe meine Antwort geändert –

0

Wenn Sie KitKat (4.4), dann setze deine APK in/system/priv-app anstatt in/system/app.

+0

Was ist nicht vertrauenswürdig_app? – Benny

Verwandte Themen