かなりピーキーかも知れない Android Studio 2.3正式版

動作環境


はじめにお断り書き

自分の作業環境が、富豪環境でないからのための状況の可能性があります。

素晴らしい環境を確保できれば、開発運用的に問題ないかもしれません

AS2.3環境に変更しても問題ないと思われる環境

  • 下記の条件のプロジェクト
    • Mac(Book)環境
      • メモリが最低16G / 多分推奨32G *1
      • 8GのMacBookAirで動かせないことはないようですが、Unity並にかなり重いという話を聞きました*2
      • SSDタイプ
    • android gradle plugin 2.3 で完全運用できる
    • Instant Run が動かせる
    • 基本的にこれから新規ウイザード等で作るだけ

ただ

な状況らしいので ConstantLayout前提の開発になるのかな?

自分がちょっと触った感じ、RelativeLayout + AbsoluteLayout の間の子?みたいな感じでしたが

作者の方に直してもらった Pleiades の効果は?

いきなり正式版で試すのは怖かったので RC1の段階で再度チャレンジしてみました。

0.5〜1割程度負荷が減ったかなという感じ。

たしかにちょっと軽くなった気がしますがこの状況で開発は厳しいかもです><

多分、他の方々は問題なく動く環境で開発されているんでしょうね・・(遠い目

アプデ直後の状況

  • アプデ失敗。
    • 起動直後にクラッシュ多発で立ち上がらず
    • dmgをまるごと公式から落としてきて上書きしました。
    • この環境はOSでいればクリーンインストールに近いはずですよね??
      • とりあえず起動はしました

起動後の他のモジュールの更新

  • いつものごとく更新地獄。。。
  • 半日まず潰れる。。
  • バックグラウンド更新のボタンが何故か効かず
    • 編集画面が更新モーダルダイアログにロックされるので凄いウザい><
    • コマンドラインから更新することに・・
sdkmanager --update

で古いプロジェクトを開く

dagger 使っているプロジェクトが有りまして gradle plugin 2.2で運用していました。

で下記の状態に。。

流石に重すぎて何もできないので、急遽解決策を探す。で下記の設定でなんとか 2.3環境を作る

というか、daggerって googleのプロジェクトなのにね。。

AnnotaionProcesserで動かない理由は、APTの実行タイミングが違うから。

Issueにも上がってるはずなんですけどね。。現状 apt pluginのお世話になるしかない。

しかし StackOverFlow でも未解決状態だった回答を持っているとは Kotlin界隈のモヒカン度が凄いわw

    //for Dagger2
    classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'

    // Dagger2
    compile 'com.google.dagger:dagger:2.9'
    apt 'com.google.dagger:dagger-compiler:2.9'
    apt 'com.android.databinding:compiler:2.3.0'

とりあえず安定状態になったはずだが?

でやっと午後一ぐらいで

  • data-binding
  • dagger
  • AS 2.3 on InstantRun

環境が構築できたわけです

Pleiades 適応を再チャレンジしてみる

うわーん>< 3割マシマシ状況(CPU/メモリ)が復活した〜

ソースやlayout.xml上でキーボードでカーソルを動かす度にカックンカックンするので流石にすぐ外しました

でなんとか動かせる状況に復帰

でしばらくアクティビティーモニターを見ながら動かしてみることに。。

な状態。。

  • 1回実行する度に
    • 100ー200Mぐらい増えていく勢いで(AS上のメモリが)
    • gradleタスクはjavaプロセスとして別途モリモリ

で本体側のメモリがきつくなる度に

gradlew --stop
jkill.sh
  • jkill.sh
#!/bin/sh

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

あたりをしてクリーンな環境にする感じでした。

  • gradle daemonとかjavaのforkプロセスを殺すと、
    • IDEの方のメモリの方も下がってくる感じなので
    • メモリ上にやり取りしているキャッシュをもっているのかな?

ここまで来るとたしかに、まともに動くPCを買うほうがラクかもしれませんね。。


変わっているらしい挙動

自分メモ系

  • 署名が違うapkを自動uninstall => installするようになった*3
    • release.apkが入っている端末=>debug.apk転送

でもこれ偶にコケてクラッシュする。其の場合は手動でアンインストールが勿論必要。

  • RC1のときに不安定になっていたHotSwapが動くようになった
  • layout.xml上の補完がまともになってきた

ただ補完を出そうとする時に、瞬間的にCPUがぐんと上がるのは挙動的に仕方ないのかな?

TLメモ

ビルド関係

=> これgradle wraperを更新すると速くなる のネタな気がするw 以前のバージョンより 2倍2倍 が合言葉みたいだけど、そこまで体感できないんだよな〜

data-binding関連

  • GradleSyncをしないとやたら補完が認識しない
  • XXXViewDataBindingを参照しているソースが赤くなりがち

とかあるけど、そこら辺のことかな?

試しに 下記のチェックをいれたら上記の現象は緩和されたので、G様社内ではデフォ設定なのかもしれない

  • 保存時にバックグラウンドビルド
  • build時にGradleSyncを行う

勿論重くなりますけどね・・<汗

apt-plugin の中で使っているaptバージョンとdata-bindingのaptバージョン が差分出ているのかな?

apt-pluginの方はメンテされて無さそうだからありそう。。

plugin形式だと dependenciesのlibraryのexcludeとかできないから難しいよな・・・対処的に


新規プロジェクトテンプレート


新Lintに対して

<= これは自分はBetaあたりの時に踏んでる現象なので。Lint指定を探してdisableしている感じかな の新規Lint対応あたり。


これは未経験。GooglePlayService系で依存しているのかな?

ダウングレードするには

なんか Previewサイトが出てリダイレクトされるので、現在は下記

でいけるみたい。自分ググってこのページたどり着いたわ・・(苦笑

リンク経由で行けなかったのは内緒><。

*1:多少のメモリリークを気にしなくていい環境

*2:TLで快適快適って言っている人は 少なくともMacbookProなのかな?

*3:違う署名のapkが入ってますダイアログ表示がなくなった