¿Puedo hacer un programa de Android solo con C?

Es más que posible, incluso factible. Android está compuesto por el kernel de Linux, pero a diferencia de GNU + Linux, no tiene la tierra de usuario familiar de GNU y otros. Todavía es posible descargar un compilador de C para dispositivos Android: necesitará orientar la arquitectura de CPU correcta y la mayoría de los teléfonos inteligentes usan un poco de ARM. Iría por GCC o Clang, pero es posible que tengas que obtener una compilación especial o compilarlos tú mismo.

Logré compilar un pequeño programa que forjó un paquete Wake-On-Lan para mi escritorio x86 GNU + Linux y para ARM (eabi-none IIRC), que se ejecutó en mi teléfono Android rooteado. Dicho esto, en realidad no hizo lo que quería que hiciera, pero eso es solo porque los paquetes WOL son solo Ethernet y mi teléfono solo tenía una conexión WiFi.

Para aplicaciones más grandes, creo que el Kit de desarrollo nativo de Android podría ser de ayuda. Debe proporcionar enlaces en lenguaje C para el país de usuarios de Android y sus marcos de GUI.

Casi. Lo que quieres es el Native Development Kit o NDK.

Pero debe administrar la interfaz con el sistema operativo Android a través de la capa de Java. Entonces, para cualquier cosa que necesite del sistema operativo, deberá llamar a la parte de Java de su aplicación para pedirle a la parte de Android que obtenga los resultados y luego los devuelva a la parte nativa.

También se aplicarán las mismas reglas para el ciclo de vida de su aplicación. Eso significa que Android puede decidir matarte en cualquier momento.

No, prácticamente no. Todas las rutinas de la biblioteca que necesita (por ejemplo, dibujar en la pantalla, recibir entrada táctil, etc.) se exponen como clases, y C no admite clases. Como mínimo, necesitaría crear algunas clases de interfaz masivamente complicadas.

Es bastante práctico en C ++, porque C ++ admite clases, de hecho lo he hecho. Pero tenía una muy buena razón para hacerlo de esta manera.

Los lenguajes no orientados a objetos (como C) no son adecuados para la programación de Android. Tendrá que aprender un lenguaje OO. También podría ser Java, porque es razonablemente fácil, está bien documentado y es lo que Google recomienda.

Sí, con el IDE correcto que puede apostar. Como dijo Johnothan Rosca.