Submit Search
2015/02/21 GDG神戸 Go on Android ハンズオン&もくもく会
•
5 likes
•
1,417 views
Satoshi Noda
Follow
1 of 29
Download now
Download to read offline
More Related Content
2015/02/21 GDG神戸 Go on Android ハンズオン&もくもく会
1.
2015/2/21 GDG神戸 勉強会 Go
on Android ハンズオン&もくもく会 GDG神戸 野田 悟志
2.
自己紹介 野田 悟志 AndroidとGoが好きなC#er 今年、GDG神戸のCo-Managerになりました あと、最近噂のPolymerに興味はあるけど、全然調べてないの で誰か知ってたら教えて!
3.
ついに Go1.4からNDKを使って、Androidアプリが作れるようになった どっちも、ちょーかわいい!
4.
そうそう 夢の共演やー!! ちなみに、ぼく関西人じゃないです
5.
さっそく 作れるアプリは2種類 1. UIも含め、完全にGoだけ(All Go)で作るNDK
Apps 2. UIはJava(Android SDK)で、ロジックをGoで作るSDK Apps NDK Appsはゲームアプリを想定し、UIはOpenGLで書く SDK Appsは従来のJNIで作るのをGoで実装する
6.
さっそく、といっても NDK Appsは、UIをOpenGLで書かないといけないので、とてつ もなくめんどk 普通のAndroidアプリを作るなら、SDK Appsの方が良さそう 今回はSDK
Appsをつくる
7.
使用した環境 Go環境 Ubuntu14.04 (VMware Player) Android環境 Windows7 Android
Studio 1.0.2
8.
Go on Androidのビルド環境を作る Go
on Androidのビルド環境を作るには、NDKなどを用意する 必要があり、若干面倒 Dockerファイルが用意されているので、Dockerでビルド環境を 作る
9.
Go on Androidのビルド環境を作る Dockerをインストール $
sudo apt-get update $ sudo apt-get install docker.io Dockerを有効にし、バージョンを確認 $ source /etc/bash_completion.d/docker.io $ sudo docker --version
10.
Go on Androidのビルド環境を作る go.mobileが必要なので、go.mobileを取得 $
go get -d golang.org/x/mobile/... Dockerファイルでビルド環境を作成 $ sudo docker build -t mobile $GOPATH/src/golang.org/x/mobile
11.
Go on Androidのビルド環境を作る 出来たDockerイメージを確認 mobileが出来ていればOK $
sudo docker images こんな感じで出てくるはず REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE mobile latest 5cfd030b6850 9 minutes ago 3.32 GB
12.
サンプルをビルドしてみる go.mobileのlibhelloというサンプルをビルドしてみる $ sudo docker
run --rm -v $GOPATH/src:/src mobile /bin/bash -c 'cd /src/golang.org/x/mobile/example/libhello && ./make.bash'
13.
サンプルをビルドしてみる libhello/binディレクトリに移動すると、「Hello-debug.apk」というファ イルがある $ cd $GOPATH/src/golang.org/x/mobile/example/
libhello/bin adb installで端末にインストールしてみる $ adb install ./Hello-debug.apk
14.
サンプルをビルドしてみる 「Hello」というアプリが入っているので、起動 上部に「Hello」と出る libhelloディレクトリにあるmake.bashは、最後にAndroidアプリを作 るのにantでビルドしている アプリはAndroidStudioでビルドするつもりなので、共有ライブラリ が欲しい
15.
共有ライブラリを作成する Goのサンプルソースを用意したので、それを使って説明する サンプルソースを取得 $ go get
github.com/scarviz/gocalc gobindをインストール $ go install golang.org/x/mobile/cmd/gobind
16.
共有ライブラリを作成する サンプルソースのディレクトリに移動 $ cd $GOPATH/src/github.com/scarviz/gocalc "go_"
+ パッケージ名となるディレクトリを作成 $ mkdir calc/go_calc
17.
共有ライブラリを作成する gobindを使って、必要になるファイルを自動生成する $ gobind -lang=go
github.com/scarviz/gocalc/calc > calc/go_calc/go_calc.go $ gobind -lang=java github.com/scarviz/gocalc/calc > calc/Calc.java go_calc.goは共有ライブラリの作成に必要なファイル main.goにはgo_calcパッケージを含める必要がある Calc.javaは後でAndroidのプロジェクトに含める
18.
共有ライブラリを作成する 共有ライブラリを作成 $ sudo docker
run --rm -v $GOPATH/src:/src mobile /bin/bash -c 'cd /src/github.com/scarviz/gocalc && ./make.bash' make.bashの中では、Go.javaとSeq.javaをコピーしているが、シ ンボリックリンクの方が好ましいらしい WindowsでAndroidアプリを作成するつもりなので、コピーにしてい る
19.
Androidアプリを作成する 作成手順 1. AndroidStudioを立ち上げ、適当なプロジェクトを作成 2. javaディレクトリ以下に、goディレクトリ以下を配置 3.
go/calcディレクトリ以下にCalc.javaを配置 4. mainディレクトリ以下にjniLibsディレクトリを作成し、 その下にarmeabi-v7aディレクトリ以下を配置
20.
Androidアプリを作成する 以下のような配置になる main ├─java │ └─go │ │
Go.java │ │ Seq.java │ │ │ └─calc │ Calc.java └─jniLibs └─armeabi-v7a libgojni.so
21.
Androidアプリを作成する ActivityクラスのonCreateメソッドなど、最初の処理でGo.initメソッ ドを呼び出し、初期化 @Override protected void onCreate(Bundle
savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Go.init(getApplicationContext()); }
22.
Androidアプリを作成する 後はgoの関数(Calc.javaのメソッド)を、Activityクラスなどから呼び 出すように実装 Runで端末(またはエミュレータ)にインストールし、実行する 当然だけど、エミュレーターならARMの方じゃないと動かないよ!
23.
Androidアプリを作成する
24.
Androidアプリを作成する 見てみろよ それGoで動いてるんだぜ!
25.
じつは gobindのReadmeを見てみると… https://godoc.org/golang.org/x/mobile/cmd/gobind#hdr-Type_restrictions
26.
えいごがんばってよんでみた 使える型 ・intの符号あり整数と、floatはOK ・string、boolもOK ・上記の型なら、パラメータや戻り値に使える ・上記の型なら、戻り値は一つ、または組み込み型のerrorと合わせ て2つ使える ※errorはJava側では例外扱いになる ・上記の型なら、インターフェースも使える ・上記の型なら、構造体も使える
27.
ちなみに 当たり前な感じもするけど、publicじゃなかったら、制約はなし GoWebサーバも動いたよ! ていうか、いざとなったらJSON使えばいいじゃん!くらいの気持ち の持ちようで頑張る
28.
あと Go1.5(予定では2015/07)では 『iOS experimental support』 という話。 experimentalあたりはぐーぐる臭ただようわ Go
on Androidっていってるけど、Go on Mobileが正式名称っぽい GothamGoの動画 http://vimeo.com/channels/852217/115307069 スライド http://talks.golang.org/2014/gothamgo-android.slide#1
29.
これからも期待したいですね! ご清聴ありがとうございました!
Download