Ubicación grabable y ejecutable en Android

He compilado un binario usando la cadena de herramientas de Android NDK, y estoy intentando desplegarlo en un dispositivo. Una aplicación que se ha construido con el NDK utilizando JNI ejecutará este binario a través del código nativo. Espero evitar el enraizamiento del dispositivo.

El binario será utilizado por múltiples aplicaciones, por lo que me gustaría almacenarlo en una ubicación compartida, en lugar de una vez por aplicación.

No puedo encontrar una ubicación adecuada para desplegar este binario en – estos son los lugares que he probado:

  1. / Mnt / sdcard – usando getExternalStoragePublicDirectory () del SDK, sin embargo la tarjeta SD se monta como noexec, lo que significa que no se puede ejecutar.

  2. / System / bin – sistema de archivos de sólo lectura, por lo que no se puede copiar. Puedo empujar el archivo usando el empuje del adb si remonte / system en el emulador usando:

    mount -o rw,remount -t yaffs2 /dev/block/mtd3 /system 

    Sin embargo, me gustaría evitar esto, ya que el dispositivo tendría que estar arraigado.

  3. / Data / local – usando el empuje del adb, puedo empujar el binario a esta localización. Sin embargo, no puedo encontrar una manera de hacer esto en código (usando el SDK de Android). El mecanismo de almacenamiento interno apunta a / data / data / package .

He compilado código nativo que llama a este ejecutable, utilizando arm-linux-androideabi-g ++ enviado con la cadena de herramientas NDK. Esto funciona con el binario in / system / bin y / data / local .

En resumen, estoy buscando una ubicación en el sistema de archivos de Android en el que puedo copiar un archivo de la carpeta de proyectos / activos, que permisos ejecutables en el mundo son posibles.

Si desea evitar el enraizamiento del dispositivo, básicamente, la tarjeta SD es el único lugar que puede asumir es mundo escribible ( EDIT : mente los cambios recientes en el marco de Android a partir de 2014/2015!). Es mejor hacer su parte binaria de APK instalable que luego extraer este binario de APK en el almacenamiento privado, lo convierten en mundo ejecutable etc y de alguna manera anunciar la ubicación binaria, pero en general esperan algunos problemas dependiendo de la versión del SO y el proveedor

/data/local/tmp/ y "/data/data/" + packageName + "/files"

Para las pruebas directas objetivo binario, primero es recomendable.

Si puede utilizar adb, puede preparar directorio / data / local / bin con permisos 777.

Alternativamente, puede crear un archivo en el directorio de la aplicación privada (/data/data/your.package.unique.name/files) y establecer los permisos de archivo en 777 755.

  • Leer archivo en android - permiso de archivo denegado
  • Sistema de archivos de la tarjeta SD de Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.