Sé que los programas Go se pueden compilar para Android.Android API de Go
¿Cómo puedo usar la API específica de Android, como obtener coordenadas GPS o abrir una URL con el navegador predeterminado, desde un programa Go?
Sé que los programas Go se pueden compilar para Android.Android API de Go
¿Cómo puedo usar la API específica de Android, como obtener coordenadas GPS o abrir una URL con el navegador predeterminado, desde un programa Go?
Me temo que es casi imposible en este momento. En las sesiones de E/S "Meet the Go Team", los chicos del equipo Go dijeron que no tenían planes de agregar compatibilidad con Android a Go.
Lo que tenemos ahora es solo un compilador para la arquitectura ARM. Desafortunadamente, esto es bastante inútil para las aplicaciones reales de Android, aunque dichos programas se pueden iniciar desde la línea de comandos en los dispositivos Android.
La mayor parte del marco de Android está escrito en Java, por lo que para interactuar con él, su código debe compilarse a * .so libary, que se cargará y se llamará a través de la interfaz JNI. Y no es posible con el compilador de Go actual (gc, no estoy seguro del gccgo).
Tal vez va a ser capaz de hacer enlaces con la API de Android NDK con cgo
, que permitirá crear aplicaciones en Ir ya que el nivel de API 9 (Android 2,3)
UPD: Ahora puede usar JNI desde Go y crea enlaces Java automáticamente con el paquete golang.org/x/mobile. En Go 1.4 todavía es experimental, pero hay planes para incluirlo en la versión Go 1.5. El paquete también proporciona enlaces para GL, audio y entrada de usuario (con suerte también agregarían soporte de iOS y eso sería compatible para Android e iOS algún día). De todos modos, este paquete está orientado principalmente a escribir juegos en Go, en lugar de utilizar Go como reemplazo de Java en Android.
Paso 1: Cree una biblioteca GUI independiente de la plataforma usando Golang que use OpenGL para dibujar y un evento inteligente y sistema de enlace de datos para escribir las aplicaciones. Cualquier software que use OpenGL será más o menos portátil. Básicamente, vuelve a escribir Kivy en Golang.
Paso 2: Cree un contenedor basado en introspección/reflexión para usar clases Java similares a PyJNIus (también un proyecto Kivy).
Paso 3: Un montón de trabajo más duro, porque hay mucho que hacer para llegar al nivel de Kivy
Paso 4: Beneficio
Muy por encima, así que entiendo tu respuesta como "no, actualmente no es posible". :) –
Sí, no quiero ser un asesino a sueldo, pero lleva tiempo obtener soporte de software para llegar allí. Realmente me gusta la idea de usar Golang en lugar de Java (o Python). Hasta que Python obtenga algún tipo de compilador de inferencia de tipos para IF de LLVM o algo así, preferiría no incurrir en una penalización de velocidad tan grande. – user823629
Echa un vistazo a mi respuesta a Android App from Go programming language. El proyecto goandroid le permite crear aplicaciones de Android en Ir a través del NDK.
(exención de responsabilidad: yo soy el autor de goandroid)
Editar: Como se ha mencionado en los comentarios, Ir 1.5 incluye el soporte oficial para aplicaciones de Android en pura Go o como una mezcla de Java y Go. También se espera que iOS llegue a tiempo para la versión final 1.5. Ver https://github.com/golang/mobile para más detalles.
goandroid está en desuso, consulte https://github.com/golang/mobile para obtener la asistencia oficial. –
GO 1.4 doc dice: "Ir 1.4 puede construir binarios para procesadores ARM que ejecutan el sistema operativo Android. También se puede construir una biblioteca .so que puede ser cargado por una aplicación Android usando los paquetes de apoyo en el subrepository móvil"
Existe la opción package app en la biblioteca "golang.org/x/mobile/app" que le permite escribir aplicaciones para Android (y, finalmente, iOS).
Al menos la red funciona de forma nativa?Quiero decir, ¿funcionarían los paquetes 'net' o' net/http' Go "fuera de la caja" en un teléfono Android? –
@ SebastiánGrignoli Sí, eso debería ser posible, algunos proyectos existentes lo hacen: https://github.com/huin/chunkymonkey/blob/master/docs/android-server.md – zserge
Esta respuesta ha sido eliminada. El proyecto https://github.com/golang/mobile incluye compatibilidad con aplicaciones de Android en Go. –