¿Puedo cambiar la ubicación del caché dalvik, por ejemplo, con un enlace simbólico?

Actualmente uso Link2SD porque el almacenamiento integrado de mi teléfono es insuficiente para más de unas pocas aplicaciones esenciales. Es muy efectivo pero limitado cuando el teléfono está encendido.

Al cambiar las ROM, el caché de dalvik se borra y cuando el teléfono se reinicia, verá una barra de progreso que dice que Android está optimizando las aplicaciones. Entonces, dada una cantidad razonable de aplicaciones, el caché dalvik llena el almacenamiento mucho antes de que link2sd pueda hacer algo al respecto.

Entonces, ¿hay alguna manera de montar una carpeta de tarjeta SD como la ubicación de caché adecuada antes de que el sistema comience a arrancar y hacer su trabajo? Sé que podría implicar la creación de un enlace simbólico, pero no sé cuándo se montan las cosas y en qué orden.

Respuestas (2)

Por supuesto que puede. Aunque parece que no hay problema para migrar dalvik-cache a un sistema de archivos de tarjeta SD normal (el más común, vfat), se recomienda enfáticamente que formatee su tarjeta SD a ext4 (o igual que su /data) para asegurarse de que todo funcione bien.

Entonces vamos. Se recomienda una copia de seguridad completa de todas sus aplicaciones antes de continuar, aunque si tiene suerte, no es necesario. Suponiendo que tiene un emulador de terminal para hacer los trabajos necesarios.

Primero, cree una carpeta a la que desee migrar su dalvik-cache. Entonces chmody chownla nueva carpeta para que coincida /data/dalvik-cache. Si está ejecutando un sistema operativo Android habilitado para SELinux, no olvide cambiar los contextos de seguridad correspondientemente. Correr

ls -dlZ /data/dalvik-cache
ls -lZ /data/dalvik-cache

para ver los permisos originales, propietarios/grupos y contextos de seguridad de la carpeta dalvik-cache.

A continuación, copie todos los archivos desde /data/dalvik-cachesu nueva ubicación, por ejemplo /storage/sdcard1/dalvik-cache. Puede usar cp -ael comando para conservar los atributos del archivo, lo que simplificaría las cosas.

Asegúrese de que no se inicien nuevas aplicaciones durante el proceso del siguiente paso.

Luego, rm -r /data/dalvik-cachey crea un enlace simbólico a la nueva ubicación usando

ln -s /storage/sdcard1/dalvik-cache /data/dalvik-cache

Eso es todo. hemos terminado Reinicie su teléfono (no es obligatorio, pero se recomienda).

Algunos avisos sobre este proceso:

  1. Es posible que el busybox no siempre funcione bien, ya que Android se basa en un kernel de Linux altamente modificado. Por ejemplo, casi todas las funciones relacionadas con SELinux no funcionan correctamente. Puede probarlo como se muestra a continuación.

    toolbox ls -Z /data
    busybox ls -Z /data
    toolbox getenforce
    busybox getenforce
    

    Sin embargo, estos pueden funcionar correctamente, dependiendo de la versión de Android:

    busybox chcon <context> <files...>
    busybox runcon <context <program> [args...]
    
  2. Nunca extraiga su tarjeta SD. Si vuelve a formatear su tarjeta SD, asegúrese de que todavía esté ext4 Y vuelva a crear la carpeta dalvik-cache antes de iniciar su teléfono por primera vez.

No tenía idea de cómo escribí esta respuesta integral cuando la volví a ver después de un año. Supongo que me he olvidado mucho de Android (lo que, por supuesto, es imposible).

Hay algunos buenos Howtos disponibles, que pueden resultar útiles para resolver su problema:

De acuerdo con varios hilos del foro, A2SDGUI - Darktremor A2SD GUI debería ser la aplicación preferida para mover el caché de Dalvik a su tarjeta SD.

Sería bueno si pudiera agregar alguna información de los enlaces en su publicación
Eso es demasiado para integrar con mi respuesta, por lo que solo extraje la sugerencia básica, es decir, la aplicación con la que hacer el trabajo.