最新の Android command-line tools のセットアップ

Jumpei Matsuda
4 min readJun 14, 2020

--

2020/06/14 時点、rev. 6514223 に基づいて書いています。

長らく sdk-tools rev.4333796 が使われていたと思いますが、いつの間にか Android SDK を管理する CLI のアーカイブが更新されました。(いつ変わったかどうかは調べてないので、知ってる方は教えてください。)

それに伴い、CI などで今まで動作していたコード片が単純なアーカイブ変更では動かなくなります。

今までのインストール方法

今までは sdk-tools アーカイブをダウンロードし、Android SDK 予定地に解凍。加えて ANDROID_HOME さえ指定しておけば何の問題もなく動きました。command-line tools では以下のように変わります。

新しいインストール方法

単に unzip するだけでは駄目で、tools の親ディレクトリがcmdline-tools というディレクトリでなければなりません。 command-line tools アーカイブの中身は今までとファイル構成があまり変わっていないので、割と苦しみました。

sdkmanager は、sdk_root オプションなしに実行されたときにインストール先を sdkmanager 自身のパスから計算します。このパス計算の中で、恐らく cmdline-tools という名前が利用されているのだと思います。

ただ cmdline-tools が動かないときに出る以下のエラーメッセージが向上することを祈ります。まあデコンパイルすれば分かるんですが・・・

良くわからないけど設定を作れなかった sdkmanager の断末魔

おまけ

現在使っている sdkmanager を利用すると cmdline-tools というパッケージが提供されていることが分かります。

今までは Android SDK となるディレクトリを用意し、Android SDK Tools をダウンロードしていたのに対し、今後は Android SDK となるディレクトリを用意し、自分で cmdline-tools パッケージを配置するようなイメージでいるといいのかな、と思います。

ただしあくまでもイメージであって、厳密には異なると見た方が良さそうです。 sdkmanager 経由で cmdtools をインストールすると $ANDROID_SDK_ROOT/cmdline-tools/$version/tools/bin となりますが、自分でダウンロードするときにこのパス構成にしても動きません。なぜ・・・

所感

この変更にはポジティブです。今までは CLI というより初期状態 Android SDK ダウンロードという感じだったので・・・

参考

--

--

Jumpei Matsuda

Just a curious software engineer working at a Japanese tech company.