¿Puedo desarrollar una aplicación de Android tanto en Java como en C ++?

Sí tu puedes. Al final, Java está escrito en C y C ++ es su superconjunto. Hay un juego de herramientas llamado NDK para exactamente esto: Android NDK | Desarrolladores de Android

¿Pero deberías? Esa es una pregunta diferente. Según los desarrolladores de Android, no deberías, a menos que tengas una buena razón. Una de las mejores razones es que necesita crear algo que no funcionaría muy bien si estuviera escrito en Java.

Java es un lenguaje de muy alto nivel que tiene una sobrecarga masiva, por lo que casi todo lo que haga será más lento y usará más RAM en comparación con los programas compilados de bytes que se ejecutan de forma nativa en el nivel de CPU. Probablemente no sea una buena idea usarlo cuando desee crear un códec de video (decodificador de transmisión de video), un motor de juego 3D o un motor web (como gecko).

Para aplicaciones comunes que realmente no necesitan usar mucho la CPU (la mayoría de ellas, realmente), no necesita un rendimiento rápido y en ese caso Java puede ser una opción mucho mejor. Si se trata de una aplicación simple, escribir lo mismo en C ++ para Android posiblemente te lleve 10 veces más tiempo que hacer lo mismo en Java.

Sin embargo, hay otra muy buena razón para usar C ++ sobre Java y es la portabilidad. Si desea que su aplicación se ejecute en otras plataformas que no sean droid, le recomendaría algo como Qt, que es un marco de trabajo de C ++. Las aplicaciones escritas en eso se ejecutarán de forma nativa en Windows, Linux, OSX, iOS, Android y muchas otras …

Puede cargar bibliotecas dinámicas de C ++ en Java, pero escribir bits de la interfaz de usuario en un idioma y bits en otro suena como una pesadilla.

Si su aplicación se descompone fácilmente en varias capas, entonces no veo ningún problema. La interfaz de usuario podría escribirse en Java, con un back-end escrito en C ++. Quizás lo más probable es que su aplicación pueda usar servicios web que se pueden escribir en un idioma diferente al front-end.

Sí tu puedes. Y deberías

Lo hice este año. Con esta aplicación:

Está en Google Play, pero no pondré el nombre porque no estoy haciendo marketing.

Hay partes que usan animaciones. Tuve que poner más de 10 imágenes en la pantalla y animar 7 de ellas. Entonces tenía que ser OpenGL. Corté al intermediario y usé C ++.

El C ++ hace algunas llamadas a Java. En realidad, Java crea la Actividad, carga las bibliotecas de C ++ y luego llama a la función principal de C ++.

Más adelante, cosas como obtener el nombre del paquete de la aplicación se realizan mediante JNI.

C ++ es el segundo idioma oficial para el desarrollo de aplicaciones en Android. Obtendrá mucho apoyo para ello. Incluso desde el propio Google. Las respuestas que hablan de falta de apoyo se equivocaron.

Cuando sea necesario, usa C ++.

A menos que esté desarrollando algo pesado como un juego o software empresarial, es probable que no tenga una buena razón para usar C ++ en Android, especialmente dado el hecho de que está aprendiendo.

  1. Hay mucho menos material para ayudarte. Menos tutoriales, menos libros, menos preguntas sobre StackOverflow, etc.
  2. C ++ es más complicado con muchas más cosas que pueden salir mal.
  3. C ++ tiene más conceptos que debes entender. Java se ocupa de muchas cosas automáticamente.
  4. No estarán en condiciones de ayudarse mutuamente cuando se atasquen. Y sucederá.
  5. La depuración de código será una pesadilla ya que tendrá que ir y venir con este otro tipo si no conoce C ++ y él no conoce Java.
  6. Son idiomas bastante similares y una vez que aprendes uno, deberías poder aprender el otro rápidamente. Cualquiera que pueda codificar en C ++ debería poder aprender Java rápidamente.

    He oído hablar de personas que usan ambos en una aplicación de Android, pero estoy seguro de que presenta otro montón de complejidades, algo que como programadores principiantes están mal posicionados para manejar.

Conclusión: use solo Java.

Puedes, principalmente a través de JNI. Básicamente, puede usar esto para realizar ciertas funciones de C / C ++, a las que llama desde el lado de Java. Esto se usa comúnmente en game-dev, por lo que está bastante bien documentado.

Agregue código C y C ++ a su proyecto

^^ eso al menos te ayudará a comenzar.

Que te diviertas :).