¿Qué es mejor Android SDK o Android NDK?

Realmente no puedes decir cuál es mejor.

Android NDK te permite escribir código nativo de C ++ para tu aplicación de Android. Esto se hace utilizando la tecnología JNI de Java.

Android SDK, por otro lado, es el corazón del desarrollo de aplicaciones de Android. Proporciona todas las API que se utilizan para escribir y compilar y la aplicación de Android. Sin el SDK, tendrá que escribir el código para detectar la pantalla táctil, tocar la pantalla, acceder al hardware y otras cosas que son lo esencial de cualquier aplicación.

Para una aplicación básica, SDK proporciona todo lo que necesita. Pero algunas aplicaciones, como VLC para Android, que funciona en libvlc, una biblioteca de medios basada en C ++, se requiere NDK para acceder y controlar el hardware de audio, decodificar el flujo de audio y video y otras funcionalidades principales. El SDK se utiliza para construir la interfaz entre la biblioteca y el usuario final.

Más detalles sobre JNI – https://en.m.wikipedia.org/wiki/…

Hola

Bueno, en este caso, no creo que puedas hablar en términos de “este es mucho mejor que el otro”, así que te quedas con uno de ellos y haces todo tu desarrollo de Android con él.

La respuesta para mí sería que son complementarios. La regla general, como consejo que viene directamente de Google, es que no use el NDK a menos que realmente tenga que hacerlo.

La razón es que, por lo general, todo lo que necesita para crear una aplicación está incluido en el SDK, y es un código creado por los propietarios de la plataforma, por lo que es muy poco probable que pueda hacer algo mejor para cualquier funcionalidad existente de la API de Android.

Además, y este es un punto muy importante, piense en la compatibilidad de su aplicación. Si usa el SDK, la portabilidad a casi todos los dispositivos existentes (dependiendo de la versión mínima de Android a la que esté apuntando, por supuesto) está asegurada, no importa qué arco de procesador estén usando (brazo, x86 …), y aún más, cuando tenga que actualizar / evolucionar su código en el futuro, será mucho más fácil si utilizó el SDK para crearlo por primera vez, por lo que probablemente ahorrará mucho trabajo y tiempo.

Por otro lado, si usó NDK para su aplicación, tendrá que crear una compilación diferente para cada tipo de arquitectura que admita.

Otra ventaja es la legibilidad de su código. Solía ​​ser muy claro lo que hace el código en una aplicación Java SDK normal, ya que te obliga a seguir algunas pautas y estándares al hacer tu programa, no hablar sobre la gestión de la memoria, como si usaras el NDK. hágalo usted mismo, por lo que creará pérdidas de memoria si no es muy limpio y cuidadoso con lo que hace.

Dicho esto, hay situaciones específicas en las que tienes que usar el NDK, es por eso que está ahí, y generalmente la mayoría de esas situaciones provienen de la necesidad de mejorar el rendimiento.

Imagine un videojuego móvil, por ejemplo. Esta es probablemente una de las aplicaciones más intensivas en procesador que se ejecuta en cualquier dispositivo. El rendimiento es clave aquí, por lo que deberá mejorarlo en muchas partes del juego, accediendo directamente (o al menos de manera más cercana) al hardware.

Lo mismo puede decirse de otras tareas intensivas en el procesador, como cálculos largos, procesamiento de video … etc., e incluso allí probablemente no le guste hacer su interfaz de usuario en C ++, ya que puede ser realmente doloroso, pero solo para escribir algunos métodos de C ++ que son llamados por el código Java para hacer todo ese procesamiento de video.

Entonces, para resumir, si SDK funciona para usted y le brinda un rendimiento adecuado, úselo tanto como sea posible y solo use NDK para aquellas partes de su programa que realmente lo necesiten.

No hay ninguna razón para comparar el SDK y el NDK porque cada uno de ellos es mejor para una determinada situación.

SDK: es para aplicaciones de Android basadas en lenguaje de programación Java (java libs),

el SDK es la herramienta adecuada para desarrolladores de Java

NDK: es para aplicaciones de Android basadas en el lenguaje C / C ++, por lo que si uno es compatible con C / C ++, entonces el NDK es lo que necesita porque le permite escribir una parte del código en C / C ++ mientras que el SDK está limitado a Java Idioma.