A partir del API Nivel 8 (Android 2.2), es posible que nuestras aplicaciones puedan ser instaladas en una memoria externa (por ejemplo una memoria Micro SD); esto es importante ya que el espacio interno o memoria interna de los teléfonos Android tiende a ser reducido; y la mayoría de ellos pueden ser fácilmente ampliados con una tarjeta Micro SD.
Configurando el proyecto para permitir la instalación de las aplicaciones Android en memoria externa
Para llevar a cabo esta labor; de permitir la instalación de nuestras aplicaciones Android dentro de una memoria externa; solo debemos de incluir dentro de nuestro archivo androidmanifest.xml en el elemento (tag) manifest el siguiente atributo:
android:installLocation
Con uno de los siguientes valores:
preferExternal:
Indica que es preferible que la instalación de nuestra aplicación se realice en un almacenamiento externo (por ejemplo una Micro SD); pero la decisión final la tiene el sistema; es decir el sistema no da garantía de que la aplicación sea instalada en un almacenamiento externo; por supuesto, a partir de Android 2.2 (API Nivel 8) vemos que en el menú Configuraciones >> Aplicaciones >> Administrar aplicaciones >> Mover a teléfono (imagen 1) podremos mover fácilmente la aplicación de la memoria interna a una memoria externa y viceversa.auto:
Indica que la aplicación puede ser instalada en una memoria externa, pero no tiene preferencia entre una y la otra (memoria interna y memoria externa); al igual que con el valor anterior (preferExternal); el sistema decide donde realizará la instalación y el usuario podrá mover la aplicación de la memoria interna a una memoria externa y viceversa.
Un ejemplo de todo lo visto:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="preferExternal" … >
![Mover una aplicación a la tarjeta de memoria Android Mover una aplicación a la tarjeta de memoria Android](/public/images/example/android/android-mover-a-tarjeta-de-memoria.png)
Imagen 1: Configuraciones >> Aplicaciones >> Administrar aplicaciones >> Mover a tarjeta de teléfono en Android 2.3.
Cuando la aplicación es instalada en una memoria externa
- El rendimiento de la aplicación NO se verá afectada en lo absoluto; siempre y cuando la memoria externa esté "montada" en el dispositivo.
- EL .apk esta almacenada en la memoria externa; sin embargo, la data privada, base de datos, los archivos .dex están almacenados en la memoria interna del dispositivo.
- La aplicación que se ha instalado en una memoria externa solo funcionará en el dispositivo que se instalado originalmente; es decir; si ha instalado una aplicación en una Micro SD en la tablet/teléfono A, luego desmonta la Micro SD y la coloca en la tablet/teléfono B; este último no reconocerá la aplicación originalmente instalada en la tablet/teléfono A; y esto se debe a que las aplicaciones instaladas en un almacenamiento externo (la Micro SD en este ejemplo) se almacenan de forma cifrada con una clave que sólo conoce el dispositivo original (en donde se realizó la instalación).
- Como lo hemos comentado, el usuario podrá mover la aplicación de la memoria interna a la externa y viceversa.
Compatibilidad con APIs menores a la 8 (compatibilidad hacia atrás)
Aunque esta funcionalidad sólo podrá ejecutarse con dispositivos que corran Android 2.2 (API Nivel 8) en adelante; si la aplicación esta diseñada para soportar APIs menores a la 8 (que por supuesto podrá ser instalada en un dispositivo con nivel de API mayor a la 8); podremos utilizar esta funcionalidad con sólo modificar el Build Target para el Nivel de API 8.
Esta es la única modificación que hay que realizar; y esto es para que logre compilar la aplicación; ya que librerías menores a la 8 no entenderán el atributo android:installLocation; con esto podremos agregar el android:installLocation con alguno de los valores ya explicados anteriormente auto o preferExternal.
Cuando la aplicación sea instalada en un dispositivo con el Nivel de API menor a la 8; simplemente se ignorará el atributo android:installLocation.
La documentación oficial podras encontrarla dando clic aquí.
![Andrés Cruz Andrés Cruz](/public/images/perfil.jpg)
Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter