¿Puedo hacer una aplicación de Android con C # o C ++?

Versión corta: trabajar con C ++ en Android es posible y más fácil con cada versión de Android SDK / NDK, pero es más difícil que trabajar con Java.


Versión larga :

Para cada versión, Google agrega más funcionalidades al Kit de desarrollo nativo de Android y lo hace cada vez más independiente del código Java.

Lea http://developer.android.com/sdk… para más detalles:

Escriba una actividad nativa, que le permita implementar las devoluciones de llamada del ciclo de vida en código nativo. El SDK de Android proporciona la clase NativeActivity, que es una clase de conveniencia que notifica a su código nativo de cualquier devolución de llamada del ciclo de vida de la actividad (onCreate (), onPause (), onResume (), etc.). Puede implementar las devoluciones de llamada en su código nativo para manejar estos eventos cuando ocurran. Las aplicaciones que usan actividades nativas deben ejecutarse en Android 2.3 (API Nivel 9) o posterior. No puede acceder a características tales como Servicios y Proveedores de contenido de forma nativa, por lo que si desea usarlos o cualquier otra API de marco, aún puede escribir código JNI para hacerlo.

El problema es que si usa el NDK más reciente, no podrá implementar ni muchas versiones de Android no recientes.

De todos modos, incluso con versiones anteriores de NDK, puede tener un código Java mínimo (para interactuar con el sistema operativo) y el código completo de la aplicación en C ++ o cualquier cosa nativa.

También hay esfuerzos para ayudar a los desarrolladores nativos a trabajar completamente en C o C ++ a través de complementos IDE como este Vs-Android que es un complemento para Visual Studio 201x que oculta todo el proceso de compilación y generación: http://code.google.com / p / vs-andr …

Además, si planea portar su aplicación a otro sistema operativo, es una buena idea usar C ++ para el núcleo de su aplicación (tal vez con un lenguaje de script en la parte superior). Es más costoso en tiempo de desarrollo que otras alternativas, por razones específicas de C ++ y sus implementaciones de herramientas de desarrollo disponibles, por ejemplo, demasiados tiempos de compilación pueden matar su productividad efectiva.

Dicho esto, esa no es la forma más fácil de trabajar en aplicaciones móviles.

Sí, puede hacerlo con C # usando mono, pero se encontrará con muchos problemas de administración de memoria ya que interactúa directamente con jni,

También con c ++ usando ndk, puede escribir aplicaciones verdaderamente nativas con actividad nativa y soporte de otros componentes, el campo es mucho más explorado que las aplicaciones de Android basadas en c # mono,

Aún así, al final, diría que no vale la pena los esfuerzos, te meterás en muchos más problemas que un desarrollador de Java para aplicaciones de Android, tendrás que cambiar a Java más tarde o Kotlin.

Por lo tanto, debe usar java / kotlin para cualquier desarrollo serio, rápido y sin errores, puede experimentar con c / c ++ usando ndk.

Sí.

C #: Con Xamarin.

C ++: con el NDK de Android.