Tengo un Moto G (segunda generación) con Android 5.02. La tarjeta SD interna tiene aproximadamente 8 Gb y tengo una tarjeta SD externa con 16 Gb de espacio libre.
Mover la aplicación a SDCARD desde el menú de la aplicación la mueve a sdcard0, que es la tarjeta SD interna.
Comando de shell adb:
pm get-install-location
me da:
0[auto]
Traté de establecer la ubicación de instalación a través de:
pm set-install-location 2
Pero estoy recibiendo este error:
Error: java.lang.SecurityException: Package android does not belong to 2000
Creo que me quejo de los permisos de root.
Y debido a que es una compilación de producción que intenta:
adb root
me da:
adbd cannot run as root in production builds
¿Hay alguna forma de configurar las aplicaciones para instalar sus datos en una tarjeta SD externa?
PD: no quiero instalar una rom personalizada o instalar un software de terceros para rootear el teléfono.
Editar: me di cuenta de que los datos de las aplicaciones se almacenaron en la carpeta /storage/sdcard0/Android
, así que pensé en mover esta carpeta /storage/sdcard1/
y crear un enlace simbólico de esta manera:
ln -s /storage/sdcard1/Android /storage/sdcard0/Android
¿Esto hará el trabajo?
Gracias.
Básicamente hablando: no puedes. Al menos no sin rootear .
Las principales razones por las que Android no te permite instalar una aplicación en tu tarjeta SD externa son:
Seguridad : Es la razón principal de esa restricción. Los sistemas de archivos básicos como NTFS o FAT (cualquiera de sus versiones) no permiten la administración de permisos similar a Unix.
Esto significa: cualquier aplicación podría escribir en cualquier archivo en ese almacenamiento.
Pensando en aplicaciones maliciosas, podrían reemplazar las aplicaciones adecuadas con otras falsas/infectadas, bloqueando su teléfono y dejándolo inutilizable.
Almacenamiento volátil : no es seguro insertar su tarjeta SD externa en su dispositivo todo el tiempo. Puede expulsarlo en cualquier momento, lo que hace que su tarjeta SD no sea un buen candidato para un almacenamiento permanente. Considere que las aplicaciones se ejecutan desde su tarjeta SD y las expulsa. Esas aplicaciones simplemente fallarán y todas las demás aplicaciones guardadas en su tarjeta SD también desaparecerán. No puede usarlos en ese momento y los datos de esas aplicaciones también se ven afectados por la razón #1.
¡Básicamente puedes! ;)
Después de reiniciar, CADA aplicación que instales irá automáticamente a la tarjeta SD.
Si no sabes como crear particiones busca una guía en Google hay muchas
Ese fue un gran viaje en busca de una respuesta que no implicara el enraizamiento, pero terminé:
Arrancando en TWRP sin instalarlo:
fastboot boot recovery.img
Instalando SuperSU de Chainfire con TWRP.
Desde Terminal Emulator o el shell de adb :
su
pm set-install-location 2
Desde el menú de una aplicación, con Settings > Applications
solo presionar Move to SDCARD
se mueve* - sus datos y obb - a la SDCARD externa.
Eliminando SuperSU......
No... ¡Yo no hice eso! 3 :)
Vaya a esta dirección http://developer.android.com/tools/help/shell.html#shellcommands
Android 5 y superior no es compatible con estopm get-install-location
Intente hacer una copia de seguridad de su apk y siga los pasos a continuación
adb shell pm install -r -s <path of your apk>
Ejemplo
adb shell pm install -r -s /storage/sdcard1/base.apk
-r significa reinstalar apk con datos existentes y -s significa sdcard
Primero instale Adbd insecure ( descarga apk desde xda-developers ).
Una vez instalado en su dispositivo, ábralo y marque la casilla: "Habilitar adbd inseguro".
Ahora puede cambiar la ubicación para instalar sus aplicaciones.
pr.nizar
Árbol Gigante
/sdcard/sdcard0/Android
. Las aplicaciones se almacenan en una carpeta oculta llamada a la.android_secure
que ni siquieraroot
tiene acceso (lo probé en mi dispositivo, ni siquiera puedes acceder acd
esa carpeta).pr.nizar
Árbol Gigante
sdcard_rw
pertenecer alroot
grupo ni presentan al usuariosdcard_rw
en absoluto. Pero con un poco de cambios en los permisos, debería poder solucionarlo.pr.nizar
ls -l /storage/sdcard0
me dio estolrwxrwxrwx root root 2015-04-20 15:59 sdcard0 -> /storage/emulated/legacy
y correrls -l /storage/sdcard0/
me dio estodrwxrwx--x root sdcard_r 2014-12-20 18:16 Android
.. ¿Es eso una buena o una mala noticia? Como no soy root, creo que no puedo establecer permisos.Árbol Gigante
/data/media
, dondestorage/emulated/legacy
apunta a. El otro resultado es una "solución fácil": primero debe mover laAndroid
carpeta original a otra ubicación o cambiarle el nombre para hacer espacio para el enlace simbólico. A continuación, enlace y asigne/storage/sdcard1/Android
un/storage/sdcard0/Android
nombre al enlaceAndroid
. Por fin arregla todos los permisos (777). Esto es solo teórico, pero imagino que debería funcionar así.pr.nizar
cp -R /storage/sdcard0/Android /storage/sdcard1/
(demasiado inestable sobre elmv
lol) entoncesrm -r /storage/sdcard0/Android
entoncesln -s /storage/sdcard1/Android /storage/sdcard0/Android
. Si esto funciona, el crédito es para usted, por lo que puede actualizar su respuesta. ¡Yo lo haré saber! ;-)Árbol Gigante
Android
romperá todas las aplicaciones en ejecución (o al menos la mayoría de ellas). Es solo un enfoque teórico fuera de mi cabeza; nada que seguir exactamente. Si es lo suficientemente rápido, es posible que pueda recuperar aplicaciones después de fallar, pero tenga en cuenta que todas las acciones se deshacen después del próximo reinicio.pr.nizar
ln: /storage/sdcard0/Android: Operation not permitted
. Entonces, la siguiente pregunta es ¿cómo crear un enlace simbólico? (Revertí mis cambios y todo está bien... ¡o eso creo por ahora! jajaja)Árbol Gigante
Android
carpetas, las vuelve a crear un momento después. Esta es también la razón por la cual aplicaciones como Link2SD vinculan carpetas de aplicaciones individuales en lugar de laAndroid
carpeta completa. Puedes intentarlo, pero no puedo prometer el éxito.pr.nizar
Árbol Gigante
pr.nizar
Operation not permitted
). Creo que es simplemente porque misdcard1
está formateado en fat32. ¿A qué debo formatearlo (me refiero a su partición principal)?Árbol Gigante
fuse
es posible que no le permita crear un enlace simbólico a su tarjeta SD externa). Si puede, intente formatear su tarjeta SD para queext4
los permisos se puedan aplicar sin usarfuse
un administrador de permisos intermedio, que bloquea la mayoría de los intentos de lectura y escritura sin el permiso adecuado del paquete.pr.nizar
Árbol Gigante
root
puede crear enlaces simbólicos. Ten eso en mente.