Android5.0でのsdk toolsのビルド方法

Android 5.0からsdkのビルド方法が少し変わっているようだ。

Kitkat まで

kitkatまでは-g allrepo 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でないといけないようだ。

Tags// , ,