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

はじめに

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

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

開発環境

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

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

  • Beta3=>Beta4 アップデートした直後にビルドエラーが頻発*1

    • .android/build-cache の中身の物理削除
    • gradlew –stopdaemon終了
    • jpsでみて gradlewタスク経由で実行されているjavaタスクを終了
    • Invalidate Cache 実行
    • その後再立ち上げ
  • jkill.sh

#!/bin/sh

kill -9 `jps -lv | grep -v AppMain | grep -v "AndroidStudio" | grep -v "IntelliJIdea" | grep -v "sdkmanager" | awk '{print $1}'`

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

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

./gradlew cleanBuildCache

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

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

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

  • 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

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

2/14追加謎挙動

以下の記述があるlibrary-projectのビルドが失敗した

  • オフラインビルドにしているので、projectを開く時にエラー
    • terminal で ./gradlew tasks を実行してライブラリDownload
    • Gradle Syncボタンを押す

いつもならココまででOKですが、何故かずっとビルド失敗

  • 一度下記の2行の記述をコメントして
    • ビルド成功させる
  • 元に戻す
    • ビルド成功する。

pluginアップデート時に絡む何か特殊条件があるのかな・・正直すごい謎。

あとすごくシンプルな構成じゃないと基本駄目なのかもね。とはいつも思う

でもここ設定しておかないと

makeModuleをAS上から実行するときdebugAARが正常に生成されないんですよね、、*4

  • build.gradle
android{
   publishNonDefault true
   defaultPublishConfig "debug"

}

というかproject open時のGradle Syncの強制はどうにかoffにできないものか・・

あれ無くすだけでストレスが堪らない人がすごい多いと思うんだけどね・・

2/18追記

な呟きを見ていて、これも強キャッシュの影響だよな〜とか思い出しつつ

開発中のaar/jarの共有とか他の方はどうやってるんですかね〜


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

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

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

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


おまけ

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

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

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

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

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

おまけ 追記2/14

秋葉原で某戦記の乾パン貰ってきました・・たしかにタワー状態でしたw

職場でも、今は不景気なせいかチロルチョコ配布みたいなのとか遣らない感じみたいです*8

でもまあ個人ベースでもチョコあんまり食べなくなったかな〜(苦笑

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

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

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

*4:共通libraryとか作って可搬性よくしようとするとき困る

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

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

*7:G様?

*8:昔はあったんですけどね・・<苦笑