2 votos

`adb shell mv` mueve archivos pero la aplicación deja de funcionar, mientras que funciona si muevo los mismos archivos a través del administrador de archivos

Intento mover archivos/directorios relacionados con la cuenta de una aplicación (para cambiar propósitos de cuenta) a través de adb shell mv. Mover los archivos funciona muy bien, pero la aplicación se cuelga mientras carga/inicia sesión.

Si muevo los archivos manualmente a través del administrador de archivos, no hay ningún problema (muevo los archivos de /data/data/com.example.app a sdcard y vuelvo a mover los mismos archivos desde otra cuenta de regreso a la carpeta de la aplicación) -> todo funciona bien, la aplicación se carga, la cuenta se inicia sesión y cambiar de cuenta funciona sin ningún problema.

Si muevo los archivos a través de adb shell mv, la aplicación se queda atascada mientras carga. Si muevo los archivos a sdcard vía adb shell mv y los muevo de regreso con el administrador de archivos, también funciona bien. Pero si muevo los archivos de sdcard a la carpeta de la aplicación, no funciona.

También intenté copiar el archivo a través de adb shell cp -r pero tuve el mismo problema.

¿Alguien tiene una idea de cuál es el problema o cómo solucionar este problema? ¿Corrompe mv los archivos? Pero si corrompiera los archivos, no funcionaría si los moviera a sdcard vía shell mv y los moviera de regreso vía el administrador de archivos.


Parece que Robert tiene razón, el grupo de archivos cambia:

Carpeta original:

drwxrws--x 8 u0_a295 u0_a295_cache 3452 2024-01-31 10:30
drwxrwx--x 3 u0_a295 u0_a295       3452 2024-01-31 10:31

Carpeta después de mover:

drwxrws--- 10 u0_a218 media_rw 3452 2024-01-31 10:33
drwxrws---  4 u0_a218 media_rw 3452 2024-01-31 10:33

Archivos originales:

-rw-rw---- 1 u0_a295 u0_a295    1229 2024-01-31 10:32

Archivos después de mover:

-rw-rw---- 1 u0_a218 media_rw    1229 2024-01-31

3voto

pr0nin Puntos 353

Tu problema principal es que mueves archivos y carpetas entre secciones especiales del sistema de archivos: desde la carpeta app-private donde solo la app tiene acceso a /sdcard una carpeta especial donde no puedes ejecutar nada y todos los archivos/carpetas están asignados a un grupo especial media_rw.

Para entender por qué funciona la carpeta app-private necesitas saber que Android crea para cada app una cuenta de usuario propia, en tu ejemplo todos los archivos y carpetas app-private son propiedad del usuario u0_a295 y del grupo u0_a295 / u0_a295_cache.

Si mueves los archivos a /sdcard el grupo se cambia a media_rw ya que la sección de la tarjeta SD lo impone. Si luego mueves de vuelta los archivos a la carpeta app-private el grupo media_rw permanece y los archivos y carpetas tienen un usuario y grupo propietario cambiado.

Para corregir eso puedes ejecutar

chown -R u0_a295:u0_a295 /data/data//files/

Ten en cuenta que si desinstalas y reinstalas la app o intentas lo mismo con una app diferente, el nombre de usuario y grupo será diferente (no u0_a295).

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X