Practica 3: Proyecto Web 2.0
Asignatura Internet a través de Internet
G-9 / Universidad de Extremadura

lunes, 21 de abril de 2014

Error: no hay suficiente espacio de almacenamiento disponible

   Este era un mensaje frecuente hace algunos años en algunos móviles Android cuando querían instalar una aplicación y no podían. Sobre todo los que disponían de Android v2.2 o anteriores.

   Con la llegada Android v2.3 Gingerbread, Google permitió que ciertas aplicaciones, en realidad partes de ellas, pudieran moverse a la segunda partición de la memoria interna (NAND flash) denominada “memoria de almacenamiento USB” porque se podía acceder a ella desde el ordenador mediante cable USB o también podía moverse a la SD externa. De esta manera se liberaba “memoria del dispositivo”, la primera partición de la memoria interna. Ejemplo:


   El problema está en que parte de cada aplicación sigue ocupando memoria del dispositivo y más tarde o temprano se llenará, y más si contamos los datos de las aplicaciones o el cache, y ya no se podrá instalar más aplicaciones. Aunque tengas colocada microSD o tengas una partición segunda en NAND actuando como SD interna de muchísima capacidad, te seguiría dando ese mensaje.

   Además, sólo se podía mover las aplicaciones que así lo hubiese previsto su creador. Para mover el resto hacía falta privilegios de administrador (root) del sistema android, aunque el inconveniente en algunos casos es que si se mueven aplicaciones con widget, éstos no funcionan.

   La solución inmediata: usar “limpiadores” como All-in-one toolbox, clean master, sd maid, etc, que eliminan archivos temporales, caches, etc y más si eres root. Pero tarde o temprano te vuelves a quedar sin memoria para instalaciones.

   Hay soluciones más drásticas si eres root. Quizás la mejor, y más peligrosa, es reparticionar la memoria interna NAND flash del móvil desde el ordenador por cable USB, aprovechando la instalación de un nuevo sistema, y haciendo que la primera partición de la NAND sea mayor a costa de que la segunda sea menor.

   Otra técnica algo menos peligrosa es modificar el orden de montaje de las particiones para “engañar” al sistema haciéndole creer que la memoria interna de instalación de las aplicaciones es la SD externa o la SD interna (segunda partición NAND). Eso se hace modificando el archivo del sistema “vold.fstab”.

   Quizás la menos peligrosa (en realidad nada) es la creación de una segunda partición en la microSD que actúe como parte de la memoria de instalación de las aplicaciones. Esto último está ya previsto en las denominadas “ROM cocinadas” donde existe un "script", a2sd , que se activa desde la línea de comandos o mediante una aplicación como S2E. Otras aplicaciones como Mount2SD o Link2SD incorporan este script y por tanto se pueden utilizar en ROMs stock (de fábrica), por supuesto en móviles rooteados.

   Nota: otras aplicaciones como appmgr III, app2sd, etc no usan una segunda partición de la microSD y solo “mueven” las aplicaciones al estilo de Android v2.3, es decir, dejando mucho rastro y con widgets inutilizados si se es root y la aplicación no tenía prevista ser movida por el creador.

   Hoy voy a contar como se usa la aplicación Link2SD, cuyos requisitos son: teléfono rooteado, Memoria MicroSD de varios GB, lector de MicroSD, programa particionador de microSD, como Minitool Partition Wizard Home (para Windows) o Gparted (linux), ambos gratuitos.

PARTE I] La preparación de la tarjeta microSD

   Vamos a crear una segunda partición en nuestra microSD para ser usada por Link2SD como falsa memoria “interna” de instalación de aplicaciones. Esto se puede hacer con aplicaciones Android como “aparted”, pero voy a describir como se realiza mediante Minitool Partition Wizard en Windows.

Después de hacer copia de seguridad de nuestros datos, introducimos la microSD en el lector de tarjetas y abrimos el Minitool Partition Wizard.

1.- Localizamos nuestra tarjeta de memoria (la letra de unidad dependerá de los discos duros o particiones que tengamos en nuestro PC).

2.- Teniendo seleccionada la partición de nuestra microSD, pulsamos en este orden: DELETE (Borrar) y luego sobre APPLY (Aplicar) CON ESTO BORRAREMOS TODOS LOS DATOS DE NUESTRA TARJETA

3.- Una vez completado el borrado de la tarjeta, procedemos a crear las 2 particiones, la primera destinada al almacenamiento de nuestros archivos (imagenes, videos, musica, etc) y la segunda para el uso de LINK2SD.

     3.1 Creación de la primera partición, FAT32 (DATOS). Aquí irán fotos, videos, etc.

a) Pulsamos sobre CREATE (Crear) y se nos abre una pantalla con nuevas opciones.

b) Elegimos el tamaño destinado al uso de nuestros datos, normalmente todo el tamaño de la microSD excepto 1GB que dejaremos para la segunda partición donde se instalarán las aplicaciones.

