2022/02/12

Android Studioが軽くならないだろうか(WindowsでReact Native)

会社で、私と同僚が同じ Android Studio のプロジェクトを操作しているのだが、どうも同僚の方が動作が速いようだ。
どうも、というレベルではなく、あからさまに違う。
私は Windows10、同僚は MacOS。

まあ、マシンスペックは私の方が低いのである程度は仕方ないのだが、分単位で違うほどの差はないと思っている。
軽くならないだろうか。

ちなみに、素の Android 開発ではなく React Native を使っている。


まずは Microsoft のこちら。2022年2月12日更新だから最近だ。

Android 用の Windows Defender の例外を追加する | Microsoft Docs
https://docs.microsoft.com/ja-jp/windows/android/defender-settings

そこからも参照されている Android のこちら。

Android Studio の設定  |  Android デベロッパー  |  Android Developers
https://developer.android.com/studio/intro/studio-config#antivirus-impact

あとは JetBrains のこちら。

Slow startup on Windows: splash screen appears in more than 20 seconds – IDEs Support (IntelliJ Platform) | JetBrains
https://intellij-support.jetbrains.com/hc/en-us/articles/360005028939-Slow-startup-on-Windows-splash-screen-appears-in-more-than-20-seconds

いずれも Windows 標準のウイルスチェックから除外する方法だ。
プロジェクトは別のディレクトリでやってるし、私のところでは存在しないディレクトリもあったのでこんな感じになった。
Android Studio はバージョンごとのディレクトリにせず、せめて AndroidStudio ディレクトリを作ってその下に置いてほしかったものだ。

image

 

これでビルドしてみたのだが、うーん。。。

そもそもどこに時間がかかっているのか見ていなかったのだが、ビルドのボタンを押して終わるまでに 55 秒かかっていて(新規ではないビルド)、50秒くらいは何もログが出ないのだ。
タスクマネージャーで見ると node.exe ががんばっている。
ということは、gradle とか Java とかの前の段階で時間がかかっているのか?


同じ要領で node.exe を除外対象に追加した。
そうすると 55 秒 →50 秒に短縮された。
ならば少なくとも最初に時間がかかっているのに node.exe が影響しているようだ。

普通の Android なら node.exe は使わないと思うので、React Native ならではの事情だろうか?
以前作った QRコードアプリで試してみると、うん、node.exe は起動されず java.exe が動いている。
それにビルド自体も 3 秒くらいで終わった。
React Native でのビルドが遅いということで間違いなかろう。

 

Windowsの「リアルタイム保護」をオフにしてみたが、速度は変わらなかった。
npm のキャッシュディレクトリみたいなものがあるのかと思ったが、グローバルでインストールしているものが無いので影響が無いのかもしれない。あるいはリアルタイム保護だけではないとか。


他のアプリを終了させて↑と時間が変わってきた。
今は 39 秒くらいで、node.exe が働いているのが 34 秒くらい。

これを Android Studio の Build タブに出ていた「Build Analyzer」で見てみると、ビルドは 22 秒だったことになっている。
そのうち 17.5 秒が Build configuration という時間だったようで、これが最適化できるらしい。

Configuration cache
https://docs.gradle.org/current/userguide/configuration_cache.html

Android Studio ではなく gradle なのか。
それはよいとして、メッセージに「Android Gradle plugin supports Configuration cache from 7.0.0. Current version is 4.2.2.」と出てきた。
AGP ってやつね。

image

じゃあ上げれば良いかというと、だいたいそうはいかんのだ。
Android Studio もプロジェクトを起動して Gradle Plugin のバージョンが最新じゃなかったら通知してくるのだけど、それは罠だ。
プロジェクトを作ったときのバージョンから言われたとおりに変更すると、だいたいろくなことがない。

試しに 7.0.0 にしてみたら・・・ほら、やっぱりダメだ。
React Native のバージョンでいろいろ決まっているので AGP のバージョンだけ変えるなんてことは難しいのだ。

17.5 秒短くなった世界を見てみたかったが、私の環境では無理そうだ。
まあ、夢は少し残してあるということにしておこう。


React Native と Winwdows の観点で調べ出すと、またいろいろ出てきた。

React native run android terribly slow · Issue #27898 · facebook/react-native
https://github.com/facebook/react-native/issues/27898

React Native 0.63.3 is extremely slow · Issue #30403 · facebook/react-native
https://github.com/facebook/react-native/issues/30403

前者は Windows で後者は Mac だった。
うーん、React Native のバージョンで違いが出てると言うこともあり得るのか。

効果があるのか分からないが、 .gradle\gradle.properties に設定をした。
vfs.watch は Issues から、 UseParallelGC は Android Studio でビルドした内容からだ。

org.gradle.vfs.watch=false
org.gradle.jvmargs=-XX:+UseParallelGC

 

私の環境も、さっきは 50 秒だの 39 秒だの書いているが、あれは何も変更していない状態でビルドボタンを押しただけの場合だ。リビルドすると 5 分くらいかかる。
5 分くらいかかる中で 20 秒くらい縮まってもあまりありがたみがない。

React Native だから開発の本体は JavaScript 側でやるため、実はそんなに Android Studio を触ることはない。 Android Studio を使うのはネイティブじゃないとできないことをやったりする場合くらいだ。
そして、私の担当はそういう箇所である。

 

私の事情は良いのだ。
React Native を Android で使っていても Android Studio というか gradle ビルドというかをしばしば行わないといけない人がいると言うことさえわかってもらえば良いのだ。