Android: Systemapps ohne Root entfernen

Aktualisiert am 29.2.2024, neuere Package-Namen für Standard-Browser!

Gleich vorab:

Ich liefere hier nur eine Kurzbeschreibung des Verfahrens. Wer sich nicht schon mal mit so etwas befasst hat, sollte bitte unbedingt die beiden Quellen ganz unten lesen und viel Sorgfalt walten lassen!


Mit wenigen Ausnahmen sind auf jedem Android-Smartphone beim Kauf mehr oder weniger viele Apps installiert, die wir nicht brauchen: Reisebuchungen, Spiele oder Shops. Die nehmen Platz weg (auch wenn heutzutage genug davon vorhanden ist), lassen sich aber oft nicht einfach so löschen. Allerdings gibt es auch einige Apps, deren Sinn wir nicht unbedingt verstehen und die wir nicht nutzen, die aber dennoch für das System wichtig sind: Google-Tools, Sicherheit oder Dateimanager.

Wenn wir also scheinbar unwichtige Apps entfernen wollen, müssen wir uns im Klaren sein, was genau die tun. Zum Beispiel brauche ich unbedingt den Google-Kalender, denn der liefert die eigentliche Schnittstelle zu beliebigen anderen Kalender-Programmen, die ich nutzen möchte – bei mir (Xiaomi Redmi Note 9 mit MIUI 13) ist es sogar so, dass ich nur dort den Signalton für Termine einstellen kann, weil das eine „Ausnahmegenehmigung“ des Systems braucht.

Ich habe vor einiger Zeit den Browser „Google Chrome“ entfernt, weil der einige hundert MB Platz brauchte und sehr häufig aktualisiert wurde, was wiederum Zeit, manchmal Datenvolumen und noch mehr Platzbedarf benötigte. Dabei sollte gleich noch mit der Standardbrowser von Android verschwinden, der uralt war und nicht mehr gepflegt wurde. In früheren Android-Versionen konnte man manche vorinstallierten Apps deaktivieren – in neueren Versionen geht das vielleicht nicht mehr. Mit Bordmitteln kommt man also nicht weiter.

Wer nicht so „gern“ wie ich ohne Netz und doppelten Boden arbeitet, sollte sich vor den folgenden Aktionen unbedingt mit einem vollständigen Backup seines Smartphones befassen. Gute Anhaltspunkte dafür liefert diese guten Artikel [1], [2] und [3].

Was man braucht, ist

1) der Entwicklermodus auf dem Handy,
2) die ADB-Tools auf einem PC (Windows oder Linux, sicher auch Mac)
3) ein USB-Kabel, um das Smartphone mit dem PC verbinden zu können

Wichtig ist, dass das Smartphone in den Entwicklermodus geschaltet wird und dort „Installieren über USB“ und „USB-Debugging“ aktivuiert wird. Wie man dorthin kommt, ist geräteabhängig!

Der umfangreiche Artikel [1] beschreibt die Schritte zur Vorbereitung sehr detailliert – ich spare mir das jetzt hier. Auf dem PC öffne ich eine Shell (bei Windows z.B. die Powershell) und kann mir dann die spezielle Kommandoumgebung der ADB-Tools aufrufen:

adb shell

Man bekommt dann ein spezielles Prompt wie etwa „starlte:/ $“, nach dem man Kommandos eingaben kann. Mit dem Befehl list bekomme ich eine Liste der sogenannten Packages, also der installierten Apps – deren genaue Bezeichnung braucht man im nächsten Schritt.

pm list packages [ | grep <bezeichnung> ]

Der Teil in [ ] ist optional, wenn man schon eine Vorstellung vom Gesuchten hat, vielleicht „browser“, eingesetzt für <bezeichnung>:

pm list packages -f | grep browser

Die Liste ist lang und unübersichtlich – man muss schon genau hinsehen, um in den folgen Schritten nicht versehentlich das Falsche zu löschen.

VORSICHT: Es gibt keine Rückfrage, weg ist weg!

