¿Es posible utilizar Go para crear juegos de Android en absoluto? No estoy casado con las tecnologías mencionadas en la línea de asunto. Sé que some people han desarrollado algunos programas de Android en Go, pero pueden haber sido sin cabeza.¿Es posible construir juegos de Android en Go usando el NDK con cgo y/o SWIG o similar?
Respuesta
Si quieres aplicaciones sin headless, mi consejo sería usar cgo para la GUI. Eso suena contrario a la intuición, pero si el NDK es compatible con las bibliotecas guiadas de Android C, probablemente sea más fácil escribir la GUI usando esas llamadas. Por supuesto, no tiene que escribir toda la lógica en C. Simplemente puede cgo wrappers para cada una de las llamadas de GUI y luego escribir la GUI en go, excepto que cada llamada gui se traduciría a través de cgo.
No, no es posible en este momento. Los programas Go y C pueden interoperar a través de cgo. pero en ese caso, el programa Go debe iniciar e inicializar su tiempo de ejecución antes de pasar el control a la parte del programa basada en C.
Al usar el NDK en Android, su código C es llamado por la máquina virtual Dalvik a través de dlopen. Por lo tanto, el tiempo de ejecución Go no tendría la posibilidad de inicializarse.
¿No se pudo hacer una llamada desde el código C para Ir a hacer la inicialización? – kristianp
Sí, en principio ... como "los cerdos pueden volar si tienen suficiente energía cinética". Pero la forma en que Go y cgo funcionan hoy, no. Un límite fundamental de la implementación actual es que el encabezado ELF del ejecutable debe ser realizado por el compilador Go y debe apuntar al código de inicio de Go. Una vez hecho esto, Go puede asignar una pila estilo C y la transición dentro y fuera de ella cuando llama al código C. –
Buena analogía :) – kristianp
- 1. reemplazar C++ con go + swig
- 2. ¿Es seguro construir con -fsigned-char con Android NDK?
- 3. Construir con JNI NDK para el enrollamiento
- 4. Problema de construir NDK con C++ en Android
- 5. ¿Es posible usar la biblioteca OpenMP con Android NDK?
- 6. Android NDK con Visual Studio
- 7. Usando Android NDK y C++
- 8. Android NDK con C++ Graphics Engine
- 9. OpenGL ES 2.0 posible sin NDK?
- 10. Recogida de basura y cgo
- 11. Algunos tutoriales para OpenGL ES 2 en Android con NDK?
- 12. ¿Es posible usar OpenCV o una biblioteca similar en Javascript?
- 13. Integración de ndk-gdb de android ndk con emacs?
- 14. ¿Es posible exportar la tabla sqlite3 a csv o similar?
- 15. ¿Qué es la advertencia 503 de SWIG?
- 16. Desarrollo Android NDK
- 17. Android NDK - usando AssetManager en el código nativo
- 18. ¿Alguna experiencia con Android NDK?
- 19. ¿Es posible establecer la afinidad con sched_setaffinity en Android?
- 20. Does Go tiene expresiones lambda o algo similar?
- 21. Usar C con Android ndk
- 22. Usando Android NDK para el cifrado de datos pasados desde la aplicación normal de Android
- 23. ¿Cómo construir o dónde obtener una cadena de herramientas autónoma de Android NDK que admite Fortran?
- 24. ¿Cómo compilar una biblioteca estática usando el NDK de Android?
- 25. Usando Google Breakpad para Android NDK?
- 26. Es "std :: cout" utilizable en Android-ndk
- 27. ¿Es posible hacer extensiones a python/php/perl con Go?
- 28. Android NDK incremental build
- 29. compilación condicional en Go
- 30. ¿Es posible construir un shell C interactivo?
Go/cgo/Java no puede funcionar de esta manera. –
No sugiero el uso de Java. NDK admite compatibilidad nativa con C en dispositivos Android: no hay Java involucrado. Mi punto es que si pudieras escribir los bits de la interfaz del sistema Android en C usando NDK, podrías vincular usando cgo – joshlf
Mi comprensión del ciclo de vida de la aplicación es que el proceso para tu aplicación es una copia en horquilla del dalvik zygote, y eso Una vez que su uid/gid se establece correctamente, hay una transferencia de control de Android a su aplicación, a través de las convenciones de llamadas de Java. Si lo primero que desea hacer es entregar el control al código C compilado por el NDK, está bien. Pero el tiempo de ejecución de Go quiere iniciarse en ausencia de Dalvik que ya se está ejecutando en el espacio de direcciones. –