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:
- Punto flotante o de punto fijo para Android NDK aplicaciones OpenGL?
- ¿Cómo puedo manejar las llamadas a AudioTrack de jni sin estrellarse?
- Android NDK: Intentando conectar JnetPcap
- Devuelve jbyteArray desde c nativo en Android
- Android ndk-gdb no carga símbolos
¿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.
- Android NDK: ADVERTENCIA: APP_PLATFORM android-9 es más grande que android: minSdkVersion 8
- ¿Soporta / soportará Google NDK C ++ falla en Firebase Crash Reporting?
- ¿Cómo utilizar la biblioteca JNI compilada por NDK en una aplicación Java normal no Android?
- Ubicación grabable y ejecutable en Android
- Cómo determinar el código C se compila para Android / NDK o iOS
- Depuración de bibliotecas nativas para Android OS
- Uso de libxml para Android
- ¿Cómo afectar a la generación de código Delphi XEx para objetivos Android / ARM?
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
- Obtener acceso a funciones especiales de tu dispositivo o Android OS
- Ganando velocidad extra
- 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.
- Ocultar el cajón de navegación cuando el usuario presiona el botón de retroceso
- Administrar el diseño dentro de un radiogrupo horizontal orientado