Spostamento della posizione di installazione su un dispositivo Android 5 Lollipop non rootato


12

Ho una Moto G (2a generazione) con Android 5.02 su di essa. La scheda SD interna è di circa 8 GB e ho una scheda SD esterna con 16 GB di spazio libero.

Lo spostamento dell'applicazione su SDCARD dal menu dell'applicazione lo sposta su sdcard0 che è la scheda SD interna.

Comando shell adb:

pm get-install-location

mi da:

0[auto]

Ho provato a impostare il percorso di installazione tramite:

pm set-install-location 2

Ma sto ricevendo questo errore:

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

Cioè credo che mi lamento delle autorizzazioni di root.

E poiché è una build di produzione che prova:

adb root

mi da:

 adbd cannot run as root in production builds

C'è un modo per impostare le applicazioni che installano i loro dati su una scheda SD esterna?

PS: Non voglio installare una rom personalizzata o installare software di terze parti per eseguire il root del telefono.

Modifica: ho notato che i dati delle applicazioni erano archiviati nella cartella /storage/sdcard0/Android, quindi ho pensato di spostare questa cartella /storage/sdcard1/e creare un link simbolico in questo modo:

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

questo farà il lavoro?

Grazie.

Risposte:


10

In sostanza: non puoi. Almeno non senza il rooting .
I motivi principali per cui Android non ti consente di installare un'applicazione sulla tua scheda SD esterna sono:

  1. Sicurezza : è la ragione principale di tale restrizione. I file system di base come NTFS o FAT (qualsiasi versione di esso) non consentono la gestione delle autorizzazioni di tipo Unix.
    Ciò significa: qualsiasi applicazione sarebbe in grado di scrivere su qualsiasi file su tale memoria.
    Pensando alle app dannose, sarebbero in grado di sostituire le app appropriate con quelle false / infette, mettendo in muratura il telefono e rendendolo inutilizzabile.

  2. Archiviazione volatile : la scheda SD esterna non è sicura da inserire continuamente nel dispositivo. Sei in grado di espellerlo in qualsiasi momento ciò che rende la tua scheda SD non un ottimo candidato per una memoria permanente. Considera le app che stanno esaurendo la tua scheda SD e la espelli. Quelle app andranno in crash e anche tutte le altre app salvate sulla scheda SD spariranno. Non puoi usarli in quel momento e anche i dati di quell'app sono influenzati dal motivo n. 1.


Ho un background Linux quindi ho considerato questo approccio: ho notato che l'opzione di menu dell'applicazione "Sposta su SDCARD" ha creato una cartella chiamata Android su sdcard0 (quella interna) con i dati delle applicazioni su di essa; funzionerà la creazione di un collegamento simbolico (in sdcard0) chiamato Android in una cartella chiamata Android in sdcard1?
pr.nizar,

Il problema è: Android memorizza solo i dati dell'applicazione e obb in /sdcard/sdcard0/Android. Le applicazioni sono archiviate in una cartella nascosta chiamata a .android_securecui non rootha nemmeno accesso (l'ho testata sul mio dispositivo, non puoi nemmeno cdquella cartella).
GiantTree

In realtà è proprio quello di cui ho bisogno! Il problema principale che mi fa pensare a questo è i dati soprattutto con giochi pesanti .. Le applicazioni principali non sono così grandi rispetto ai dati che aggiungono in seguito. Quindi pensi che potrebbe funzionare?
pr.nizar,

Se sono solo dati o obb, allora sicuramente funziona. Almeno nelle versioni Android che non fanno sdcard_rwparte del rootgruppo o che presentano l'utente sdcard_rw. Ma con un po 'di modifiche alle autorizzazioni dovresti riuscire a risolverlo.
GiantTree

Correre ls -l /storage/sdcard0mi ha dato questo lrwxrwxrwx root root 2015-04-20 15:59 sdcard0 -> /storage/emulated/legacye correre ls -l /storage/sdcard0/mi ha dato questo drwxrwx--x root sdcard_r 2014-12-20 18:16 Android... È una buona o una cattiva notizia? Dal momento che non sono root credo di non poter impostare le autorizzazioni.
pr.nizar,

6

Fondamentalmente puoi! ;)

  • Innanzitutto, esegui il root del tuo telefono!
  • In secondo luogo, creare una partizione secondaria nella scheda SD (Ext.4)> = 2 GB e impostarla come primaria.
  • In terzo luogo, scarica e installa l'app Link2sd dal Playstore. Apri l'app e ti chiederò di creare un mount point per la tua seconda partizione. Seleziona Sì Reboot.

Dopo il riavvio, OGNI app installata andrà automaticamente sulla scheda SD.

Se non sai come creare una partizione cerca una guida in Google ce ne sono molti


In realtà è quello che sto cercando di evitare: installare software di terze parti. :-)
pr.nizar

4

È stato un bel viaggio alla ricerca di una risposta che non riguardasse il rooting, ma alla fine sono arrivato:

  1. Sblocco del mio bootloader

  2. Avvio su TWRP senza installarlo:

    fastboot boot recovery.img
    
  3. Installazione di SuperSU di Chainfire con TWRP.

  4. Dal Terminal Emulator o adb shell 's:

    su
    pm set-install-location 2
    
  5. Dal menu di un'applicazione, Settings > Applicationsbasta spingerlo Move to SDCARD* - i suoi dati e obb - verso la SDCARD esterna.

  6. Rimozione di SuperSU ......

Unroot completo

Nah ... Non l'ho fatto! 3 :)


0

Vai a questo indirizzo http://developer.android.com/tools/help/shell.html#shellcommands

Android 5 e versioni successive non supportano questo pm get-install-location

Prova a eseguire il backup dell'apk e segui i passaggi seguenti

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

Esempio

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

-r significa reinstallare apk con dati esistenti e -s significa sdcard


" Android 5 e versioni successive non supportano questo pm get-install-location " - come fai a saperlo? Prova questo: android.googlesource.com/platform/frameworks/base/+/… . È per Android 5.1.1. Ho il supporto per questo argomento nel mio Android 5.0.2, 5.1.1 e 6.0.1!
Firelord

Siamo spiacenti, ma -sè per specificare su quale dispositivo dovrebbe funzionare l'adb (" -s <serialNumber>").
Krzysztof Bociurko,

-1

Prima installa Adbd insecure ( download apk da xda-developers ).

Una volta installato sul dispositivo, aprilo e seleziona la casella: "Abilita adbd non sicuro".

Ora puoi cambiare la posizione per installare le tue app.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.