2011-10-20 20 views
17

estoy a punto de comenzar el desarrollo de aplicaciones de Android.andd ndk vs sdk - si se trata de características

De What is NDK? documentación que no era capaz de extraer información siguiente:

¿Si se usa NDK realidad introducir nuevas características en comparación con SDK?

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

Lo que quiero decir es, por ejemplo:

teléfono -restart

  • (no sé ni SDK o NDK permite esto, yo sólo lo uso como ejemplo de lo que me refiero) digamos SDK Java hace no permitir esto, pero algunas bibliotecas nativas lo hacen - entonces la respuesta a mi pregunta sería sí, NDK agrega alguna funcionalidad

Gracias de antemano por cualquier respuesta útil.

+0

No veo cómo esto es cuestión basada en la opinión – hendrix

Respuesta

9

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

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

+0

no Java, Dalvik VM – HaMMeReD

+0

@HaMMeReD gracias por la captura. Editado mi respuesta. –

+1

¡O ahora la VM ART! – CorayThan

13

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 le gusta C++ mejor que Java, si tiene una aplicación C++ existente que desea exportar a Android, o si solo necesita el rendimiento adicional que solo el código nativo puede ofrecer, entonces debe usar el NDK.

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

+4

Perdón por comentar tan tarde en esta pregunta, pero solo quería asegurarme de que está claro que escribir en C++ porque lo prefieres NO es una buena razón para usar NDK. – DealerNextDoor

+1

@DealerNextDoor ¿Porque nadie debería preferir C++, o porque nadie debería querer usar el NDK? – CorayThan

+2

@CorayThan Ni; escribir en C++ puramente porque no quieres escribir en Java es una mala razón. Como se indica en la página de descarga de NDK, "Antes de descargar el NDK, debe comprender que el NDK no beneficiará a la mayoría de las aplicaciones. Como desarrollador, debe equilibrar sus beneficios con sus inconvenientes. En particular, usar código nativo en Android generalmente no lo hace. El resultado es una notable mejora en el rendimiento, pero siempre aumenta la complejidad de la aplicación. En general, solo debe usar el NDK si es esencial para su aplicación, nunca porque simplemente prefiera programar en C/C++. – DealerNextDoor

17

Deberías usar SDK, a menos que tengas una buena razón para usar NDK. Buenas razones pueden variar, pero por ejemplo, se podrían utilizar NDK:

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

  • Si desea utilizar renderScript

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

9

Para mí, creo que es importante conocer el NDK cuales es una herramienta poderosa en el desarrollo de aplicaciones móviles. Especialmente si desea desarrollar una aplicación multiplataforma, el NDK es inmejorable 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 iOS, Windows o cualquier otra plataforma sin cambiar el código original.Lo que en realidad ahorra mucho tiempo en el desarrollo de aplicaciones que se desarrollan para ejecutarse en múltiples plataformas; como juegos y otras aplicaciones clásicas. Cosa que no puedes hacer con el SDK.

+1

de acuerdo. Hoy en día es difícil imaginar que cualquier aplicación buena quisiera quedarse con una sola plataforma como Android. Por lo tanto, la práctica general es dejar todo más allá de la capa UI en código nativo para que puedan ser fácilmente portados a otras plataformas, algunas de las cuales pueden ser especificadas por el fabricante. –

1

Los métodos nativos son códigos específicos de la plataforma. Por lo general, están escritos en idiomas como C o C++ y en bibliotecas (dll). Es posible crear una aplicación Java híbrida que se beneficie de tales bibliotecas.

Razones para el uso de métodos nativos

  1. El acceso a las capacidades especiales de su dispositivo o o Android OS
  2. Ganando velocidad extra
  3. El acceso a una gran cantidad de código heredado existente

Normalmente, los buenos casos de uso para el NDK son aplicaciones intensivas de la CPU como ga me motores, procesamiento de señales, y la física de simulación

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

Ahora, si no sabes qué es el código nativo, entonces probablemente no necesites usar el código nativo. La documentación de Android NDK lo explica bien:

..., debe comprender que el NDK no beneficiará a la mayoría de las aplicaciones. Como un desarrollador, necesita equilibrar sus beneficios contra sus inconvenientes. Notablemente, el uso de código nativo en Android generalmente no da como resultado una mejora notable en el rendimiento de , pero siempre aumenta la complejidad de la aplicación . En general, solo debe usar el NDK si es esencial en su aplicación, nunca porque simplemente prefiera programar en C/C++. Cuando examine si debe desarrollar en código nativo, piense en acerca de sus requisitos y vea si las API de marco de Android proporcionan la funcionalidad que necesita.

Cuestiones relacionadas