GoでAndroidのコマンドラインツールをビルドする方法
AndroidのRoot化端末などでコマンドラインツールを作りたい時にGoを使いたくて少しはまったので、その時のメモです。
ビルドするマシンは、macOS 10.13.4で、動作確認するAndroidは、HUAWE MediaPad M5のAndroid 8.0.0です。
package main import "fmt" func main() { fmt.Printf("Hello World\n") }
ビルドするときのオプションで、armを指定します。クロスコンパイル時にはCGOデフォルトで切られているそうですが、オプションでも指定しておきます。
cgo - The Go Programming Language
$ GOOS=linux GOARCH=arm GOARM=7 CGO_ENABLED=0 go build $ ls hello main.go $ file hello hello: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), statically linked, with debug_info, not stripped $ adb push hello /data/local/tmp/ [100%] /data/local/tmp/hello $ adb shell /data/local/tmp/hello Hello World $