c) Seleccionamos el tipo de partición y elegimos PRIMARY (Primaria)

d) Seleccionamos el formato que se le dará a la partición, FAT32 y pulsamos OK

e) Pulsamos sobre APPLY, se abrirá una ventanita pidiéndonos confirmación y le damos a YES

Ya tenemos creada la primera partición.

    3.2 Creación de la segunda partición, FAT32, EXT2, EXT3 o EXT4. Aquí irán las aplicaciones.

Nota: Si la creamos en FAT32 la reconocerán todos los móviles Android, si EXT2 casi todos y si EXT3 o EXT4 muchos menos. El sistema de archivos EXT da mejores prestaciones que FAT32, pero voy a describir el método con FAT32 por ser más universal.

a) Seleccionamos la parte de la tarjeta que aún no tiene formato, pulsamos sobre CREATE (Crear) y se nos abre una pantalla con nuevas opciones.

b) Ocuparemos todo el tamaño que quede en la microSD tras hacer la primera partición. Lo recomendable es que sea de 1 GB o menos

c) Seleccionamos el tipo de particion y elegimos PRIMARY (Primaria). SÓLO ASÍ FUNCIONARÁ.

d) Seleccionamos formato de la partición, FAT32 (podéis probar EXT2) y pulsamos sobre OK

e) Pulsamos sobre APPLY, se abrirá una ventanita pidiéndonos confirmación y le damos a YES.

PARTE II] La preparación de la aplicación Link2SD (en un móvil rooteado)

1.- Descargamos e instalamos el Link2SD desde la PLAY STORE en nuestro teléfono Android y lo ejecutamos. Nos pide privilegios de superusuario (administarador o root) y se los damos.
 Automáticamente nos debería de saltar el SCRIPT de montaje, donde tendremos que seleccionar el tipo de la segunda partición (Fat32, ext2, ext3 ...) Le damos a aceptar y nos pedirá reiniciar el teléfono.

2.- Después de reiniciar, volvemos a entrar en el Link2SD, pulsamos en el botón de MENÚ del móvil y entramos en AJUSTES, marcamos la opción: ENLACE AUTOMÁTICO

3.- Entramos en la segunda opción AJUSTES ENLACE AUTOMÁTICO, y marcamos las 3 opciones ENLAZAR APLICACIÓN, ENLAZAR DALVIK CACHE y ENLAZAR LIBRERÍAS.

    Una vez hecho volvemos a la aplicación y ya deberíamos tener listo el programa para que automáticamente mueva las aplicaciones que instalemos a partir de este momento a la segunda partición de la microSD. Cada vez que una aplicación se instale, lo hará en la segunda partición de la microSD creándose un enlace (link) a ella en la memoria interna. 


   Se comprueba que funciona si en Link2SD vemos que se libera espacio en la memoria interna y que se va ocupando espacio en la segunda partición de la microSD.

Y esto es todo, ¡que ya vale!

Saludos a quienes hayan podido leer este "tocho".



6 comentarios:

  1. Solo añadir una cosa (muy importante): en cuanto se extraiga la tarjeta (ya sea voluntaria o involuntariamente), se detendrán todas las aplicaciones contenidas en ella. Y ya si la formateamos... adiós.

    Un saludo! Y perdón por ser tan pesado...

    ResponderEliminar
  2. Hola Roberto. Encantada de saludarte de nuevo.

    Estoy totalmente de acuerdo contigo: si usamos una partición de la microSD como extensión de la memoria
    interna, estamos forzando a que esa tarjeta forme parte inseparable del teléfono. Si la sacas ya no arrancan las aplicaciones instaladas en ella, aunque funcionan perfectamente las del sistema, e imagino que a nadie se le ocurre formatearla, por lo menos la partición segunda aunque tendría mucho menor efecto en la primera.

    De pesado, nada de nada. De momento eres el único que comenta mis post y estoy por ello muy agradecida.

    Un saludo

    ResponderEliminar
  3. Pues nada, ya sabes... pásate un día:

    http://cantadroide.blogspot.com.es/

    ResponderEliminar
  4. Ya me he pasado y he leído tu blog desde el primer día, pero no me he atrevido a comentar nada porque... ¡VAYA NIVELAZO QUE POSEES !. Yo soy una simple usuaria curiosa que le gusta aprender el funcionamiento de lo que usa, por lo menos la idea básica.

    Yo de programar Android lo único que he intentado, y conseguido, es crear pequeñas aplicaciones apk de consumo interno con la app "Tasker" + "Tasker App Factory", pero para nada uso código.

    Gracias de nuevo

    ResponderEliminar
    Respuestas
    1. Nivelazo dice... estoy en una fase muy temprana de aprendizaje, lo que sé te lo explico en dos tardes.

      Eliminar
    2. Modesto debe de ser tu segundo nombre. ¿no?

      Eliminar