Android Studio3.5の変更点をもっと詳しく知りたい..!

# はじめに

2019年8月21日(日本時間)にAndroid Studio3.5がリリースされました！
今回のアップデートはとてもアツい更新でした。

Impressやマイナビが次のようにニュースにしていました。

> 「Android Studio 3.5」が正式リリース ～「Chrome OS 75」以降を新たに公式サポート
> https://forest.watch.impress.co.jp/docs/news/1202489.html

> Android Studio 3.5登場 - プロジェクトマーブルの成果あり
> https://news.mynavi.jp/article/20190823-881338/

つまりニュースを見ると、Android Studio 3.5 は『プロジェクトマーブル』の成果で、
『メモリ設定』や『インクリメンタル・ビルド』が改善されて、
『IntelliJ 2019.1』ベースになり『Chrome OS 75』に対応されたことがよくわかります..

＿人人人人人人人人人人＿
＞　よくわからない！　＜
￣Y^Y^Y^Y^Y^Y^Y^Y^Y￣

# 公式記事を読む

> Android Studio release notes 3.5 (August 2019)
> https://developer.android.com/studio/releases#3-5-0

> Android Studio 3.5: Project Marble goes into stable
> https://android-developers.googleblog.com/2019/08/android-studio-35-project-marble-goes.html

公式記事は上記です。ニュース記事をディスっているわけではなく、
更新内容がかなり濃く、量も多いので理解するのは至難の業です。
まとめたので次へ進んでもよいし、上記記事をよく読んで引き返してもよい。

↓次へ

# 不明点まとめてみた

自分がわからなかったところを調べつつまとめたのが以下となります。

## Project Marbleって？

個人的に一番良くわからなかったのが"Project Marble"でした。
調べると"Project Marble"という言葉が出たのはAndroid Studio 3.3リリースからです。

> Android Studio 3.3
> https://android-developers.googleblog.com/2019/01/android-studio-33.html

記事を一部訳すと以下となります。

> Project Marbleは、Android Studioチームが統合開発環境（IDE）の基本的な機能とフローを強固なものにし、日々のアプリ開発で重要なユーザー向け機能の洗練および洗練することに焦点を当てています。
> ワークフロー
> Project Marbleでは、クラッシュ、ハング、メモリリーク、ユーザーに影響を与えるバグの数を減らすことを特に検討しています。また、これらの問題の発生を防ぐために、測定インフラストラクチャにも投資しています。

特定の機能改善と言うよりは重要な箇所の修正・改善を行うプロジェクトで、
不具合修正や不具合防止の測定に力をいれているようです。

Project Marbleの成果は、以下Google Developer Japanの記事で日本語でまとめられていました。

> Android Studio 3.5 ベータ版
> https://developers-jp.googleblog.com/2019/06/android-studio-35-beta.html

Android Studio 3.5では以下の修正が行われており、
どれも開発効率の向上に直結するうれしい改善ばかりです。

- メモリ使用量レポート機能の追加
- 多端末での実行機能
- Apply Changed機能
- ビルドエラー出力の改善
- Lintのメモリリーク修正よりパフォーマンスが2倍近く向上
- XMLコード編集の最適化
- エミュレータのバックグラウンドでのCPU使用量が3分の1以下
- レイアウトエディタの操作性改善

原文記事はMediumで「project-marble」タグでまとめられています。
https://medium.com/tag/project-marble/archive

## インクリメンタルビルドとは？

> Android Studio のビルドを高速化する
> https://developers-jp.googleblog.com/2019/05/android-studio.html

インクリメンタルビルドは、更新のあるファイルのみビルド対象にするように最適化されたビルドです。
Android Studioでは3.3以降からアノテーション処理もインクリメンタルビルドに対応(incremental annotation processors)し、
3.5ではData Bindingも対応しました。

> Use incremental annotation processors
> https://developer.android.com/studio/build/optimize-your-build.html#annotation_processors
> ※日本語版は最新ドキュメントではありません。英語版を開いてください。

現状ではAndroid Gradle plugin 3.3.0+、Gradle 4.10.1+ (ただしGradle 5.1を除く)である必要があります。
以下のincremental annotation processorsに対応しています。

