¿Qué es el kit de desarrollo nativo de Android (NDK)?

Respuestas:

93

El NDK (Native Development Kit) es una herramienta que te permite programar en C / C ++ para dispositivos Android. Está diseñado para integrarse con el SDK (se describe como una "herramienta complementaria") y se usa solo para las partes críticas del rendimiento de un proyecto. Consulte aquí para obtener más información.

Ted Hopp
fuente
11
@YoushaAleayoub: en un dispositivo Android, el código escrito en Java se ejecuta en la máquina virtual Java, un programa proporcionado por el sistema que interpreta los códigos de bytes de Java. El código escrito en C / C ++ se compila en instrucciones de máquina que se ejecutan directamente en la CPU. Este último código se denomina código "nativo" porque es nativo de la CPU. Tenga en cuenta que diferentes CPU requieren diferentes instrucciones de código nativo. Por lo tanto, cuando usa el NDK, tiene la opción de generar código para un solo tipo de hardware o para una amplia gama de CPU, todas las cuales terminan empaquetadas en el archivo .apk para su aplicación.
Ted Hopp
Entonces, si quiero usar OpenCV en Android, ¿es mejor usar la versión C ++?
user8663682
@ user8663682 - Recomendaría usar la versión de Android . Todavía requiere el uso de NDK, pero ya se ha hecho todo el trabajo de exponer las capacidades a las aplicaciones de Android.
Ted Hopp
56

El NDK puede mejorar el rendimiento de la aplicación. Esto suele ser cierto para muchas aplicaciones vinculadas al procesador. Muchas aplicaciones multimedia y videojuegos utilizan código nativo para tareas que requieren un uso intensivo del procesador. Las mejoras de rendimiento pueden provenir de tres fuentes. En primer lugar, el código nativo se compila en un código binario y se ejecuta directamente en el sistema operativo, mientras que el código Java se traduce al código de bytes de Java y lo interpreta Dalvik Virtual Machine (VM) . En Android 2.2 o superior, se agrega un compilador Just-In-Time (JIT) a Dalvik VM para analizar y optimizar el código de bytes de Java mientras se ejecuta el programa (por ejemplo, JIT puede compilar una parte del código de bytes para código binario antes de su ejecución). Pero en muchos casos, el código nativo aún se ejecuta más rápido que el código Java.

Dalvik VM ejecuta el código Java en Android. Dalvik VM está especialmente diseñado para sistemas con recursos de hardware limitados (espacio de memoria, velocidad del procesador, etc.).

La segunda fuente de mejoras de rendimiento en NDK es que el código nativo permite a los desarrolladores hacer uso de algunas funciones del procesador que no son accesibles en Android SDK, como NEON, una tecnología de datos múltiples de instrucción única (SIMD) , que permite procesar múltiples elementos de datos. en paralelo. Un ejemplo de tarea de codificación particular es la conversión de color para un fotograma de video o una foto. Supongamos que vamos a convertir una foto de 1920x1280 píxeles del espacio de color RGB al espacio de color YCbCr. El enfoque ingenuo consiste en aplicar una fórmula de conversión a cada píxel (es decir, más de dos millones de píxeles). Con NEON, podemos procesar varios píxeles a la vez para reducir el tiempo de procesamiento.

El tercer aspecto es que podemos optimizar el código crítico a nivel de ensamblador, que es una práctica común en el desarrollo de software de escritorio.

Desventaja

El NDK no puede acceder directamente a muchas API disponibles en el SDK de Android, y el desarrollo en NDK siempre introducirá una complejidad adicional en su aplicación.

sujith s
fuente
19

El NDK de Android es una herramienta complementaria que se utiliza solo junto con el SDK de Android, que permite a los desarrolladores de aplicaciones crear partes de sus aplicaciones de rendimiento crítico mediante el uso de código nativo (C / C ++).

Esto proporciona beneficios en forma de reutilización del código existente y mayor velocidad.

Por favor revise los siguientes enlaces.

Enlace-1

Enlace-2

Enlace-3

Chirag
fuente
8

El NDK de Android es una herramienta complementaria del SDK de Android que le permite crear partes críticas para el rendimiento de sus aplicaciones en código nativo. Proporciona encabezados y bibliotecas que le permiten crear actividades, manejar la entrada del usuario, usar sensores de hardware, acceder a los recursos de la aplicación y más, al programar en C o C ++ . Si escribe código nativo, sus aplicaciones aún se empaquetan en un archivo .apk y aún se ejecutan dentro de una máquina virtual en el dispositivo. El modelo fundamental de la aplicación de Android no cambia.

Los siguientes enlaces también responden a su pregunta:

¿Qué es NDK?

Cuándo desarrollar en código nativo

Descarga NDK

Cómo crear una aplicación NDK

cómo trabajar con NDK

10 consejos para Android NDK

Hussain
fuente
3

El NDK de Android es un conjunto de herramientas que le permite incrustar componentes que utilizan código nativo en sus aplicaciones de Android.

Las aplicaciones de Android se ejecutan en la máquina virtual Dalvik. El NDK le permite implementar partes de sus aplicaciones utilizando lenguajes de código nativo como C y C ++. Esto puede proporcionar beneficios a ciertas clases de aplicaciones, en forma de reutilización de código existente y, en algunos casos, mayor velocidad.

Fuente: http://developer.android.com/sdk/ndk/overview.html

El NDK de Android es una herramienta complementaria del SDK de Android que le permite crear partes críticas para el rendimiento de sus aplicaciones en código nativo. Proporciona encabezados y bibliotecas que le permiten crear actividades, manejar la entrada del usuario, usar sensores de hardware, acceder a los recursos de la aplicación y más, al programar en C o C ++. Si escribe código nativo, sus aplicaciones aún se empaquetan en un archivo .apk y aún se ejecutan dentro de una máquina virtual en el dispositivo. El modelo fundamental de la aplicación de Android no cambia.

Fuente: http://developer.android.com/sdk/ndk/index.html

Daniel Kutik
fuente
3

NDK es solo un conjunto de herramientas que le permite escribir códigos C / C ++ para su aplicación. Por ejemplo, suponga que desea agregar una función / rendimiento crítico a su aplicación y desea escribirla en C / C ++ y luego eclipse o cualquier otro IDE no te permitirá escribir tu C / C ++ y en ese caso tienes que usar NDK e integrarlo en tu aplicación.

Tanmay duro
fuente
2

NDK es un conjunto de herramientas que le permite implementar partes de su aplicación utilizando lenguajes de código nativo como C y C ++ ... Consulte este https://developer.android.com/tools/sdk/ndk/index.html

RNR123
fuente
3
Este detalle ya está en la respuesta aceptada. ¿Cómo crees que debería ser una respuesta separada?
Paresh Mayani
Intentando anotar más, supongo :)
Daksh Gargas
2

Android NDK (kit de desarrollo nativo)

El kit de desarrollo nativo de Android (NDK) es un desarrollador para escribir código en C / C ++ que se compila en código nativo.

¿Por qué debería uno usarlo?

El código fuente se compila directamente en código de máquina para la CPU (y no en un lenguaje intermedio, como con Java), entonces los desarrolladores pueden obtener el mejor rendimiento.

¿Cómo se puede usar?

Aquí los mejores tutoriales

https://developer.android.com/ndk/index.html

https://www.androidauthority.com/android-ndk-everything-need-know-677642/

https://www.ntu.edu.sg/home/ehchua/programming/android/Android_NDK.html

Ramesh sambu
fuente