2012-01-19 17 views
16

¿Hay una posible manera de escribir una aplicación de toda NDK con/++ sin un "arranque" de Java clase C C como en hola-JNI proyecto de ejemplo (HelloJni.java) - de alguna manera a crear una HelloJni.c que hará lo mismo?Android NDK - escribir sólo en C/C++

+1

puede ayudar esto http://stackoverflow.com/q/1002164/775964 –

Respuesta

15

Desde Android 2.3 (Nivel API 9) se encuentra el NativeActivity que le permite a uno código de una aplicación Android en C++ solamente. También hay un ejemplo para esto en el paquete NDK.

Una cita de la NDK Overview:

Cuando se desarrolle en código nativo

El NDK no beneficiará a la mayoría de las aplicaciones. Como desarrollador, necesita para equilibrar sus beneficios con sus inconvenientes; en particular, el uso del código nativo no da como resultado un aumento automático del rendimiento, pero siempre aumenta la complejidad de la aplicación. En general, solo debe usar el código nativo si es esencial para su aplicación, no solo porque prefiere programar en C/C++.

Los buenos candidatos típicos para el NDK son operaciones autónomas, intensivas en CPU que no asignan mucha memoria, como el procesamiento de señales, simulación física, y más. simplemente re-codificación de un método para ejecutar en C por lo general no da lugar a un gran aumento de rendimiento. Cuando examinar si debe o no desarrollarse en código nativo, piensan acerca de sus necesidades y ver si la API de Android marco proporcionan la funcionalidad que necesita. El NDK puede, sin embargo, ser una forma efectiva de reutilizar un gran corpus del código existente de C/C++ .

El marco Android proporciona dos maneras de utilizar código nativo:

  • escribir una aplicación utilizando el marco de Android y utilizan JNI para acceder a las API proporcionadas por el NDK de Android. Esta técnica le permite usar para aprovechar la conveniencia del marco Android, pero aún le permite escribir código nativo cuando sea necesario. Puede instalar las aplicaciones que usan código nativo a través del JNI en dispositivos que ejecutan Android 1.5 o posterior.

  • Escribe una actividad nativa, lo que le permite implementar las devoluciones de llamada de ciclo de vida en código nativo. El SDK de Android proporciona la claseNativeActivity , que es una clase de conveniencia que notifica a su código nativo de cualquier actividad devoluciones de llamada de ciclo de vida (onCreate(), onPause(), onResume(), etc). Puede implementar las devoluciones de llamada en su código nativo para manejar los eventos cuando ocurran. Las aplicaciones que utilizan las actividades nativas se deben ejecutar en Android 2.3 (Nivel API 9) o posterior.

No se puede acceder a características como servicios y proveedores de contenido forma nativa, por lo que si desea utilizarlos o de cualquier otro API del marco, que todavía puede escribir código JNI para hacerlo.

Tomaría C/C++ al portar el código y posiblemente al desarrollar juegos de plataforma cruzada.

+0

'pero siempre aumenta la complejidad de la aplicación 'Wow, cita más necesaria, escritor de documentos android. –

1

Dado que toda la interfaz de usuario, los gráficos y otras clases interesantes están en Java, deberá utilizar Java de una manera o otra.

Por otra me refiero a la interfaz con todas las clases de Java a través de JNI. Hay una biblioteca para eso: https://github.com/DmitrySkiba/itoa-jnipp. Verifique HelloJNIpp muestra - muestra que sí es posible escribir aplicaciones Android completamente en C++, la única pega es que primero deberá implementar todas las envolturas necesarias (algunas están en la carpeta samples/common).

Sin embargo, recomiendo usar Java. Es simple y elegante, tiene grandes bibliotecas y herramientas.