読者です 読者をやめる 読者になる 読者になる

うさがにっき

読書感想文とプログラムのこと書いてきます

Go support for Androidを翻訳してみた

概要

Android NDKがGoに対応するみたいなので、Go support for Androidを翻訳してみた

翻訳内容

Go support for Android

概要

AndroidプラットフォームのためのGoの導入を提案する。
焦点は、Goで記述されたサポートのゲームになります。
APIは、AndroidのNDKで定義するものとします。

背景

Androidはアプリ実行のために設計されたOSです。
アプリは、伝統的なUnixオペレーティングシステムによって提供されているよりもはるかに多くのプラットフォームライブラリやサービスに依存しています、これが意味するのは新しいAPIなしでGoランタイムにAndroidへのサポートは特に便利ではないでしょう。
AndroidプラットフォームにGo相当の機能を提供することは手に負えない。
プラットフォームはJavaで書かれており、膨大なAPIのインタフェースを持っている。
GoでこれらのAPIをラップしようとすると、望ましくない結果となる、手動で構築されたラッパーは機能の遅れとなり、自動で作成されたラッパーは醜いGoを導くことになる。
そして、いずれにせよ、それは遅いものとなります。

しかしながら、AndroidNDKで提供されている、はるかに小さいCベースのAPI面に書かれたAndroidアプリケーションのサブセットがある。
それは、NDKにおいてGoと同等の機能をAndroidに構築することが可能となる。

提言

Go1.4の間にgoos=Androidは、Android上のCGOのサポート一緒に、Goリポジトリに導入されます、
Dalvikがロード可能なsoファイルは、Android NDKに設けられた外部のリンカーを使用して生成されます。
ビルドのダッシュボードのために、linuxホスト上のGoツールを実行するクロスコンパイルビルダーを維持します、それはAndroidデバイス上でテストバイナリを実行するためにadbツールを使っています。

私達はサブリポジトリとしてgo.mobileを提供します。
それはOpenGL, OpenSL, OpenMAXがAndroidNDKを通してexportされる、家になります。
Java -> Go languageで作られる。
Go Packageが得られ、それはJavaコードはそれを呼び出すようになるので、ゲームメニューのUIは標準SDKで構築することが出来る。(Go定義を結合することはObjective-Cのように同じコードを使用することを可能とします)
Android Studioのシステム統合を構築します。
バイナリリリースはプロジェクトが安定した後提供されます。

まとめ

なんかよくわからない日本語になったけど、ポイントは以下だと思う。

  • Android NDKでGoがサポートされるようになったよ
  • Android NDKなのはJavaだと速度が出ないからだよ
  • Android Studioで対応するよ
  • バイナリリリースはプロジェクト安定後だよ