Go プログラムを Android 用にコンパイルできることは知っています。
Go プログラム内から、GPS 座標を取得したり、デフォルトのブラウザで URL を開くなど、Android 固有の API を使用するにはどうすればよいですか?
現時点ではほとんど不可能だと思います。「MeettheGoTeam」のI/Oセッションで、Goチームのメンバーは、AndroidサポートをGoに追加する予定はないと述べました。
私たちが今持っているのは、ARMアーキテクチャ用の単なるコンパイラです。残念ながら、これは実際のAndroidアプリにはほとんど役に立ちませんが、そのようなプログラムはAndroidデバイスのコマンドラインから起動できます。
ほとんどのAndroidフレームワークはJavaで記述されているため、Javaフレームワークと対話するには、コードを* .soライブラリにコンパイルする必要があります。これは、JNIインターフェイスを介してロードおよび呼び出されます。また、現在のGoコンパイラでは不可能です(gc、gccgoについてはわかりません)。
たぶん、でAndroid NDK APIにバインドできるようになりcgo
ます。これにより、APIレベル9(Android 2.3)以降のGoでアプリケーションを作成できるようになります。
UPD:GoからJNIを使用し、golang.org / x/mobileパッケージを使用してJavaバインディングを自動的に作成できるようになりました。Go 1.4ではまだ実験段階ですが、Go1.5リリースに含める予定です。このパッケージは、GL、オーディオ、およびユーザー入力のバインディングも提供します(iOSのサポートも追加され、AndroidとiOSのいずれかと互換性があることを願っています)。とにかく、このパッケージは、Android上のJavaの代わりにGoを使用するのではなく、主にGoでゲームを作成することを目的としています。
Go プログラミング言語からの Android アプリに対する私の回答をご覧ください。goandroidプロジェクトを使用すると、NDK を介して Go で Android アプリを作成できます。
(免責事項: 私は goandroid の作成者です)
編集: コメントで述べたように、Go 1.5 は純粋な Go または Java と Go の混合として Android アプリの公式サポートを追加します。iOS も、最終的な 1.5 リリースに間に合うように到着する予定です。詳細については、 https://github.com/golang/mobileを参照してください。
ステップ 1: OpenGL を使用して描画し、インテリジェントなイベントおよびデータ バインディング システムを使用してアプリを書き込む Golang を使用して、プラットフォームに依存しない GUI ライブラリを作成します。OpenGL を使用するソフトウェアは、多かれ少なかれ移植性があります。基本的に、Kivy を Golang で書き直します。
ステップ 2: PyJNIus (これも Kivy プロジェクト) に似た Java クラスを使用するためのイントロスペクション/リフレクション ベースのラッパーを作成します。
ステップ 3: Kivy のレベルに達するまでにやるべきことがたくさんあるので、さらに多くのハードワークを行う
ステップ 4: 利益