Pregunta

Estoy tratando de desarrollar / portar un juego a Android, pero está en C, y Android es compatible con Java, pero estoy seguro de que debe haber una manera de obtener una aplicación de C allí, alguien sabe de un buen tutorial sobre el tema?

¡Gracias!

¿Fue útil?

Solución

Para cualquier persona que llegue a esto a través de Google, tenga en cuenta que a partir del SDK 1.6 Android ahora tiene un SDK nativo oficial.

Puede descargar el NDK de Android (Kit de desarrollo nativo) desde aquí: https://developer.android.com/ndk/downloads/index.html

También hay una publicación en el blog sobre el NDK:
http: //android-developers.blogspot .com / 2009/06 / introducing-android-15-ndk-release-1.html

Otros consejos

El Android NDK es un conjunto de herramientas que te permite implementar partes de tu aplicación en Código nativo, utilizando lenguajes como C y C ++. Para ciertos tipos de aplicaciones, esto puede ayudarlo a reutilizar las bibliotecas de código escritas en esos idiomas.

Para obtener más información sobre cómo comenzar con el desarrollo nativo, siga este enlace .

Puede encontrar ejemplos de aplicaciones aquí .

Normalmente, tienes que:

  1. instalar el Android NDK de Google. Eso contiene libs, encabezados, makfile ejemplos y gcc toolchain
  2. Construye un ejecutable desde tu código C Para ARM, optimízalo y vincúlalo con libs proporcionadas si es necesario
  3. Conectar a un teléfono utilizando proporcionado interfaz adb y prueba tu ejecutable

Si desea vender una aplicación:

  1. Construye una biblioteca desde tu código C
  2. Crea un código Java simple que utilizar esta biblioteca
  3. Incrustar esta biblioteca en la aplicación archivo de paquete
  4. prueba tu aplicación
  5. Véndelo o distribúyelo gratis

