この記事は KMC アドベントカレンダー 4日目の記事です。自分は5日目だと思っていてのんびりしてました… :bow: :bow:
昨日は id:nojima718 さんの
でした!
本題
今回は Android Studio をビルドしてみます。
大体ここに従ってます。
何故
Android Studio 2.2 になってから mac で外部ディスプレイに繋げたときに色が全体的に色が濃くなりました。僕の使ってる Molokai テーマには致命的で、元からコントラストが高いのにさらに濃くなると目が痛くて仕方ありません。
だからといってテーマ変えても濃くてつらく、最近は外部ディスプレイに繋がずに使っていました。
ここで Android Studio の更新ログを見ると
Improved color management on OS X
とのこと。
もしこれのせいなら、 該当する Commit を Revert して自分でビルドすればいいのでは? と思い立ち、とりあえず自分でビルドしてみることにしました。
ちなみに原因はそれではありませんでした(後述)。
ビルド
ソースコード
repo
Android では複数の git repository を一度に扱う repo
というコマンドで管理することを推奨しています。*1
Repo command reference | Android Open Source Project
上に従って repo
(実体は Python スクリプト) をダウンロードして実行できるようにします。
repo sync
次は適当な場所にソースコードをダウンロードします。とりあえずビルドしてみるだけなので --depth=1
としてファイル容量を抑えています。*2
$ mkdir studio $ cd studio $ repo init -u https://android.googlesource.com/platform/manifest -b studio-2.2.2 --depth=1 $ repo sync
大量のレポジトリが 3GB ほど降ってきます。後のビルドでも 5GB 程度は容量食うのでそれなりに確保しておきましょう。
ビルド
とりあえずビルドしてみます。ドキュメントにある通り、 ant
をインストールした後
$ cd tools/idea $ ant
とすれば後はビルド終了を待つのみ。
自分の Macbook では 20 分ほどかかりました。ポケモンピクロスでもして待っていましょう。
成果物
tools/idea/out/artifacts
以下にビルドした AndroidStudio 達が存在しています。Mac でビルドしましたが Windows / X Window 用も作られていました。
$ ls out/artifacts android-studio-SNAPSHOT-no-jdk.mac.zip android-studio-SNAPSHOT-no-jdk.tar.gz android-studio-SNAPSHOT-no-jdk.win.zip core intellij-core-AI-145.SNAPSHOT.zip jps sources.zip
ここから android-studio-SNAPSHOT-no-jdk.mac.zip
を解凍すれば Android Studio.app
が生成されます。こうして自分専用の Android Studio が使えるようになりました。
JDK
ところでファイル名を見ると no-jdk
となっており、Idea JDK
が含まれていないようです。なくても困ることはないですが、推奨されているのだから使いたい。
どうやら prebuilts/studio/jdk
に然るべき JDK を置けば一緒に含めてくれるみたいです。
ということで、repo
のレポジトリ管理ファイルである manifest.xml
に新しいレポジトリを追加します。
ローカルの manifest
は .repo/local_manifests
に置けば良いので、.repo/local_manifests/manifest.xml
に
<?xml version="1.0" encoding="UTF-8"?> <manifest> <remote name="aosp" fetch=".." review="https://android-review.googlesource.com/" /> <project path="prebuilts/studio/jdk" name="platform/prebuilts/studio/jdk" clone-depth="1" revision="studio-master-dev"/> </manifest>
と記述して repo sync
します。
すると prebuilts/studio/jdk
に platform/prebuilts/studio/jdk
(https://android.googlesource.com/platform/prebuilts/studio/jdk/) の studio-master-dev
ブランチが clone されるので、再ビルドすると
$ ls out/artifacts android-studio-SNAPSHOT-no-jdk.mac.zip android-studio-SNAPSHOT-no-jdk.tar.gz android-studio-SNAPSHOT-no-jdk.win.zip android-studio-SNAPSHOT.mac.zip android-studio-SNAPSHOT.tar.gz android-studio-SNAPSHOT.win.zip android-studio-SNAPSHOT.win32.zip core intellij-core-AI-145.SNAPSHOT.zip jps sources.zip
が生成されました。
しかし、実行してみると起動してくれない…。ブランチが違ったりしてるし諦めて JDK 無しでやりました。
その後
実行できたので早速 git のログを漁り初めたのですが、それっぽいログがない。実際にソースを見てみてもそれっぽい部分がないので困っていると、ちょうどそれらしきプラグインを発見。*3
どうやら問題は IntelliJ が JDK を Idea JDK (8) に切り替えたことが原因のようです。
https://youtrack.jetbrains.com/issue/IDEA-149601
...ということでプラグインを入れることで問題が解決してしまった🙏。*4
ビルドが終わった頃には studio
ディレクトリは 12GB も食っていました。残り容量はなんと 500MB になり、警告も出ています。
よって、速やかに studio
を削除してこの話は終わりとします。ありがとうございました。
$ df -h Filesystem Size Used Avail Use% Mounted on /dev/disk1 186G 185G 529M 100% / /dev/disk0s4 47G 27G 21G 57% /Volumes/BOOTCAMP $ rm -rf studio rm -rf studio 0.81s user 20.83s system 60% cpu 35.700 total $ df -h Filesystem Size Used Avail Use% Mounted on /dev/disk1 186G 173G 13G 94% / /dev/disk0s4 47G 27G 21G 57% /Volumes/BOOTCAMP
余談
- Cross Compile...?
Windows 用はどうやって作っているのだろうと見たところ、ある程度の exe
は初めから置いておいて、最後は気合の実装で作るという感じでした。すごい。他のプラットフォームも割りとそういう感じ。
ということは何か将来個人的な変更を加えたい場合は、 CI に投げて自動的に Mac や Windows 用の AndroidStudio を作るといったことができそう。
- 容量問題
ソースコードを見たいだけなら https://android.googlesource.com/platform/ から見たいものを clone
するだけで良いです。ビルドにはいろいろ必要ですが、見るべきなのは一つのリポジトリ程度なので。
また、intellij 本家を GitHub で見るのもオススメです。
明日
明日(今日)は id:tyage さんです!!!楽しみですね!!!