macのIntelliJ IDEAにAndroid SDKをInstallするまでのメモ

IntelliJ IDEAでAndroidアプリ開発を始めるときに、Android SDKのインストールまでに手こずったので、手順をメモしておきます。

# サマリー

- SDK Managerのツールやパッケージの初回インストールはマニュアル操作で実行する
- Android SDKのインストールディレクトリに実行権限を付けるのを忘れない `chmod -R 755 *`
- SDK ManagerのGUIツール（tools¥Androidコマンド）はDeprecatedなので利用しない
- 初回インストール後はIntelliJのSDK ManagerでPlatformやToolの追加をGUIで操作できるようになる

# 前提

|環境|バージョン|
|:---:|:---:|
|macOS|10.13.5 (High Sierra)|
|IntelliJ IDEA|2018.1.5 (Ultimate Edition)|
|JDK|8 (9,10もインストール済み)|
（2018.6.24時点）

**作業はrootユーザーで実施した。**
rootでなくてもSetUp可能だが、JDKと同じディレクトリ(/Library)にAndroid SDKを置いておきたかったため。

# SDK Managerのコマンドラインツールのインストール

[公式のAndroid Developerサイト](https://developer.android.com/studio/#downloads)から、Command line tools onlyセクションのSDK tools packageをダウンロードする
<img width="1299" alt="スクリーンショット 2018-06-24 13.01.27.png" src="https://qiita-image-store.s3.amazonaws.com/0/160107/8dc906e8-191a-c308-7f82-0a4548860219.png">

ダウンロードしたzipを解凍すると、"tools"ディレクトリが出来るのでこれを任意のディレクトリに置く。
*ちなみにこの後の作業で、toolsディレクトリと同階層にSDKのパッケージディレクトリが作られるので"Android"のような親ディレクトリを作って置いた方が良い。*

今回は`/Library/Android/sdk/tools`とディレクトリ階層を作った。

# SDKディレクトリのパーミッションと所有者の変更

置いたSDKディレクトリ配下のコマンドやライブラリをIntelliJやterminalで実行できるように設定した
`chown -R root:wheel /Library/Android/sdk`
`chmod -R 777 /Library/Android/sdk`

chownは必要無いかもしれないが、Libraryディレクトリ配下に置いたのとJDKと同じ条件にしておきたかったので設定した。
chmodを`777`にしたのは、設定完了後IntteliJからのSDKの追加・更新ができるようにするため。

# sdkmanagerコマンドを実行してjava.lang.NoClassDefFoundErrorが出力された場合

`java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema`が出力された場合、Java EE(Jakarta EE)のAPIを利用しようとしていることが原因のため、[こちら](https://stackoverflow.com/questions/47150410/failed-to-run-sdkmanager-list-android-sdk-with-java-9)を参考に、このAPIの利用を無視するように設定変更する

1. エディタで`/Library/Android/sdk/tools/bin/sdkmanager`を開く
2. `DEFAULT_JVM_OPTS`変数を探す
3. `DEFAULT_JVM_OPTS`変数の値に`-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee`を追加する

# sdkmanagerコマンドで、必要なパッケージをインストールする

*sdkmanagerへの実行PATHは通していない。通していれば `sdkmanager`コマンドで実行できる*

最新のパッケージ情報に更新する
`/Library/Android/sdk/tools/bin/sdkmanager --update`

パッケージリストを表示し、Android platformとbuild toolのバージョンタグを確認する
`/Library/Android/sdk/tools/bin/sdkmanager --list`
(2018.6時点の最新は28)

Android Platformをインストールする
`/Library/Android/sdk/tools/bin/sdkmanager "platforms;android-28"`

Android BuildToolをインストールする
`/Library/Android/sdk/tools/bin/sdkmanager "build-tools;28.0.0"`

インストールが完了すると、Android/sdk配下のディレクトリ構成が以下のようになる
<img width="290" alt="スクリーンショット 2018-06-24 13.36.52.png" src="https://qiita-image-store.s3.amazonaws.com/0/160107/243d9e2f-7392-fc51-7de8-ef2f47b8780e.png">

# IntelliJ IDEAにSDKをSetUpする

`File > Other Settings > Default Project Structure`を選択する
（Projectを閉じた状態の"Welcome to IntelliJ IDEA"画面の右下`Configure > Project Defaults > Project Structure`からでも同じ)
<img width="1041" alt="スクリーンショット 2018-06-24 13.47.30.png" src="https://qiita-image-store.s3.amazonaws.com/0/160107/2f63e45a-d356-308b-1995-17f187fa51b1.png">


`Platgform Settings > SDKs`を選択し、**Android SDK**を選択する
<img width="994" alt="スクリーンショット 2018-06-24 13.40.15.png" src="https://qiita-image-store.s3.amazonaws.com/0/160107/34796ad3-a58e-8d5f-0939-c10db6174b51.png">

SDKのPathを聞かれたら`/Library/Android/sdk`を指定して[Open]する
<img width="697" alt="スクリーンショット 2018-06-24 13.48.13.png" src="https://qiita-image-store.s3.amazonaws.com/0/160107/de113e76-1487-0e51-9f5f-c754b8bf015b.png">


JDKとAndroid SDKのVersionを指定して[OK]する
<img width="254" alt="スクリーンショット 2018-06-24 13.42.26.png" src="https://qiita-image-store.s3.amazonaws.com/0/160107/27ff8d6a-1eb4-c997-44cc-5594e2cf438a.png">

追加されたら[OK]を押す
<img width="882" alt="スクリーンショット 2018-06-24 13.44.22.png" src="https://qiita-image-store.s3.amazonaws.com/0/160107/e6791b2c-2473-fc1b-b95f-6d510213d9ae.png">

これでAndroidアプリの開発を進めることができました。

実際にはアプリのプロジェクトを構築する際に、別バージョンのSDKやAVD、Emulatorなどもインストールしたが、これらは全てIntelliJから実行したので割愛します。

## IntelliJ IDEAのSDK Managerについて

セットアップ完了後、`Preferences > Appearance & Behavior > System Settings > Android SDK`やツールバーからSDK Managerを実行できるようになった。（Android Studioと同じような操作ができた。）
<img width="936" alt="スクリーンショット 2018-06-25 4.32.00.png" src="https://qiita-image-store.s3.amazonaws.com/0/160107/2b225b64-5011-51da-1ed9-40a2002d18fb.png">

<img width="1188" alt="スクリーンショット 2018-06-24 14.04.25.png" src="https://qiita-image-store.s3.amazonaws.com/0/160107/eaeb4ab0-29c3-95c1-8486-ac8cf3729946.png">

*メモ:`sdkmanager`のダウンロードやコマンド実行を行わないで、IntelliJの`Android SDK Location > Edit`からもToolやSDKがダウンロードできそうだったが、ダウンロードが途中で失敗したり、[Finish]ボタンが押せなかったり、IntelliJ自体がフリーズしてしてしまうため、`Edit`は利用しない方が良さそう。*
[参考1](https://intellij-support.jetbrains.com/hc/en-us/community/posts/115000555970-Android-SDK-Setup)
[参考2](https://stackoverflow.com/questions/45268254/how-do-i-install-the-standalone-android-sdk-and-then-add-it-to-intellij-idea-on/45268592#45268592)

# 参考
https://developer.android.com/studio/command-line/sdkmanager