Estoy tratando de desarrollar / portar un juego para Android, pero está en C y Android es compatible con Java, pero estoy seguro de que debe haber una forma de obtener una aplicación de C allí, ¿alguien sabe de una manera de lograr esto?
Estoy tratando de desarrollar / portar un juego para Android, pero está en C y Android es compatible con Java, pero estoy seguro de que debe haber una forma de obtener una aplicación de C allí, ¿alguien sabe de una manera de lograr esto?
Respuestas:
Para cualquiera que venga a esto a través de Google, tenga en cuenta que a partir de SDK 1.6, Android ahora tiene un SDK nativo oficial.
Puede descargar el Android NDK (Native Development Kit) desde aquí: https://developer.android.com/ndk/downloads/index.html
También hay una publicación de blog sobre el NDK:
http://android-developers.blogspot.com/2009/06/introducing-android-15-ndk-release-1.html
El NDK de Android es un conjunto de herramientas que le permite implementar partes de su aplicación en código nativo, utilizando lenguajes como C y C ++. Para ciertos tipos de aplicaciones, esto puede ayudarlo a reutilizar bibliotecas de códigos escritas en esos idiomas.
Para obtener más información sobre cómo comenzar con el desarrollo nativo, siga este enlace .
Las aplicaciones de muestra se pueden encontrar aquí .
Normalmente, tienes que:
Si está buscando vender una aplicación:
Google ha lanzado un Kit de desarrollo nativo (NDK) (de acuerdo con 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 puede obtener una copia del NDK del repositorio Git de Google debajo de la rama de donas.
La posición oficial parece ser que esto no es algo que "quieras hacer". Vea este hilo en la lista de desarrolladores de Android. Google prevé que Android se ejecute en una variedad de dispositivos diferentes (CPU, pantallas, etc.). Por lo tanto, la mejor manera de habilitar el desarrollo es usar código administrado (portátil) que se dirija a la máquina virtual 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 bibliotecas C / C ++ utilizadas por varios componentes del sistema Android. Estas capacidades están expuestas a los desarrolladores a través del marco de aplicación de Android.
El marco de la aplicación administrada parece estar en capas sobre estas bibliotecas. La página continúa para enumerar las bibliotecas C / C ++: biblioteca C estándar, medios, 3D, SQL lite y otros.
Entonces, todo lo que necesita es una cadena de compilación que compile C / C ++ en la CPU apropiada (ARM, en el caso del G1). Algunas breves instrucciones sobre cómo hacer esto están 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 alguna parte, 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 administradas simples.
Andy
Puede usar nestedvm para traducir C (u otros lenguajes GCC) al código de bytes de Java, y usarlo como base de su puerto. Por ejemplo, vea el puerto de Android de la colección de rompecabezas portátil Simon Tathams .
Espero que este método quede obsoleto por el NDK, pero podría no estarlo si algunas redes o algo no permiten a las personas actualizar sus teléfonos.
Google ya lanzó Google I / O 2011: trae los juegos C y C ++ a la sesión de Android que está disponible en http://www.youtube.com/watch?v=5yorhsSPFG4
lo cual es bueno entender el uso de NDK para escribir aplicaciones en cyc ++ para Android.
Si solo desea realizar una compilación cruzada de cualquier juego nativo basado en consola y ejecutarlo en Android, entonces este artículo muestra 3 métodos para lo mismo.
1: compilación estática con una cadena de herramientas independiente
2: compilación cruzada utilizando la cadena de herramientas de Android NDK
3: compilación cruzada utilizando el código fuente AOSP
Tal vez estás buscando esto?
Es una capa intermedia para el desarrollo de varias plataformas móviles que usan c ++.
Mirando esto parece que es posible:
"el hecho de que solo el lenguaje Java sea compatible no significa que no se puedan desarrollar aplicaciones en otros idiomas. Esto ha sido demostrado 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 Edgelib biblioteca, logró ejecutar aplicaciones nativas de C ++ en la plataforma Android, incluso en este momento todavía hay muchos problemas de visualización y sonido ... etc. Esto incluye el juego S-Tris2 y una demostración de animación en 3D de Edgelib ".
Desde 2009 hay un desarrollo en este asunto.
Necessitas - Qt (marco C ++) para Android Video de
inicio .
Echa un vistazo a google ndk group , parece prometedor, la primera versión del NDK estará disponible en el 1S2009.
Actualización: Y se publica 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#overview :
Tenga en cuenta que el NDK no le permite desarrollar aplicaciones solo nativas. El tiempo de ejecución principal de Android sigue siendo la máquina virtual Dalvik.
Google acaba de lanzar el NDK que permite exactamente eso.
Se puede encontrar aquí: http://developer.android.com/sdk/ndk/1.5_r1/index.html
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 como un ejercicio para el lector".
No conozco un tutorial pero es 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 GUI, uno defectuoso, pero siempre puedes sustituirlo por el Bloc de notas.
Puede descargar c4droid y luego instalar el complemento GCC e instalarlo en su SD. Desde el shell, solo recorro el directorio donde está el binario GCC y luego lo llamo para hacer un ejecutable a bordo.
/mnt/sdcard/Android/data/com.n0n3m4.droidc/files/gcc/bin/arm-linux-androideabi-gcc
#include<stdio.h>
int main(){
printf("hello arm!\n");
return 0;
}
hola brazo!
Estos tres pasos son buenos para tener y almacenar en esta publicación.
1) Cómo portar código c nativo en android
3) http://mindtherobot.com/blog/452/android-beginners-ndk-setup-step-by-step/
Los archivos nativos C / c ++ libstdc ++. * De su Ubuntu son binarios x86 (o x86_64) pero los dispositivos y emuladores de Android son ARM. Por supuesto, esto no funcionará de todos modos, incluso si configura el soname correcto. Esta es una manera muy ingenua que no lleva a ninguna parte. Android tiene un soporte muy limitado de C ++, lo que significa que no hay excepciones, biblioteca estándar de C ++ (incluido STL) y RTTI. Si necesita dicha funcionalidad, use mi distribución NDK personalizada de
http://crystax.net/android/ndk.php : admite todas las funciones de C ++ enumeradas anteriormente.
¿Por qué hay un error? Referencia indefinida al error de enlace '__cxa_end_cleanup'. Android stlport
hora. Porque no hay un enlace a libstdc + +. A. Muy mal.
Debido a que utiliza alguna biblioteca estática, es necesario vincular el libstdc + + completo. Una lata
http://crystax.net/android/ndk.php aquí para descargar el paquete
fuentes \ cxx-stl \ gnu-libstdc + + \ libs \ armeabi directorio.
Android en su propio soporte libstdc + + es limitado, debe estar vinculado a un completo libstdc + +. 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
puede ser compilado
Existe un plan para permitir bibliotecas C / C ++ en la próxima versión de Android SDK (¿Coclame Eclair?) Hasta la fecha, no es posible a través del SDK de Java para Android. Sin embargo, puede tomar el proyecto de código abierto ENORME, rodar sus propias bibliotecas y luego flashear su propio dispositivo ... pero cualquiera que quiera usar su biblioteca también tendrá que flashear su compilación personalizada.
Respuesta corta: no puedes.
@ Backslash17: al leer el artículo y el siguiente enlace con las instrucciones de instalación, todo lo que la empresa comenzó a trabajar es lanzar un ejecutable autocompilado en el emulador, sin pasar por el marco de Android. Una vez que tenga el emulador, puede ingresar a 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 root) y no se puede entregar en el mercado.
A menos que Google abra otras oportunidades o alguien escriba un compilador personalizado que compila Language X en el código de bytes de Dalvik (Dalvik es la máquina virtual que ejecuta programas de Android), no podrá escribir código nativo.