Mir ist aufgefallen, dass Apps (z. B. Google Contacts Sync), die mit dem standardmäßigen Android-App-Manager (KitKat) deaktiviert wurden, bei Verwendung von Process Observer-Tools weiterhin als ausgeführt angezeigt werden. Dies gilt auch nach einem Neustart des Geräts.
Warum werden deaktivierte Apps noch ausgeführt? Gibt es eine effektive (und sichere) Möglichkeit, sie tatsächlich zu deaktivieren?
Lösungen, die Root-Rechte erfordern, sind akzeptabel.
(Beachten Sie, dass Sie für das obige spezifische Beispiel Android anweisen können, Ihre Kontakte nicht zu synchronisieren, aber es führt immer noch den Google Contacts Sync-Prozess aus. Aber lassen Sie uns nicht auf dieses Beispiel eingehen ... es ist nur ein Beispiel.)
Ihr Android muss keinen Root-Zugriff haben, um eine App wirklich zu deaktivieren, wenn Sie Version 4.4.x oder höher haben. Alles, was Sie brauchen, ist ein adb - Setup auf dem PC und aktiviertes USB-Debugging auf einem nicht gerooteten Gerät oder eine Terminal-Emulator-App für ein gerootetes Gerät (Sie können auch adb verwenden).
Wenn Sie die Verwendung von Package Manager ( pm
) überprüfen, würden Sie sehen
pm-Block [--user USER_ID] PACKAGE_OR_COMPONENT") pm unblock [--user USER_ID] PACKAGE_OR_COMPONENT")
Für Lollipop wäre es das
pm verstecken [--user USER_ID] PACKAGE_OR_COMPONENT") pm einblenden [--user USER_ID] PACKAGE_OR_COMPONENT")
Um ein Paket zu blockieren oder zu verstecken (es ist sicher), tun Sie es einfach
pm block PACKAGE # for KitKat
pm hide PACKAGE # for Lollipop
Um das Paket freizugeben oder sichtbar zu machen, tun Sie es
pm unblock PACKAGE #for KitKat
pm unhide PACKAGE # for Lollipop
PACKAGE
→ Paketname einer App. So erfahren Sie den Paketnamen einer App:
Hängen adb shell
Sie vor jedem Befehl an, um sie vom PC auszuführen.
Die Funktion hinter hide hat den folgenden Kommentar im Quellcode
Versetzt das Paket in einen versteckten Zustand, der fast wie ein deinstallierter Zustand ist, wodurch das Paket nicht verfügbar ist, aber die Daten oder die eigentliche Paketdatei werden nicht entfernt. Die Anwendung kann entweder durch Zurücksetzen des versteckten Zustands oder durch Installieren wieder eingeblendet werden
Eine ähnliche Kommentierung erfolgt hier für block .
Um die Behauptung zu überprüfen, können Sie einige Systemdienste wie meminfo
, procstats
und activity
das Tool dumpsys verwenden oder sogar alle Prozesse mit auflisten ps
. Sie werden keine aktive Präsenz der blockierten/versteckten App finden.
Dasselbe gilt für viele System-Apps, die über die GUI deaktiviert wurden, oder pm disable
aber nicht für jede App , da sogar eine deaktivierte App Broadcasts empfangen kann, für die sie sich registriert hat, was nur möglich ist, wenn sie in den Speicher 1 geladen wird . Trotzdem kann eine deaktivierte App nicht alleine handeln, noch kann sie von einer anderen App ausgeführt werden.
Ich habe einige der Unterschiede zwischen Ausblenden/Blockieren und Deaktivieren auf meine Frage hin diskutiert: pm verstecken vs. pm deaktivieren – die Identitätskrise . Es enthält nur ergänzende Informationen zu dieser Antwort, sodass Sie sie überspringen können.
BEARBEITEN:
Es scheint, dass die Technik nicht für alle Apps auf Android KitKat funktioniert. Widerrufen Sie in diesem Fall einfach die Leseberechtigung von der APK der App oder entfernen Sie die Erweiterung .APK aus dem Dateinamen der App (letztere einmal von Jaskaranbir vorgeschlagen), gefolgt von einem sanften/vollständigen Neustart. Dies ist dasselbe wie das Löschen einer App aus dem System, mit dem einzigen Unterschied, dass alle Dateien an ihrem Platz verbleiben würden.
Beide Schritte können mit jeder Root-Dateimanager-App ausgeführt werden. Der Befehlszeilenweg ist:
adb shell su -c 'chmod 000 /data/app/PACKAGE*' # 000 means no read-write-executable permission to user,group and others.
adb shell su -c 'mv /data/app/PACKAGE* /data/app/PACKAGE' # doing renaming by moving the file
adb reboot
1: Fehlende technische Beweise, um die Tatsache zu unterstützen
pm block/hide
also lassen Sie sie unberührt./data/system/users/0/package-restrictions.xml
, suchen Sie nach <pkg name="YOUR_PACKAGE"
). Kurz gesagt, es ist sicher, ob Sie den Block/Hide-Befehl auf eine deaktivierte App anwenden oder nicht.adb shell su -c "chmod 111 /system/app/SystemUI.apk"
. 111 bedeutet, dass nur ausführbare Berechtigungen für Eigentümer, Gruppe und andere festgelegt werden. Starten Sie neu und die App wird dem System fehlen. Sie können es auch einstellen 000
.
GiantTree
RockPaperLz- Maskiere es oder Casket
GiantTree
RockPaperLz- Maskiere es oder Casket
RockPaperLz- Maskiere es oder Casket
Izzy
Feuerlord
RockPaperLz- Maskiere es oder Casket
Feuerlord
block/hide
), was mich wundern lässt, warum die App jetzt geladen wird. Es ist eine andere Sache, dass Sie, während es in den Speicher geladen wurde, seine oberflächliche Abwesenheit durch fehlenden Hintergrund, Themen, Statusleiste und mehr beobachten können. Vielleicht lässt sich daraus eine neue Frage schmieden.Izzy
.apk
und Daten zurücklassen“ – die App wird also „völlig unregistriert und unsichtbar für alles außer dem Dateimanager“, sodass andere Apps ihre Absichten nicht mehr so nennen können, wie sie können finde sie nicht.RockPaperLz- Maskiere es oder Casket
Izzy