He visto una manera súper fácil de crear aplicaciones en código nativo para Android (es decir archivos binarios ejecutables) en este blog (www.myboyfriendisageek.com), aquí les dejo una variante.
Antes de continuar algunas aclaraciones:
OBJETIVO:
- Crear un archivo binario ejecutable llamado “test“.
- Dar atributos de ejecutable al programa “test”.(Hardware: Necesitas root obligatorio, Emulador: Ya viene rooteado)
- Colocar el programa “test” en nuestro dispositivo Android. Se ejecuta usando algún programa que emule una terminal en Android, escribiendo “./test”. Esto al estilo de los programa ls, mkdir, rm, etc. Que ya están en tu dispositivo Android en la dirección “/system/bin”
REQUISITOS:
- Debes tener descargado y descomprimido el SDK de Android.
- Debes tener descargado y descomprimido el NDK de Android.
- Si deseas testear el programa en un dispositivo real, este debe de estar root-eado. Caso contrario deberas usar un emulador. Por causa de que solo puedes darle atributos de ejecución a un programa cuando eres root.
METODO:
He descomprimido la SDK y la NDK en mi carpeta “~/Android” obteniendo en el interior a la fecha (Junio-2011) las carpetas “android-sdk-linux_x86″ y “android-ndk-r5c”.
Creando la StandAlone-ToolChain (Cadena de herramientas independientes), Escribe y ejecuta el script.
creando-toolchain.sh:
ANDROIDDIR=~/Android
NDK=$ANDROIDDIR/android-ndk-r5c
MAKETOOLCHAIN=$NDK/build/tools/make-standalone-toolchain.sh
PLATFORM=android-9
INSTALLDIR=$NDK/.standalone/$PLATFORM-toolchain
chmod +x $MAKETOOLCHAIN
$MAKETOOLCHAIN --platform=$PLATFORM --install-dir=$INSTALLDIR |
Sobre el script “creando-toolchain.sh”
- $MAKETOOLCHAIN es la dirección del script que creará el standalone-toolchain en $INSTALLDIR
- Puedes ver las plataformas disponibles en “$NDK/platforms”. Para Gingerbread API (level 9)
Eso es todo! los binarios del toolchain no dependen o contienen un path específico para el host, en otras palabras, se puede instalar en cualquier lugar, o incluso mover si es necesario. Ahora, sólo tienes que agregar la carpeta de binarios “$INSTALLDIR/bin” en tu variable de entorno $PATH:
y escribiendo al final:
export PATH=:~/Android/android-ndk-r5c/.standalone/android-9-toolchain/bin:$PATH |
Para finalizar reinicia o cierra sesión.
Para compilar, crea el programa test.c:
#include <stdio.h>
int main(int argc, char** argv)
{
printf("HOLA MUNDO\n");
return 0;
} |
y compila con:
arm-linux-androideabi-gcc -o test test.c |
Esto creará el programa “test”. Para enviar y dar privilegios de ejecución al programa en tu dispositivo Android, o tu emulador, usa los siguientes comandos tomando en cuenta [1]:
adb push test /data/test
adb shell chmod 777 /data/test |
Usando el programa adb tambien puedes ejecutar el programa “test” en tu dispositivo android y ver el resultado:
Si simplemente quieres jugar con la shell de tu dispositivo android ejecuta:
PROBLEMAS:
- Necesitas ser root!!!, no puedo esperar que todas las personas que quieran instalar mi programa(osea copiar y dar privilegios de ejecución) sean root. El problema es la instalación, una vez instalado supongo que un usuario normal podría ejecutarlo, pero el trabajo de rootearlo ya se hizo.
[1] Para que esto funcione debes tener instalado el SDK y las carpetas “$ANDROIDDIR/android-sdk-linux_x86/platform-tools” y “$ANDROIDDIR/android-sdk-linux_x86/tools” deben de estar en tu variable de entorno PATH. Para conseguirlo es necesario:
y escribir al final:
export PATH=:~/Android/android-sdk-linux_x86/platform-tools:$PATH
export PATH=:~/Android/android-sdk-linux_x86/tools:$PATH |
Para finalizar reinicia o cierra sesión.