読者です 読者をやめる 読者になる 読者になる

このままリリースされるの? Android Studio 2.3 Beta 4

android AS gradle

はじめに

一部では 某戦記並みに「神を讃えよ」なRTが多発状態のG様の Android Studio ですが、

自分の開発環境で微妙な動きをしていたので備忘的なメモ

開発環境

  • 16G iMac(HDDタイプ)
  • macOS Sierra
  • SlackとかBrowserを基本立ち上げて開発している状態

Beta4にアップしたのですが・・・

  • Beta3=>Beta4 アップデートした直後にビルドエラーが頻発*1
    • .android/build-cache の中身の物理削除
    • gradlew –stopでdeamon終了
    • jpsでみて gradlewタスク経由で実行されているjavaタスクを終了
    • Invalidate Cache 実行
    • その後再立ち上げ

までしてやっとビルドが出来る状態。Beta3->Beta4 どこが軽微な修正なのかな?

一応下記のコマンドで ./gradlew cleanBuildCache はクリーン出来るようなんですが

./gradlew cleanBuildCache

これjavaのタスクが掴んでると消してくれないんですよね・・当たり前の挙動かもしれないんですがorz

  • InstantRunが3-4回実行するとOOMが発生

    • Beta3までは問題なかった。複数プロジェクト開いてもOK
    • Beta4だと1個のプロジェクトでこの状態
    • アクティビティモニター見るとメモリがバカバカ増えているようなのでリークしているっぽい
    • 下記当たりをすると再び実行出来るようになるが、最初からInstantRunビルドし直し・・・
  • gradlew –stopでdeamon終了

  • jpsでみて gradlewタスク経由で実行されているjavaタスクを終了

一応 16G Mac 環境なんだけどな・・・

でもこのままリリースされてしまいそうな気もしなくもない・・

InstantRun切れば問題なくなるんですけどね*2

ReleaseNoteとかの話を見ると・・

  • InstantRunでNDKがエラーになるのを対処したよ
  • ConstraintLayoutがレイアウトエディターとかでちゃんとPreviewできるようにしたよ
  • Android Things Developer Preview 2 とか対応したよ

あたりっぽいんだけど、公開されていない修正が裏でゴリゴリありそう

Build Cacheに関して

android.enableBuildCache=true                        //定義していない場合はAS2.3からはデフォルトtrue
android.buildCacheDir=$HOME/.android/build-cache    //定義していない場合はこの位置

Macでメモリ上に仮想ディスク作るソフトとかあれば android.buildCacheDir をそこにおいて高速化

とかWindowsみたいなことできそうだけど、普通に探すとなさそうなのでSSD環境で開発するのが現実的なのかも

  • android.enableBuildCache=false
    • この状態にするとInstantRunが意味なくなるほど遅くなる
    • で、たぶんこれInstantRunとセットの設定かと思う

あとこのビルドキャッシュの問題なのは、

  • ビルドエラーがでた時に中途半端なビルドキャッシュ/参照を消したはずのlibraryが残るとずっとビルドが失敗する
  • clean/rebuildしても駄目*3

ということかな。これ改善されない限りこの機能って出してはいけない機能な気がするんだけど気の所為?

このままリリースされるとしたら

  • メモリ16G以上、Slackとか他のアプリを立ち上げるなら32G
  • SSDを載せたMac
  • 高速なCPUが望ましい
    • Win/貧弱な開発環境は基本知らん

とかな動作環境になりそう・・・

まあG様の開発は基本、最新のPCが会社から提供されるそうなのでまあ仕方ないのかもなーとか*4

おまけ

この話を仕事場のiOSエンジニアの方にしたところ

  • まだandroidで消耗してるの~?お疲れ様。*5
  • *6への祈りや信仰 が足りないから かもね~

と突っ込み入れられましたorz

AS様は、97式みたいにベテランしか使いこなせない感じになっていくのかどうか

今後の状態を期待しつつ、次のバージョンを期待したいかも

*1:まあこれ大型改修時には必須みたいですけど・・でも今回軽微な修正のはずですよね?

*2:2.3 Beta-3 のpluginに戻せば問題無さそうなんだけど、そもそもIDEとpluginのバージョンが一致しないと、IDE側でInstantRunを実行ブロックしてるしな・・

*3:偶に上記のディレクトリを見てると消えることも有るが、その条件が不明

*4:中流以下の日本の会社はそんなことはない

*5:早くiOS開発するようにしなよ~

*6:G様?