Android ndk vs sdk – si las características se refiere

Estoy a punto de iniciar el desarrollo de aplicaciones para Android.

¿Qué es NDK? Documentación no pude extraer la siguiente información:

¿El uso de NDK realmente introduce nuevas características en comparación con SDK?

Estoy interesado en esto porque el uso de NDK aumenta en gran medida la complejidad de la aplicación, por lo que si no estoy interesado en el aumento de rendimiento, ¿hay otras razones para ir a NDK?

Lo que quiero decir es por ejemplo:

-reinicia el celular

  • (Sé que ni SDK o NDK permite esto, sólo lo uso como ejemplo de lo que quiero decir) permite decir java SDK no permite esto, pero algunas bibliotecas nativas hacer – entonces responder a mi pregunta sería sí, NDK no añadir alguna funcionalidad

Gracias por adelantado por cualquier respuesta útil.

Las únicas razones para utilizar el NDK por lo que yo sé es exprimir el rendimiento extra de su aplicación y acercarse al metal desnudo. Si no necesita hacer ninguna de estas cosas, probablemente debería mantenerse alejado del NDK.

También tenga en cuenta que la VM de Dalvik ya tiene un rendimiento bastante impresionante y comparativamente más simple.

Deberías usar SDK, a menos que tengas una buena razón para usar NDK. Las buenas razones pueden variar, pero por ejemplo, puede utilizar NDK:

  • Si desea utilizar OpenGL ES 2.0 para Android 2.1 (Eclair), sólo está disponible a través de NDK. El soporte de SDK para OpenGL ES 2.0 comenzó con la versión de Froyo.

  • Si desea utilizar Renderscript

  • Si tiene una gran parte de la lógica de su aplicación escrita en C / C ++

El NDK es mucho más limitado en términos de funcionalidad.

Lo que obtienes del NDK es la capacidad de escribir tu aplicación en C ++ y compilarla en código ARM nativo. Si te gusta C ++ mejor que Java, si tienes una aplicación de C ++ existente que quieras portar a Android, o si solo necesitas el rendimiento adicional que sólo el código nativo puede ofrecer, entonces por todos los medios debes usar el NDK.

No he hecho esto yo mismo, pero otra alternativa es escribir una aplicación híbrida, donde la aplicación está escrita principalmente en Java, con funciones seleccionadas escritas en C ++ que se llaman desde el código Java.

Para mí, creo que es importante conocer el NDK, que es una poderosa herramienta en el desarrollo de aplicaciones móviles. Especialmente si desea desarrollar una aplicación multiplataforma, el NDK es imbatible en este dominio. Dado que el mismo código escrito en C + + para Android puede ser fácilmente portado y ejecutado de la misma manera en el iOS, Windows o cualquier otra plataforma sin cambiar el código original. Que en realidad ahorrar mucho tiempo en el desarrollo de aplicaciones que se desarrollan para ser ejecutado en múltiples plataformas; Como juegos y otras aplicaciones clásicas. Lo que no se puede hacer con el SDK.

Los métodos nativos son código específico de la plataforma. Por lo general se escriben en lenguajes como C o C ++ y se encuentran en bibliotecas (dll). Es posible crear una aplicación Java híbrida que se beneficie de tales bibliotecas.

Razones para usar métodos nativos

  1. Obtener acceso a funciones especiales de tu dispositivo o Android OS
  2. Ganando velocidad extra
  3. Obtener acceso a una gran cantidad de código heredado existente

Por lo general, los buenos casos de uso para el NDK son aplicaciones que requieren mucha CPU, como motores de juego, procesamiento de señales y simulación física

La principal desventaja de los métodos nativos es que no tendrá capacidad multiplataforma .

Ahora si usted no sabe qué código nativo es, entonces usted no necesita probablemente utilizar código nativo. La documentación de Android NDK lo explica así:

…, usted debe entender que el NDK no beneficiará la mayoría de las aplicaciones. Como desarrollador, debe equilibrar sus beneficios con sus desventajas. En particular, el uso de código nativo en Android generalmente no resulta en una mejora notable del rendimiento, pero siempre aumenta la complejidad de la aplicación. En general, sólo debe usar el NDK si es esencial para su aplicación, nunca porque simplemente prefiere programar en C / C ++. Al examinar si debe o no desarrollarse en código nativo, piense en sus requisitos y vea si las API de framework de Android proporcionan la funcionalidad que necesita.

  • Android Studio, Gradle, OpenCV y NDK
  • ¿Alguna posibilidad de reducir el tiempo de obturación con el acceso a la cámara NDK de Android?
  • ¿Qué es "jobject this" en JNI y para qué se utiliza?
  • Utilizar C con Android ndk
  • Uso de javah en linux
  • Compilación ffmpeg neón en android - errores de ensamblador
  • Conversión de imagen a vídeo con efecto de transición
  • Recibe todos los caracteres unicode de SoftInput cuando usa android NativeActivity
  • ¿Cómo ver las opciones reales de gcc al construir Android desde el origen?
  • Android NDK, mantener objetos C ++ en directo
  • Configuración de la variable Cygwin Path para encontrar Android NDK
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.