2010-08-12 11 views
44

He estado ejecutando el SDK de Android desde hace un tiempo en Eclipse (MAC OSX). He descargado el NDK e instalado las herramientas de C/C++ en Eclipse, pero ¿podría alguien guiarme en el uso del NDK? Por ejemplo, ¿acabo de crear un proyecto de Android como normal y construirlo con el NDK en su lugar?Instalación y uso de Android NDK en Eclipse

Realmente podría hacer con un tutorial decente si alguien sabe de alguno.

EDIT: OK, entonces tengo el NDK instalado ahora (creo) pero ¿alguien tiene alguna idea de cómo usarlo? Llegué tan lejos como esto (tomado de here):

Run Terminal

cd ~/android-NDK-1.5_r1

marca APP = hola-JNI

En Para ejecutar la aplicación de ejemplo hello-jni, pero me sale un error en la terminal diciendo:

Andro Identificación del NDK: APP variable definida a aplicaciones desconocidas: hellojni
Android NDK: Es posible que desee utilizar uno de los siguientes:
acumulación/core/main.mk: 81: *** Android NDK : Abortar. Detener.

¿Alguna idea de por qué?

+0

Buena pregunta. Necesito usar el NDK para un proyecto en el que estoy trabajando ahora, y no hay mucha información buena por ahí. – I82Much

+0

Sí, no me queda mucho tiempo hoy, pero si lo soluciono, lo actualizaré aquí ... –

+1

He escrito un tutorial paso a paso aquí. http://www.permadi.com/blog/2011/09/setting-up-android-jni-projects-in-windows-eclipse-and-sequoyah/ Espero que ayude. –

Respuesta

25

Tan simple como lo puedo describir, crear una aplicación para Android desde dentro de Eclipse que use el NDK requiere dos pasos.

Primero, dentro de su terminal necesita ejecutar el script de compilación NDK en su proyecto. cd en la raíz de su directorio de proyecto y luego ejecute la secuencia de comandos ndk-build dentro de ese directorio.

Por ejemplo:

cd ~/workspace/hello-jni 
./~/android-ndk-1.5_r1/ndk-build 

Después de hacer esto, usted debe ver algunos de salida que da lugar a la creación de un archivo * .SO dentro del directorio obj en el directorio del proyecto.

Una vez que tenga el archivo * .SO, el paso final para compilar una aplicación con el NDK de Android a través de Eclipse es compilarlo con Eclipse como lo haría con cualquier otra aplicación y luego implementarlo para probarlo.

Si realiza algún cambio en el código C/C++ tendrá que repetir el primer paso y volver a generar su archivo * .SO antes de compilar e implementar su aplicación desde Eclipse nuevamente.

Me gustaría señalar que mediante el uso de Android NDK sus aplicaciones de Android todavía se basan en Java. Solo se están comunicando con el código escrito en C/C++ a través del Java Native Interface.

Finalmente, no conozco ningún plugin de Eclipse que ayude con el desarrollo de NDK. Todo lo que sé sobre el NDK he aprendido el Android NDK documentation oficial. Por favor, siéntase libre de comentar y dejarme saber si hay algo que pueda aclarar en mi respuesta.

+2

Oye, gracias, escribí esta pregunta hace un par de años y nunca la analicé, así que lo intentaré dentro de unos días. Gracias +1 –

+1

Gracias ... He visto tantas respuestas en conflicto y esta lo hizo por mí. – Kalle

+0

Clara respuesta, útil –

5

El directorio de documentos en el NDK tiene información bastante buena sobre cómo usar el NDK.Lea la descripción general, Application.mk y Android.mk documentos HTML. Deberá buscar en Google el PDF de Sun JNI, descargarlo y conocer de qué se trata JNI antes de seguir adelante. Esto es porque simplemente compilar un montón de código C/C++ en bibliotecas con el NDK es solo una parte del proceso. Tienes que escribir el código nativo de Java que llama a tu C/C++, y tienes que crear funciones de envoltura en C/C++ que cumplan con las convenciones de JNI que el código nativo de Java puede invocar. JNI ha existido por mucho tiempo, no es específico de Android de ninguna manera. Por lo tanto, puede aprender mucho acerca de los tutoriales orientados a JNI, utilizando herramientas de línea de comandos como javah y javac, y luego volver a integrarse con el NDK después de conocer los conceptos básicos. (Para ver un ejemplo de cómo son estas calzas C, eche un vistazo a la muestra hello-jni en el NDK; el archivo fuente C allí muestra a qué se parecen las cuñas. Usar javah para generar estas cuñas es el camino a seguir , crea clases Java que tienen métodos nativos, las procesa con javah y genera los encabezados C para usted, luego codifica las funciones C que se adhieren a los prototipos de función generados).

Nota: mientras que los documentos NDK tendrían que crear manualmente desde la línea de comandos y luego entrar en Eclipse para construir su aplicación (una serie de pasos laboriosos, para asegurarse, especialmente si está cambiando el código C/C++), resulta que puede integrarse fácilmente con Eclipse para que el NDK se ejecute cada vez que compila desde Eclipse. Para ver cómo, read here.

1

Para intentar responder a la pregunta directa - se necesita ejecutar ndk-build en la carpeta con el código nativo dentro de su carpeta de proyecto. Esto crea los archivos .so encontrados en el árbol del explorador de archivos/recursos en jni en Eclipse. Estas funciones, si la sintaxis en el código es correcta, ahora se puede llamar desde su código java.

Encontré muchas fuentes de ayuda cuando me instalé y me familiaricé con las herramientas de desarrollo de Android y el NDK. Escribí un blog post compartir mi experiencia y espero devolver a la comunidad que me ayudó a llegar allí, que pueden ayudar a entender mi respuesta: http://workingmatt.blogspot.co.uk/2013/03/set-up-android-sdk-and-ndk.html

12

desarrollo nativo y soporte de depuración entraron en entorno Eclipse partir de la versión 20. ADT http://tools.android.com/recent/usingthendkplugin

  • establecer la ruta a NDK de preferencias de Eclipse -> Android -> NDK
  • Haga clic derecho en su proyecto y elija Android Herramientas -> Añadir soporte nativo

developer.android.com afirma que también necesita Cygwin.

http://developer.android.com/tools/sdk/ndk/index.html#Contents

obligatorios herramientas de desarrollo

  • Para todas las plataformas de desarrollo, GNU Make 3.81 o posterior es necesario. Las versiones anteriores de GNU Make podrían funcionar, pero no se han probado.
  • También se requiere una versión reciente de awk (ya sea GNU Awk o Nawk).
  • Para Windows, se requiere Cygwin 1.7 o superior. El NDK no funcionará con las instalaciones de Cygwin 1.5.
+1

¡Extrañé esto, gracias por el aviso! – slott