Verschieben des Installationsorts auf einem nicht verwurzelten Android 5 Lollipop-Gerät

12

Ich habe ein Moto G (2. Generation) mit Android 5.02. Interne SD-Karte ist ca. 8 GB und ich habe eine externe SD-Karte mit 16 GB freiem Speicherplatz.

Wenn Sie eine Anwendung aus dem Menü der Anwendung auf SDCARD verschieben, wird sie auf sdcard0 verschoben, bei der es sich um die interne SD-Karte handelt.

Adb Shell Befehl:

pm get-install-location

gibt mir:

0[auto]

Ich habe versucht, den Installationsort wie folgt festzulegen:

pm set-install-location 2

Aber ich erhalte diesen Fehler:

Error: java.lang.SecurityException: Package android does not belong to 2000

Das heißt, ich glaube, über Root-Berechtigungen zu beschweren.

Und weil es sich um einen Produktivversuch handelt:

adb root

gibt mir:

 adbd cannot run as root in production builds

Kann ich festlegen, dass die Anwendungen ihre Daten auf einer externen SD-Karte installieren?

PS: Ich möchte kein benutzerdefiniertes ROM oder keine Software von Drittanbietern installieren, um das Telefon zu rooten.

Bearbeiten: Ich habe festgestellt, dass Anwendungsdaten im Ordner gespeichert wurden. Daher /storage/sdcard0/Androidhabe ich mir überlegt, diesen Ordner zu verschieben /storage/sdcard1/und stattdessen einen Symlink auf diese Weise zu erstellen:

ln -s /storage/sdcard1/Android /storage/sdcard0/Android

Wird das den Job machen?

Vielen Dank.

pr.nizar
quelle

Antworten:

10

Grundsätzlich gilt: Sie können nicht. Zumindest nicht ohne Wurzelbildung .
Die Hauptgründe, warum Sie mit Android keine Anwendung auf Ihrer externen SD-Karte installieren können, sind:

  1. Sicherheit : Dies ist der Hauptgrund für diese Einschränkung. Grundlegende Dateisysteme wie NTFS oder FAT (jede Version davon) ermöglichen keine Unix-ähnliche Berechtigungsverwaltung.
    Das bedeutet: Jede Anwendung kann in jede Datei auf diesem Speicher schreiben .
    Wenn sie an bösartige Apps denken, können sie die richtigen Apps durch gefälschte / infizierte Apps ersetzen, Ihr Telefon beschädigen und es unbrauchbar machen.

  2. Flüchtiger Speicher : Ihre externe SD-Karte kann nicht immer sicher in Ihr Gerät eingelegt werden. Sie können es jederzeit auswerfen, was Ihre SD-Karte nicht zu einem sehr guten Kandidaten für eine dauerhafte Speicherung macht. Betrachten Sie Apps, die von Ihrer SD-Karte ausgeführt werden, und werfen Sie sie aus. Diese Apps stürzen einfach ab und alle anderen Apps, die auf Ihrer SD-Karte gespeichert sind, gehen ebenfalls verloren. Sie können sie zu diesem Zeitpunkt nicht verwenden und die Daten dieser App sind auch von Grund 1 betroffen.

