Red de conocimiento informático - Material del sitio web - Cómo compilar programas C con STL en la plataforma Android

Cómo compilar programas C con STL en la plataforma Android

1. Descargue el último SDK de Android y descargue la versión Android NDK R9C.

2. Si está en una plataforma Windows, debe configurar la variable de entorno en PATH para poder llamar directamente al NDK para compilar el programa C.

Agregue las siguientes dos rutas a PATH: lt;ANDROID_NDKgt;;lt;ANDROID_SDKgt;\platform-tools

donde lt;NDKgt; es la ruta de instalación de Android NDK en su computadora. lt;SDKgt; es la ruta de instalación del SDK de Android

Si no hay un directorio de herramientas de plataforma en su SDK, siga la siguiente captura de pantalla en Eclipse:

3. una carpeta (como myproject) para compilar el programa C y cree una carpeta jni en myproject.

mkdir myproject

mkdir myproject/jni

4. Cree dos archivos en la carpeta jni, llamados: android.mk y

archivo aplicación.mk. android.mk es similar al archivo MAKE de un programa C, mientras que application.mk representa las bibliotecas de las que depende el programa actual.

Un ejemplo de android.mk es el siguiente:

LOCAL_PATH := $(call my-dir)

incluye $(CLEAR_VARS)

LOCAL_MODULE:= my_first_app #Especifique el nombre del programa ejecutable compilado por el programa C. Programa ejecutable

LOCAL_SRC_FILES:= my_first_app0.cpp\ #Especifique el archivo fuente a compilar, puede haber varios

my_first_app1.cpp\

...

incluir $(BUILD_EXECUTABLE)# significa que se ha compilado un programa ejecutable

/********************* * ************************************************* ** **/

Un ejemplo de aplicación .mk es: (especifique STB). Un ejemplo de mk es: (Especifique la biblioteca STL en la aplicación.

mk)

APP_STL:= gnustl_static

Aquí hay cuatro opciones al seleccionar la biblioteca STL:

sistema: utiliza la biblioteca de tiempo de ejecución C mínima predeterminada, que A Se generará una aplicación pequeña con un consumo reducido de memoria, pero algunas funciones no serán compatibles.

stlport_static: use STLport como biblioteca estática, altamente recomendada por la red de desarrollo de Android

stlport_shared: utilice STLport como biblioteca dinámica, lo que puede causar problemas de compatibilidad. Esto puede ocurrir con algunas versiones inferiores del firmware de Android. ¡No se recomienda! .

gnustl_static: use GNU libstdc como biblioteca estática

De forma predeterminada, STLPORT no admite el manejo de excepciones de C ni RTTI, así que no use -fexceptions o -frtti si realmente lo necesita. Puede utilizar gnustl_static para admitir funciones estándar de C, pero el tamaño del archivo resultante será mayor y la eficiencia operativa se reducirá.

Para admitir el manejo de excepciones de C, agregue la línea LOCAL_CPPFLAGS =

-fexceptions en Application.mk De manera similar, para admitir RTTI, agregue LOCAL_CPPFLAGS =

. -frtti En esta línea, también me gustaría recordarles a todos que presten atención a la segunda línea, es decir, usen la biblioteca estática gnustl en lugar de stlport.

Para forzar la recompilación de STLPort, agregue STLPORT_FORCE_REBUILD en Application.mk: = true para forzar la recompilación del código fuente de STLPort. Por algunas razones, es posible que deba modificar su propia biblioteca STLPort. Por algunas razones, es posible que deba modificar la biblioteca STLPort usted mismo, pero generalmente los desarrolladores no necesitan usarla.

5 Abra la consola (cmd) y use la herramienta de compilación NDK de Android en el directorio myproject para. compila el programa C:

cd myproject

$NDK/ndk-build

Si el programa es correcto, compilará el código fuente de android. Si el programa es correcto, el archivo ejecutable de Android se compilará y la ubicación estará en myproject/libs/armeabi/my_first_app

8. La my_first_app compilada se colocará en el teléfono móvil o simulador para ejecutarla. Ejecute adb.exe en Windows cmd.

Utilice adb.exe para enviar el programa my_first_app al directorio /data/local del teléfono o simulador:

adb.exepush myproject\libs\armeabi\my_first_app /data/local app /data/local.

9. Ejecute my_frist_app en el teléfono a través de adb:

Ejecute:

adb.exe shell en cmd

Esto lo llevará a la terminal Linux de su teléfono, donde puede cambiar los permisos de my_first_app para que pueda ejecutarse:

Esto lo llevará a la terminal Linux de su teléfono.

Puedes ejecutar:

cd /data/local

chmod 777 my_first_app

./my_first_app// Si es correcto, esto ejecutará my_first_app

En este punto, finaliza el proceso de compilación de un programa C que contiene STL en Android.