- Data Binding Library with Android Gradle plugin 3.5.0+
- Lombok 1.16.22+
- Glide 4.9.0+
- Dagger 2.18+
- Auto Service and Auto Value 1.6.3+
- kapt 1.3.30+

以下YouTubeの解説動画によると、
DataBindingとkaptのincremental対応はgradle.propertiesに以下の設定が必要です。

> What’s New in Android Studio 3.5
> https://www.youtube.com/watch?v=OJ3K90FpQ6A

<img width="640" alt="スクリーンショット 2019-08-24 4.24.49.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19692/0c67084a-54e5-90fb-4c65-d718c0676dd4.png">


```gradle.properties
# Data Binding
android.databinding.incremental=true 
# kapt
kapt.incremental.apt=true
```

また、最適化をサポートしていないアノテーションプロセッサを使用する必要がある場合は、
gradle.propertiesに以下のフラグを追加します。

```gradle.properties 
android.enableSeparateAnnotationProcessing = true
```

## メモリ設定の改善とは？

> Maximum heap size
> https://developer.android.com/studio/intro/studio-config#adjusting_heap_size
> ※日本語版は最新ドキュメントではありません。英語版を開いてください。

Android Studioのデフォルトの最大ヒープメモリサイズは1280MBです。
今までは `studio.vmoptions` ファイルに `-Xmx2g` など指定して最大ヒープメモリサイズ変更を行いましたが、
(64bitでRAMが5GB以上ある場合に限り)設定画面からヒープ変更を行えるようになりました。
起動時に推奨メモリ量を表示したり、Kotlinのヒープ、Gradleのヒープなど詳細を設定できるようになりました。

<img width="640" alt="memory-settings.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19692/e8793a5d-4657-ef36-08c0-20e4ed8efb0c.png">


## IntelliJ IDEA 2019.1がベースとは？

IntelliJ IDEA 2019.1の詳細は以下Jetbrainsのリリースノートにあります。

> IntelliJ IDEA 2019.1がリリースされました！ テーマのカスタマイズ、Java 12のSwitch式、Dockerコンテナ内でのデバッグなど
> https://blog.jetbrains.com/jp/2019/04/05/1898

Android Studio 3.5はIntelliJ IDEA 2019.1ベースとなり、2018.3.5, 2018.3.6の修正も含まれています。
2019.1での大きな変更はテーマの変更で、Appearanceの設定項目が増えました。
KotlinやJavaのハイライト強化, サジェスト強化などもあります。

## Chrome OS 75？

Chromebook向けAndroid Studioが公式サポートとなりました。
推奨端末はダウンロードページで挙げられています。

> Acer: Chromebook 13/Spin 13, Chromebox CXI3
> Lenovo: Yoga C630 Chromebook
> HP: Chromebook x360 14, Chromebox G2
> Dell: Inspiron Chromebook 14
> ASUS: Chromebox 3
> ViewSonic: NMP660 Chromebox
> CTL: Chromebox CBx1

# 感想
実は前から
「1日エミュレータつけっぱなしにするとMacの調子がおかしくなるような気がする..」
「DataBindingの挙動がなんかおかしい気がする..」
など思っており、モヤモヤしていたところがProject Marbleで解決され、
さらにその工程がblog記事で事細かに解説しているのがありがたいです。
Lint速度2倍はすごい!

Android Studio3.5はエミュレータ含めかなりサクサク動作する(気がする)のでアップデートおすすめです。

# 追記: Android Studio 3.5の既知の不具合

8/24現在、xmlをフォーマットすると誤った状態になる不具合があると公式で発表がありました。

> Known Issues with Android Studio: Broken XML code style
> https://developer.android.com/studio/known-issues#xml-code-style

以下の方法で回避可能とのこと。

> 1. Open the Settings window by clicking File > Settings (on macOS, Android Studio > Preferences).
> 2. In the left panel, click Editor > Code Style > XML.
> 3. Near the top-right corner of the right panel, select Set from > Predefined Style > Android
> 4. Click OK.