Android5.0でのsdk toolsのビルド方法
25/Nov 2014
Android 5.0からsdkのビルド方法が少し変わっているようだ。
Kitkat まで
kitkatまでは-g all
で repo sync
したソースツリーで以下のコマンドSDKがすべてビルドできていた。
$ lunch sdk-eng && make sdk
これで、/out/host/linux-x86/sdk/android-sdk_eng.hoge_linux-x86/にsdkが出来上がる。
Lollipop ではsdk toolsがplatformビルドから除外
しかし5.0以降、なぜかsdk/toolsがビルドされなくなっているようだ。 以下のコミットからも明らかなように、意図的にremoveされているようだ。 kitkatとlollipopのchangelog
(KKからLへの差分で、”Remove sdk tools from the build” というコミットがいくつかマージされている)
sdk/toolsのビルド方法
Lollipopのsdk/toolsは、他のsdkとは別にビルドする必要があるとのこと。参考
buildSrc/がポイント。ここにsdk/toolsをビルドするスクリプトが入っている。
buildSrc/はstudio系のブランチを落としてこないと入ってない。
ふつうにmasterとかandroid-5.0.0_rXとか指定してrepo sync
してもbuildSrc/は含まれない。
$ repo init -u https://android.googlesource.com/platform/manifest -b studio-1.1-dev
$ repo sync
$ mkdir -p out/dist
$ ./tools/buildSrc/servers/build_tools.sh `pwd`/out `pwd`/out/dist 1234
上記参考サイトに
This will build the SDK Tools for your current platform. the result is located in out/sdk/ This is composed of
- The emulator and associated executables and libraries
- Java-based standalone tools
- Monitor
とあるように、emulatorやuiautomatorなどのsdk/tools一式がout/sdk/にビルドされる。
toolsのビルドにはJava7ではなくJava6
以上を実施してみればわかるが、build_tools.sh 実行時にJava6を使えと怒られる。 Lollipop以降のPlatformビルドはJava7である必要があるが、toolsのビルドに関しては未だJava6でないといけないようだ。