GiantTree
quelle
Ich habe einen Linux-Hintergrund, daher habe ich diesen Ansatz in Betracht gezogen: Ich habe festgestellt, dass die Menüoption "Move to SDCARD" der Anwendung einen Ordner namens Android auf sdcard0 (der internen) mit Anwendungsdaten darauf erstellt hat. Funktioniert das Erstellen eines Symlinks (in sdcard0) namens Android zu einem Ordner namens Android in sdcard1?
pr.nizar
Das Problem ist: Android speichert nur Anwendungsdaten und obb in /sdcard/sdcard0/Android. Anwendungen werden in einem versteckten Ordner gespeichert, auf den .android_securenicht einmal rootZugriff besteht (ich habe es auf meinem Gerät getestet, Sie können nicht einmal cdauf diesen Ordner zugreifen ).
GiantTree
Genau das brauche ich! Das Hauptproblem, über das ich nachdenken muss, sind die Daten, insbesondere bei schweren Spielen. Die Hauptanwendungen sind nicht so groß im Vergleich zu den Daten, die sie später hinzufügen. Glaubst du, es könnte funktionieren?
pr.nizar
Wenn es sich nur um Daten oder Obb handelt , funktioniert es mit Sicherheit. Zumindest bei Android-Versionen, die nicht sdcard_rwzur rootGruppe gehören oder den Benutzer sdcard_rwüberhaupt kennzeichnen . Aber mit ein paar Berechtigungsänderungen sollten Sie in der Lage sein, das zu regeln.
GiantTree,
Laufen ls -l /storage/sdcard0gab mir das lrwxrwxrwx root root 2015-04-20 15:59 sdcard0 -> /storage/emulated/legacyund Laufen ls -l /storage/sdcard0/gab mir das drwxrwx--x root sdcard_r 2014-12-20 18:16 Android.. Ist das eine gute oder eine schlechte Nachricht? Da ich kein Root bin, kann ich meiner Meinung nach keine Berechtigungen festlegen.
pr.nizar
6

Grundsätzlich können Sie! ;)

  • Zuerst Root dein Handy!
  • Zweitens erstellen Sie eine sekundäre Partition auf Ihrer SD-Karte (Ext.4)> = 2 GB und legen sie als primäre Partition fest.
  • Drittens laden Sie die Link2sd-App vom PlayStore herunter und installieren Sie sie. Öffnen Sie die App und ich werde Sie bitten, einen Einhängepunkt für Ihre 2. Partition zu erstellen. Wählen Sie Ja. Starten Sie neu.

Nach dem Neustart wird JEDE App, die Sie installieren, automatisch auf die SD-Karte verschoben.

Wenn Sie nicht wissen, wie Sie eine Partitionssuche für einen Leitfaden in Google erstellen, gibt es viele davon

Kanellis
quelle
Das ist eigentlich das, was ich vermeiden möchte: die Installation von Software von Drittanbietern. :-)
pr.nizar
4

Das war eine ziemliche Reise auf der Suche nach einer Antwort, bei der es nicht um Wurzeln ging, aber am Ende war ich:

  1. Den Bootloader entsperren

  2. Auf TWRP booten, ohne es zu installieren:

    fastboot boot recovery.img
    
  3. Installieren von Chainfire ist SuperSU mit TWRP.

  4. Aus dem Terminal Emulator oder der Shell von adb :

    su
    pm set-install-location 2
    
  5. Durch einfaches Settings > ApplicationsDrücken auf das Menü einer Anwendung wird Move to SDCARDsie * - ihre Daten und ihr Objekt - auf die externe SDCARD verschoben.

  6. SuperSU wird entfernt ......

Volle Wurzel

Nein ... das habe ich nicht getan! 3:)

pr.nizar
quelle
0

Gehen Sie zu dieser Adresse http://developer.android.com/tools/help/shell.html#shellcommands

Android 5 und höher unterstützt dies nicht pm get-install-location

Versuche deine apk zu sichern und folge den Schritten unten

adb shell pm install -r -s <path of your apk>

Beispiel

adb shell pm install -r -s /storage/sdcard1/base.apk

-r bedeutet APK mit vorhandenen Daten neu installieren und -s bedeutet SD-Karte

Akash Sarkar
quelle
" Android 5 und höher unterstützt diesen pm get-install-location nicht " - woher weißt du das? Versuchen Sie dies: android.googlesource.com/platform/frameworks/base/+/… . Es ist für Android 5.1.1. Ich habe Unterstützung für dieses Argument in meinem Android 5.0.2, 5.1.1 und 6.0.1!
Firelord
Leider jedoch -sist für die Angabe , welches Gerät adb sollte arbeiten (“ -s <serialNumber>„).
Krzysztof Bociurko
-1

Installieren Sie zuerst Adbd insecure ( apk-Download von xda-Entwicklern ).

Sobald es auf Ihrem Gerät installiert ist, öffnen Sie es und markieren Sie das Kästchen: "Enable insecure adbd".

Jetzt können Sie den Speicherort für die Installation Ihrer Apps ändern.

Jherome
quelle