Goで書いたUnityのネイティブプラグインをGo Mobileでビルドする #golang #unity
May 12, 2016
この記事はQiitaの記事をエクスポートしたものです。内容が古くなっている可能性があります。
はじめに
前回の記事では、iOSのビルドの際、ツールチェインの再ビルドをする必要があると書きましたが、Go Mobileのツールチェインを使えば必要ありません。
Go Mobileのインストール
Go Mobileについての詳細はこちらの記事を見て頂ければ良いと思いますが、インストールは非常に簡単です。 以下の2つのコマンドを走らせます。
$ go get -u golang.org/x/mobile/cmd/gomobile
$ gomobile init -vもし、gomobile initに失敗した場合は、一度$GOPATH/pkg/gomobileディレクトリを削除して、再度実行してみて下さい。
インストールに成功したら、以下のようにモバイル用にビルドされたパッケージが入ってるか見てみて下さい。
$ ls -1 $GOPATH/pkg/gomobile/
android-ndk-r10e
dl
pkg_android_386
pkg_android_amd64
pkg_android_arm
pkg_android_arm64
pkg_darwin_amd64
pkg_darwin_arm
pkg_darwin_arm64
versionAndroid向けにビルドする
ビルドするコードは前回のものと同じです。
ビルドコマンドもほとんど同じですが、-pkgdirオプションを指定します。
このオプションを指定することで、Go Mobileによってインストールされているツールチェインを使ってビルドします。
arm-linux-androideabi-gccは$GOPATH/pkg/gomobile/android-ndk-r10e/arm/bin/以下にあるものを使いますので、PATHを通してください。
$ CGO_ENABLED=1 \
CC=arm-linux-androideabi-gcc \
GOOS=android \
GOARCH=arm \
GOARM=7 \
go build -buildmode=c-shared -pkgdir=$GOPATH/pkg/gomobile/pkg_android_arm -o libhoge.so hoge.goiOS向けにビルドする
前回は、CC_FOR_TARGETとCXX_FOR_TARGETをmisc/ios/clangwrap.shで指定して、ツールチェインを再ビルドしたため、CCやCXXなどをgo build時に指定しましせんでしたが、今回は指定します。
GOOS=darwin \
GOARCH=arm \
GOARM=7 \
CC=`xcrun --sdk iphoneos -f clang` \
CXX=`xcrun --sdk iphoneos -f clang` \
CGO_CFLAGS="-isysroot `xcrun --sdk iphoneos --show-sdk-path` -arch armv7 -miphoneos-version-min=6.1" \
CGO_LDFLAGS="-isysroot `xcrun --sdk iphoneos --show-sdk-path` -arch armv7 -miphoneos-version-min=6.1" \
CGO_ENABLED=1 \
go build -pkgdir=$GOPATH/pkg/gomobile/pkg_darwin_arm -buildmode=c-archive -tags=ios -o hoge.a hoge.goおわりに
今回はGo Mobileのツールチェインを使ってUnityのネイティブプラグインをビルドする方法について紹介しました。
-pkgdirで指定するアーキテクチャも変えればarm64などもビルドできると思います。