1 votos

permisos de ejecución en el sistema de archivos fuse/fat

He compilado con éxito Ruby para Android y todo va bien en el emulador.

Pero mientras estoy probando estas cosas curiosas en mi dispositivo (Nexus4) me di cuenta de que /sdcard (o /storage/emulated/0 ) es un montaje fusible sin permisos de ejecución.

¿Cómo puedo ejecutar algo en la tarjeta SD?

He visto que en Linux se puede pasar como argumento al enlazador. En Android esto no funciona: /system/bin/linker quiere un puntero a una estructura especial. Creo que puedo escribir un pequeño programa en C que cree esa estructura y ejecutar el enlazador para ejecutar un programa legible.

¿Pero qué pasa con las bibliotecas compartidas? Ruby carga decenas de bibliotecas compartidas (cada vez que tiene un "require"), apuesto a que se requieren permisos de ejecución para cargar bibliotecas compartidas.

Mover el ejecutable a /data/data/my.app.name/files/ o cualquier otro lugar no es una solución, mis binarios son muy gordos (enlazados estáticamente) y los usuarios deberían ser libres de especificar cualquier ubicación donde almacenarlos.

1voto

tux_mind Puntos 43

He encontrado una solución/hack para listarlos.

cuando abres un archivo en el punto de montaje, el manejador de fuse FS lo abrirá también.

Utilicé esta información y escribí un pequeño programa en C que utiliza proc para encontrar los directorios de origen.

si le interesa el el proyecto está alojado en github .

saludos, tux_mind.

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