Skip to content

Commit b6f7f31

Browse files
hajimehoshibudougumi0617
authored andcommitted
Add hajimehoshi.re
1 parent ad517b9 commit b6f7f31

File tree

2 files changed

+15
-5
lines changed

2 files changed

+15
-5
lines changed

allow.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,4 @@
2222
- "基づ"
2323
- ".*他の"
2424
- "麻雀仲間募集中"
25+
- "の様々"

articles/hajimehoshi.re

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ Goチームの人と連携し、大きめのissueに取り組んでいます。
2020

2121
本稿は@<tt>{gomobile}についてのまとめです。
2222
とりわけ@<tt>{gomobile bind}のAndroid版について、内部で何を行っているのかについて説明します。
23-
Objective-C版も流れはだいたい同じはずですので、本稿では割愛します。
23+
iOS版も流れはだいたい同じはずですので、本稿では割愛します。
2424

2525
本稿で使用する@<tt>{gomobile}のバージョンは次のものです。
2626

@@ -85,7 +85,7 @@ Goで定義したinterfaceをJava側で実装してGoの関数に渡す、とい
8585

8686
== @<tt>{gomobile bind}の使用例
8787

88-
たとえば次のようなGoパッケージがあるとします
88+
たとえば@<list>{gomobile-go}のようなGoパッケージがあるとします
8989

9090
//listnum[gomobile-go][@<tt>{mypkg}パッケージ][go]{
9191
package mypkg
@@ -100,7 +100,7 @@ func NewCounter() *Counter { return &Counter{ 5 } }
100100
//}
101101

102102
これを@<tt>{gomobile bind}でビルドすると、@<tt>{Mypkg.aar}ファイルが生成されます。
103-
その@<tt>{Mypkg.aar}ファイルには次のようなJavaのクラスなどが定義されています
103+
その@<tt>{Mypkg.aar}ファイルには@<list>{gomobile-java}のようなJavaのクラスなどが定義されています
104104

105105
//listnum[gomobile-java][@<tt>{Mypkg.aar}ファイルがもつ定義][java]{
106106
public final class Counter {
@@ -175,7 +175,6 @@ GioはAndroidやiOS向けアプリケーションを生成できます。
175175
@<tt>{gobind}はバインディングに必要なソースコードを生成します。
176176
ソースコードを生成するだけでコンパイルは行いません。
177177

178-
@<tt>{gomobile}が内部で@<tt>{gobind}を
179178
Androidの場合、次のことを行います。
180179

181180
1. @<tt>{$WORK/src/gobind}配下に@<tt>{*.go}ファイル、@<tt>{*.c}ファイル、@<tt>{*.h}ファイルを生成する
@@ -195,7 +194,7 @@ Androidの場合、次のことを行います。
195194
Androidの場合は次のとおりです。
196195

197196
1. @<tt>{$GOPATH}に@<tt>{$WORK}を追加し、@<tt>{gobind}という名前のパッケージをGoでビルドする。@<tt>{$WORK/android/src/main/jniLibs/[ARCH]}に@<tt>{libgojni.so}ファイルを出力する。
198-
2. @<tt>{$WORK/java}次のJavaファイルを${javac}でコンパイルする。@<tt>{$WORK/java-output}配下に@<tt>{*.class}ファイルを出力する。
197+
2. @<tt>{$WORK/java}内のJavaファイルを@<tt>{javac}でコンパイルする。@<tt>{$WORK/java-output}配下に@<tt>{*.class}ファイルを出力する。
199198
3. @<tt>{$WORK/java-output}に対し、@<tt>{jar c -C}コマンドで@<tt>{classes.jar}ファイルを出力する。
200199
4. @<tt>{AndroidManifest.xml}、@<tt>{proguard.txt}、@<tt>{R.txt}ファイルなどを生成する。
201200
5. 今まで生成した@<tt>{libgojni.so}、@<tt>{classes.jar}などのファイルをすべてzipで固めて、@<tt>{*.aar}ファイルを出力する。
@@ -246,3 +245,13 @@ Goの仕様に手を入れなければならない可能性があります。
246245
@<tt>{gobind}は@<tt>{main}パッケージを自動生成しますが、
247246
「開発者は@<tt>{main}パッケージが依存するライブラリを指定できる」というmoduleの仮定と合わないからです。
248247
これについては@<tt>{gomobile}の仕様の大幅な見直しが必要な可能性があります。
248+
249+
== 終わりに
250+
251+
本稿では@<tt>{gomobile}の様々なトピックについてざっくりと解説しました。
252+
特に@<tt>{gomobile}が内部で何をやっているかは、ほかに類を見ない解説だと自負しています。
253+
@<tt>{gomobile}へのコントリビュートに必要な取っ掛かりとなる部分を説明したつもりです。
254+
255+
@<tt>{gomobile}はGoツールチェインの中ではマイナーな部類です。
256+
そのためなのか、残念ながらあまり活発にメンテナンスされていません。
257+
本稿が@<tt>{gomobile}を使ってみよう、またはコントリビュートしてみよう、と思っていただけるきっかけになれば幸いです。

0 commit comments

Comments
 (0)