めちゃくちゃ不安定な気がする Android Studio 2.4 preview3

動作環境

(ところにより挫折して AS 2.3に戻ったりしています)

結論からいうと

Preview2までの目立ったバグは治っているんだけど、めちゃくちゃ不安定

  • CPUが馬鹿食いするようになった
    • すごくファンファン分回る*1
    • gradlew –stop でも多少収まるけど
    • ASのIDE自体再起動すると高止まりのCPU使用率が一旦下がったりする
    • あと激重いなとおもったら gradle daemonが複数立ち上がっていたりも(汗
  • メモリも馬鹿食い
    • IDEのVMOptionの制限が聞かない*2

触ってた状況

初っ端がまずこれ。1時間ぐらい苦戦してた。

この時、IDEしか新しいの配布されていない状態。

Preview2のときと同じくIDEしか更新されないかと思ってました(爆

このタイミングで、最新のgradle pluginも振ってきたわけですが

すると、pluginがGradle Syncでエラーを吐き出す。

公式だと icepick が providedで宣言しろって書いてるんですけど

dependencies {
  compile 'frankiesardo:icepick:3.2.0'
  provided 'frankiesardo:icepick-processor:3.2.0'//★
}

★の部分が AnnotationProcesser対象だろ=>Lintエラー

っていうわけわかんないエラーを吐いてくれます。宣言をエラーログどおりに修正

gradlew tasks //実行

ライブラリをダウンロードしてくれず。

gradlew assembleDebug  //実行

なぜか data-binding/icepick のライブラリがassembleDebugのタイミングでしかダウンロードされないんですよね。

多分 Gradle Syncの高速化の為に gradlew tasksでサブプロジェクトのライブラリ落とさないようにしたんだと思いますが、正直迷惑かなーと

New Gradle Sync の挙動

=> 変に状態をメモリキャッシュしているみたい

Preview2の時にどうもチェックを付けてしまったらしい。

その時は挙動の変化がなかったので、正に時限スイッチ><

  • New Gradle Sync は1個だけ利点はあって、
    • clean/rebuild しても「HotSwapできるかもしれない接続状態が切れない」よう

Preview2 =>Preview3 の挙動変化

と思ったけど、全然完治してない><。

でもまあ clean/rebuild が必須だった状況からは改善したかな・・

しばらく動かしていた感じがこんな感じ。でずっと動かしていると重くなると。

  • コード補完でIDEがガチに固まる
  • キーを1個動かす度にカク、カクって感じになる
  • InstantRunがまともに動かない
    • string.xml/layout.xml 微修正して転送しても反映されず
    • clean/rebiuldが必要
    • これさあ、InstantRunのチェックの意味有るの?

ただでさえ AS2.3から 下記の状態であるのに・・

正確にはこれログにでている時間だけの話しか話題にしていないけど、split.apkを複数入れるコマンドも結構時間かかっている気がする。

下手しなくても下記のほうが速い という

  • assembleDebugでapk作って、
  • adb push XXX.apk
  • adb shell でlaunch

正直ストレスですわ・・まさに人柱版w*3

で更に謎いのは、

  • InstantRunモード
  • assembleDebugで作ったapkを転送した端末で手動でアプリ起動
  • debugプロセス接続ができない

  • AS 2.3だと

    • 問題なくプロセス一覧表示されて接続できていたのに、
    • preview1/2時点でのバグを直すのでなんか遣ったのかな?

TLメモ(AS2.3が主)

バグ修正な話(AS 2.4)

AS2.2=>2.3移行時にバグったらしい機能の修正の話

新機能的な話(AS 2.4)

ココらへんの話は、IDEAの機能のよう。*4

CodeTemplate

その機能使っていないけど、メモ。でもG様も使ってないからテストしてないんじゃないかと

共通系

こういうよくわかんない固定パス仕様変更たまにあるよな・・

  • android gradle plugin 2.1.+ => 2.2.+ に変更された時
    • sourceSet.java.src のpathが固定パスで効かなくなったしね・・*5

AS 2.5 previewの表Specにも満たされていないようだから、

デフォルト状態だと自分と同じく動かせる環境じゃないのかなー*6

これ同意。確か言及されていたバージョンあたりが丁度

InstantRunのHotSwapがちゃんと動いたよ*7。という初めてのバージョンだった気がする*8

CMakeとかもおかしいらしい

data-binding/apt

確かにdata-binding/apt が凄い不安定な気がする

AS 2.3 / 2.4 どちらも・・・

確かに

gradlew clean --refresh-dependencies 

以外はやっているかな・・。

でもInstantRun使っているときは上記だと強キャッシュが消えなくて

gradlew cleanBuildCache

は基本なのかも・・

data-binding のエラー対策メモみたいな話

自分も知らなかったのでメモっておく

Updaterの話

AS 2.3-XX 系からパッチが凄い不安定な気がする。

正式版になったときも結局DMGでフル上書きしましたし・・

AS 2.4-Preview2 => Preview3もなんか挙動怪しいんだよな・・*9

びっくり仰天裏仕様?

ようは instant run動かすには、下記が必須という話*10

android.enableBuildCache=true

*1:JavaのプロセスはCPU Limitがうまくかけられない

*2:1G設定にしていてもIDEだけで4Gぐらい食うようになる

*3:AS 2.3は正式版のはずなんですけどね。なんかAS2.4よりマシとかいう程度のクオリティ?

*4:最新のIDEA CEベースになったから?

*5:InstantRun使わなくても、InstantRunを動かす環境にできるように固定化

*6:自分はCPU Limit/Memory制限してます

*7:それまではまともに動いていない

*8:その時はちょっとだけ感動したんだけどな。。どうしてこうなった!

*9:Preview1=>Preview2 は dmgフル上書きでしたしね

*10:と言うかその前提でしか作ってないからエラーになるんだろうなという感じ。完全糞仕様だよな。。