Für den Fall der gewünschten Browser enthielt meine Liste die Package-Namen com.google.android.chrome und com.android.browser. Jetzt geht es ans Löschen. Dabei sollte man die Package-Namen aus der Liste von eben mit der Maus kopieren, in den uninstall-Befehl einsetzen und vorm Abschicken nochmal genau kontrollieren:

Löschen:
pm uninstall -k --user 0 com.google.android.chrome (Chrome alt)
pm uninstall -k --user 0 com.android.chrome (Chrome neu)

pm uninstall -k --user 0 com.android.browser (Mi-Browser alt)
pm uninstall -k --user 0 com.mi.globalbrowser (Mi-Browser neu)

Oder einfach nur deaktivieren (nur neuere Apps):
pm disable-user com.android.chrome
pm disable-user com.mi.globalbrowser

Oder wieder aktivieren:
pm enable com.android.chrome
pm enable com.mi.globalbrowser

Es gibt keinerlei Rückmeldungen für das Gelingen oder dafür, dass vielleicht Mist gebaut wurde. Mit list kann man sehen, ab die Pakete weg sind, das ist alles.

Wenn man nicht etwas katastrophal falsches gelöscht hat, kommt man leicht wieder aus dem Modus des Smartphones raus, kann die Geräte trennen und sich dann freuen, dass die unerwünschten Apps weg sind. Hat man im Beispiel vergessen, vorher einen anderen Browser zu installieren, kann man das nun nachholen.


Quellen:

[1] https://www.heise.de/tipps-tricks/Android-Vorinstallierte-Apps-loeschen-ohne-Root-4324092.html
[2] https://android.izzysoft.de/articles/named/android-backup-options?lang=de
[3] https://selivan.github.io/2020/02/25/removing-bloatware-from-xiaomi-miui-android.html

In Ubuntu mittlere Maustaste emulieren

Ich benutze am PC mit derzeit Ubuntu 18 eine Tastatur TK820 (wird wohl leider nicht mehr produziert) von Logitech mit großem Touchpad (das Folgende gilt sicher auch für die K400). Das hat zwei „Maustasten“ in den unteren Ecken (bei K400 richtige Tasten).

Bei allen (?) U**x-Systemen kann man eine einfache Technik für drag-and-drop in Konsolen oder anderen Texteingaben anwenden: Man markiert mit der linken Maustaste einen Text in Browsern, Shells, vielen Editoren und kann dann diesen Ausschnitt woanders mit der linken Maustaste ablegen. Das funktioniert nicht immer, abhängig von der Technologie der Programme. In Shellfenstern klappt das immer und ist gerade für die schnelle Arbeit mit Kommandozeilen sehr hilfreich.

Die genannten Keyboards haben aber eben keine mittlere Maustaste! Mein Ziel war also, diese Taste irgendwie im normalen Tastenfeld zu emulieren. So gehts:

Man nehme die in Ubuntu vorhandene „Einstellung > Tastatur > Tastenkürzel für Anwendungen“ und erzeugt einen neuen Eintrag („Hinzufügen“). In „Befehl“ schreibt man „xdotool click 2″ und drückt dann nach Aufforderung die Taste oder Kombination, die man gern hätte und sonst nicht braucht. Beim meinem PC ist das „altgr-strg“ rechts von der Leertaste, bei meinem Laptop die sonst zu nichts zu gebrauchende Menütaste ebendort.

Fertig. Ich arbeite schon lange ohne echte Maus, um den Arm zu schonen und nutze diese Möglichkeit ohne hinzusehen.

Nachtrag 1: In eine Shell kann man den auf diese Weise kopierten Text nicht ohne weiteres mit „altgr-strg“ einfügen – dachte ich bisher. Zufällig habe ich entdeckt, dass das zusammen mit shift doch geht! Damit ist diese Lösung ein vollwertiger Maus-Ersatz :-).

Nachtrag 2: xdotool ist möglicherweise nicht vorhanden und somit erst noch zu installieren (sudo apt install xdotool).

