Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android API from Go

Tags:

android

go

I know that Go programs can be compiled for Android.

How can I use Android specific API, like getting GPS coordinates or opening a URL with the default browser, from within a Go program?

like image 836
Sebastián Grignoli Avatar asked Jul 14 '12 05:07

Sebastián Grignoli


People also ask

Can I make Android app using Golang?

Golang has a powerful standard library and makes Golang one of the efficient language for Mobile development. The use of Golang for mobile development is getting popular due to its unique ability and authority in the API layer.

Can I use Golang for mobile app?

There are a variety of languages available to build the functionality of mobile applications, but Golang is among the most popular programming languages in the field of mobile application development.

Is Android Go written in Go?

No. Android Go is a line of Android apps designed for use on low-end Android devices. Android Go has nothing to do with: the Go programming language.

What is Gomobile?

The GoMobile app allows you to buy tickets anywhere, anytime in just seconds! It's the quick and easy way to pay your fare.


2 Answers

I'm afraid it's hardly possible at the moment. In the "Meet the Go Team" I/O sessions, the guys from the Go team stated that they have no plans to add Android support to Go.

What we have now is just a compiler for ARM architecture. Unfortunately, this is pretty much useless for real Android apps, though such programs can be launched from the command line on Android devices.

Most of the Android framework is written in Java, so to interact with it your code should be compiled to a *.so libary, that will be loaded and called via the JNI interface. And it's not possible with the current Go compiler (gc, not sure about the gccgo).

Maybe you will be able to make bindings to the Android NDK API with cgo, that would allow you to create applications in Go since API level 9 (Android 2.3)

UPD: You can now use JNI from Go and create java bindings automatically with golang.org/x/mobile package. In Go 1.4 it's still experimental, but there are plans to include it into Go 1.5 release. The package also provides bindings for GL, audio and user input (hopefully they would also add iOS support and that would be compatible for Android and iOS one day). Anyway this package is mostly oriented at writing games in Go, rather than using Go as a replacement for Java on Android.

like image 171
zserge Avatar answered Sep 28 '22 23:09

zserge


Take a look at my answer to Android App from Go programming language. The goandroid project allows you to create Android apps in Go through the NDK.

(Disclaimer: I'm the author of goandroid)

Edit: As mentioned in the comments, Go 1.5 adds official support for Android apps in pure Go or as a mix of Java and Go. iOS is also expected to arrive in time for the final 1.5 release. See https://github.com/golang/mobile for more details.

like image 22
Elias Naur Avatar answered Sep 29 '22 01:09

Elias Naur