Google ha lanzado un kit de desarrollo nativo (NDK) (según http: // www .youtube.com / watch? v = Z5whfaLH1-E a las 00:07:30).

Esperemos que la información se actualice en la página de grupos de google ( http://groups.google. com / group / android-ndk ), ya que dice que aún no se ha publicado.

No estoy seguro de dónde obtener una descarga simple, pero he oído que puedes obtener una copia del NDK del repositorio Git de Google debajo de la rama de donuts.

La posición oficial parece es que esto no es algo que alguna vez "querrías hacer". Consulte este hilo en la lista de desarrolladores de Android. Google prevé que Android se ejecute en una variedad de dispositivos diferentes (CPU, pantallas, etc.). La mejor manera de habilitar el desarrollo es, por lo tanto, utilizar código administrado (portátil) que se dirija a la máquina virtual de Dalvik. Por esta razón, el SDK de Android no es compatible con C / C ++.

PERO, eche un vistazo a esta página :

  

Android incluye un conjunto de C / C ++   bibliotecas utilizadas por varios componentes   del sistema android. Estas   Las capacidades están expuestas a los desarrolladores.   a través de la aplicación de Android   marco.

El marco de la aplicación administrada parece estar superpuesto a estas bibliotecas. La página continúa para enumerar las bibliotecas de C / C ++: biblioteca estándar de C, medios, 3D, SQL lite y otros.

Entonces, todo lo que necesita es una cadena de compiladores que compile C / C ++ a la CPU apropiada (ARM, en el caso del G1). Algunas instrucciones breves sobre cómo hacer esto son aquí .

Lo que no sé es dónde encontrar descripciones de las API que proporcionan estas bibliotecas. Supongo que puede haber archivos de encabezado enterrados en el SDK en algún lugar, pero la documentación puede ser incompleta / faltante. ¡Pero creo que se puede hacer!

Espero que sea útil. Para el registro, no he escrito ninguna aplicación nativa de Android, solo unas pocas gestionadas de forma simple.

Andy

Puede usar nestedvm para traducir C (u otros idiomas de GCC) al código de bytes de Java, y usarlo como la base de tu puerto Por ejemplo, vea el puerto de Android de la colección de rompecabezas portátil Simon Tathams .

Supongo que NDK hace que este método sea obsoleto, pero podría no estarlo si algunas redes o algo no les permite a las personas actualizar sus teléfonos.

Google ya lanzó la sesión Google I / O 2011: Llevando los juegos C y C ++ a Android que está disponible en http://www.youtube.com/watch?v=5yorhsSPFG4

lo que es bueno para entender el uso de NDK para escribir aplicaciones en c y c ++ para Android.

Si solo quieres compilar de forma cruzada cualquier juego nativo basado en consola y ejecutarlos en Android, este artículo ha mostrado 3 métodos para el mismo.

1: compilación estática utilizando una cadena de herramientas independiente

2: compilación cruzada utilizando la cadena de herramientas NDK de Android

3: Compilación cruzada utilizando el código fuente de AOSP

¿Quizás estás buscando esto?

http://www.mosync.com/

Es una capa intermedia para el desarrollo de varias plataformas móviles que utilizan c ++.

Viendo esto parece que es posible:

  

" el hecho de que solo se admita el lenguaje Java no significa que no pueda desarrollar aplicaciones en otros idiomas. Esto ha sido probado por muchos desarrolladores, hackers y expertos en desarrollo de aplicaciones para dispositivos móviles. Los chicos de Elements Interactive BV, la compañía detrás de la biblioteca Edgelib, lograron ejecutar aplicaciones C ++ nativas en la plataforma Android, incluso que en este momento todavía hay muchos problemas en la pantalla y el sonido ... etc. Esto incluye el juego S-Tris2 y un Demostración de animación en 3D de Edgelib. & Quot;

Desde 2009 hay un desarrollo en esta materia.
Necessitas - Qt (marco de C ++) para Android
Cómo comenzar video .

Eche un vistazo a google ndk group que parece prometedor, la primera versión de NDK estará disponible en 1H2009.

Actualización: Y se lanzó http: // android-developers.blogspot.com/2009/06/introducing-android-15-ndk-release-1.html

No estoy seguro de que el NDK proporcione una cobertura completa de la API oficial de Java.

De http://developer.android.com/sdk/ndk/index .html # descripción general :

  

Tenga en cuenta que el NDK no   le permite desarrollar solo nativo   aplicaciones Primaria de Android   El tiempo de ejecución sigue siendo el virtual Dalvik   máquina.

Puedes descargar c4droid y luego instalar el complemento GCC e instalarlo en tu SD. Desde el shell, solo me dirijo al directorio donde se encuentra el binario GCC y luego lo llamo para hacer un ejecutable a bordo.

encuentra / -name gcc

/mnt/sdcard/Android/data/com.n0n3m4.droidc/files/gcc/bin/arm-linux-androideabi-gcc

gato > test.c

#include<stdio.h>
int main(){ 
 printf("hello arm!\n");
return 0;
}

./arm-linux-androideabi-gcc test.c -o test

./test

¡Hola brazo!

Esta publicación de blog puede ser un buen comienzo: http: //benno.id.au/blog/2007/11/13/android-native-apps Desafortunadamente, muchas de las cosas importantes se dejan " en forma de ejercicio para el lector " ;.

No conozco un tutorial, pero una buena herramienta de desarrollo: Airplay SDK de Ideaworks Labs. (Recientemente renombrado " Marmelade ") Usando C / C ++ puedes crear aplicaciones para Windows Mobile, iPhones, Android. El único componente que no me gustó fue el compositor de GUI, uno con errores, pero siempre puedes sustituirlo con el Bloc de notas.

Los archivos nativos C / c ++ libstdc ++. * de su Ubuntu son binarios x86 (o x86_64) pero los dispositivos Android y los emuladores son ARM. Por supuesto, esto no funcionará de todos modos, incluso si establece el nombre de usuario correcto. Este es un camino muy ingenuo que no lleva a ninguna parte. Android tiene una compatibilidad muy limitada con C ++, lo que significa que no hay excepciones, la biblioteca estándar de C ++ (incluida STL) y RTTI. Si necesita dicha funcionalidad, use mi distribución NDK personalizada de

http://crystax.net/android/ndk.php : admite C ++ completo características enumeradas anteriormente.

¿Por qué hay un error: referencia no definida al error de enlace '__cxa_end_cleanup'? Stlport de Android

tiempo. Porque no hay enlace a libstdc + +. A. Tan mal.

Debido a que utiliza alguna biblioteca estática, es necesario vincular el libstdc + + completo. A. puede

http://crystax.net/android/ndk.php aquí para descargar el paquete

sources \ cxx-stl \ gnu-libstdc + + \ libs \ armeabi directory.

El soporte de Android en su propio libstdc + + es limitado, debe estar vinculado a un libstdc + completo +. A el trabajo.

Agregar archivo en Android.mk LOCAL_LDFLAGS = $ (LOCAL_PATH) / libs / libcurl.a \

 $ (LOCAL_PATH) / libs / liblua.a \
 `$ (LOCAL_PATH) / libs / libstdc + +. A`  

Y LOCAL_CPPFLAGS + = -lstdc + + -fexceptions se pueden compilar

Hay un plan para permitir las bibliotecas de C / C ++ en la próxima versión de SDK de Android (¿Codename Eclair?) Hasta la fecha, no es posible a través del Android SDK de Java. Sin embargo, puede capturar el ENORME proyecto de código abierto, rodar sus propias bibliotecas y luego actualizar su propio dispositivo ... pero cualquier persona que quiera usar su biblioteca también deberá actualizar su compilación personalizada.

Respuesta corta: No puedes.

@ Backslash17: Mirando a través del artículo y el siguiente enlace con las instrucciones de instalación, todo lo que la compañía consiguió es lanzar un ejecutable compilado automáticamente en el emulador, sin pasar por el marco de Android. Una vez que tenga el emulador, puede hacer telnet y tener un shell de Linux. Ejecutar un programa de linux es trivial, por supuesto. Pero eso no funciona para teléfonos sin jailbreak (también conocido como acceso raíz) y no se puede entregar en el mercado.

A menos que Google abra otras oportunidades o alguien escriba un compilador personalizado que compile Language X en el bytecode Dalvik (Dalvik es la máquina virtual que ejecuta programas de Android), no podrá escribir código nativo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top