Nachtrag 3: Um den erzeugten Tastencode eines Eingabegerätes (also nicht nur der Maus) in einer Shell anzuzeigen, benutze ich das Tool evtest (Event-Test), das als root aufzurufen ist. Es kommt eine Liste der möglichen Eingabegeräte mit einer Gerätebezeichnung wie „/dev/input/event4: Telink 2.4G Mouse“ und der Aufforderung, die lufende Nummer (hier: 4) anzugeben. Dann kann man fröhlich klicken und bekommt eine Menge Parameter. Ausprobieren!

Optimale MTU ermitteln (Ubuntu)

Was ist die MTU?

Die Maximum Transmission Unit (MTU) deutsch maximale Übertragungseinheit) beschreibt die maximale Paketgröße eines Protokolls der Vermittlungsschicht (Schicht 3) des OSI-Modells, gemessen in Oktetten, welche ohne Fragmentierung in den Rahmen (engl. „Frames„) eines Netzes der Sicherungsschicht (Schicht 2) übertragen werden kann. (Wikipedia).

Verstanden? Also ich habe alles schonmal irgendwie gehört, könnte es aber nie so widergeben… Also kurz gesagt: Die MTU ist die maximale Paketlänge bei einer Datenübertragung, bei der die Datenpakete noch nicht zerstückelt werden. Oder so ähnlich. Fakt ist, diese Zahl sollte so genau wie möglich den technischen Gegebenheiten angepasst werden, um den Datenaustausch zum Beispiel mit dem Internet nicht zu bremsen.

Im Folgenden möchte ich zeigen, wie ich (Ubuntu 14.04) meine MTU ermittelt habe und einstellen könnte.

Wie ermittle ich die bei mir eingestellte MTU?

Bekannte Größen sind 1492 oder 1500. Bei der Installation meines Ubuntu-Systems wurde ein Wert ermittelt und gesetzt. So finde ich ihn mit einem Shell-Befehl:

[rollo: ~] ifconfig eth0
eth0 Link encap:Ethernet Hardware Adresse 00:1d:92:01:24:26 
inet Adresse:192.168.178.4 Bcast:192.168.178.255 Maske:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metrik:1
RX-Pakete:135724 Fehler:0 Verloren:366 Überläufe:0 Fenster:0
TX-Pakete:83939 Fehler:0 Verloren:0 Überläufe:0 Träger:0
Kollisionen:0 Sendewarteschlangenlänge:1000 
RX-Bytes:142830244 (142.8 MB) TX-Bytes:10209485 (10.2 MB)

In der dritten Zeile steht der eingestellte Wert 1500.

Wie ermittle ich den optimalen Wert?

Wollen wir mal sehen, welcher Wert eigentlich optimal ist. Das ermittle ich mit einem weiteren Shell-Befehl, indem ich die „Route“ zum Webserver abfrage, auf der diese Website liegt. Hierfür ist jede vorhandene namentliche oder numerische Domain nutzbar:

[rollo: ~] tracepath it-consulting-stahl.de
 1?: [LOCALHOST] pmtu 1500
 1: router 1.192ms 
 1: router 0.888ms 
 2: no reply
 3: 83-169-181-254-isp.superkabel.de 18.882ms 
 4: ip5886c235.dynamic.kabel-deutschland.de 18.848ms asymm 5 
 5: ip5886eb2c.dynamic.kabel-deutschland.de 22.478ms asymm 6 
 6: ip5886cbf0.dynamic.kabel-deutschland.de 23.539ms asymm 5 
 7: decix.r1.fra3.opencarrier.eu 19.709ms asymm 8 
 8: decix.r1.fra3.opencarrier.eu 18.915ms 
 9: oc-dus.tal.de 26.389ms 
10: oc-dus.tal.de 22.069ms asymm 9 
11: mail-s4.rb-host.de 25.715ms reached
 Resume: pmtu 1500 hops 11 back 11

Hier steht in der ersten Zeile die vorgegebene MTU, in der letzten die ermittelte optimale. Beide sind bei mir gleich, ich muss nichts weiter tun. Wenn die optimale MTU anders sein sollte, sollte ich handeln.

Wie ändere ich die MTU?

Auch das geht ganz einfach in der Shell mit dem Befehl ifconfig:

[rollo: ~]sudo ifconfig eth0 mtu 1500

Achtung, hierfür sind root-Rechte erforderlich (sudo)!