めちゃくちゃ不安定な気がする Android Studio 2.4 preview3
動作環境
(ところにより挫折して AS 2.3に戻ったりしています)
結論からいうと
Preview2までの目立ったバグは治っているんだけど、めちゃくちゃ不安定
- CPUが馬鹿食いするようになった
- メモリも馬鹿食い
触ってた状況
android studio 2.4 preview 3
— close_yutori (@kimukou2628) 2017年3月22日
ダメだこれ。layout previewが完全に死んだ。
cleanbuildcache
clean
プロジェクト作り直し全てしても駄目
初っ端がまずこれ。1時間ぐらい苦戦してた。
この時、IDEしか新しいの配布されていない状態。
Preview2のときと同じくIDEしか更新されないかと思ってました(爆
android studio 2.4 preview 3
— close_yutori (@kimukou2628) 2017年3月22日
icepickがprovided から annotaionProcesser
に指定を変えないとコンパイルエラー
このタイミングで、最新のgradle pluginも振ってきたわけですが
すると、pluginがGradle Syncでエラーを吐き出す。
公式だと icepick が providedで宣言しろって書いてるんですけど
dependencies { compile 'frankiesardo:icepick:3.2.0' provided 'frankiesardo:icepick-processor:3.2.0'//★ }
★の部分が AnnotationProcesser対象だろ=>Lintエラー
っていうわけわかんないエラーを吐いてくれます。宣言をエラーログどおりに修正
android studio 2.4 preview 3
— close_yutori (@kimukou2628) 2017年3月22日
grobalw tasksではもうrootのbuild.gradle記載のlibraryしか落さなくて
app/build.gradle のはassembleDebug時にですか、、
完全にoffline build殺し
gradlew tasks //実行
ライブラリをダウンロードしてくれず。
gradlew assembleDebug //実行
なぜか data-binding/icepick のライブラリがassembleDebugのタイミングでしかダウンロードされないんですよね。
多分 Gradle Syncの高速化の為に gradlew tasksでサブプロジェクトのライブラリ落とさないようにしたんだと思いますが、正直迷惑かなーと
New Gradle Sync の挙動
=> 変に状態をメモリキャッシュしているみたいandroid studio 2.4 preview 3
— close_yutori (@kimukou2628) 2017年3月22日
Gradle Syncの挙動が謎い
一回build通った後、gradle syncすると
icepick:3.2.0 が見つからないネットつなげという。
でproject閉じて開き直すとそれいわなくなる
android studio 2.4 preview 3
— close_yutori (@kimukou2628) 2017年3月22日
Gradle Syncって、一回エラーになると
rebuildし直すまでボタン押しても発行しなくなるみたいな作りに変わったみたいだな~
build済の情報を参照して頻発に着火しないような作りに変わったのかしら
android studio 2.4 preview 3
— close_yutori (@kimukou2628) 2017年3月22日
invalidate cache and restartした後に
gradlew --stop
android studioを完全終了して立上げ直し
でlayout previewやっと復活
(でも日本語は豆腐のまま
Preview2の時にどうもチェックを付けてしまったらしい。
その時は挙動の変化がなかったので、正に時限スイッチ><
android studio 2.4 preview 3
— close_yutori (@kimukou2628) 2017年3月22日
new Gradle Sync って二回実行しないと
indexが正常に出来ないみたいだけど
これproject依存なのかな?
android studio 2.4 preview 3
— close_yutori (@kimukou2628) 2017年3月22日
Gradle Syncの謎解い動きは
use new Gradle Syncのチェックが付いていたからっぽい。
外したら正常動作。
G様の(実験的)新機能怖いw
- New Gradle Sync は1個だけ利点はあって、
- clean/rebuild しても「HotSwapできるかもしれない接続状態が切れない」よう
Preview2 =>Preview3 の挙動変化
android studio 2.4 preview 3
— close_yutori (@kimukou2628) 2017年3月22日
今回はgrobal pluginも更新かかったので
databindingのguavaのdependencesが必要な件=>治った
instant run のduplicate resousce =>治った
と思ったけど、全然完治してない><。
でもまあ clean/rebuild が必須だった状況からは改善したかな・・
android studio 2.4 preview 3
— close_yutori (@kimukou2628) 2017年3月22日
duplicate resourceは偶に発生。ただinstant run再実行で消えるけど。
evalやlocal変数参照も復活したけど、偶にstep debugが効かなくなる(ASの再起動で復活しますが
しばらく動かしていた感じがこんな感じ。でずっと動かしていると重くなると。
- コード補完でIDEがガチに固まる
- キーを1個動かす度にカク、カクって感じになる
- InstantRunがまともに動かない
ただでさえ AS2.3から 下記の状態であるのに・・
しろやまさんがAS2.3でビルドにめっちゃ時間かかるって言ってたの「はは、大げさだなあ」と思ってたのですが、しろやまコマンドで1分30秒だったビルドが、AS2.3からのビルドだと5分かかったのでこれはやばい。https://t.co/WQ5dxfUw5v
— なかざん@🍺 (@Nkzn) 2017年3月22日
正確にはこれログにでている時間だけの話しか話題にしていないけど、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移行時にバグったらしい機能の修正の話
AS2.3からトラックパッドでピンチイン、アウトが出来なくなって不便だったの2.4Previewで治ってるって言われたからDLしにいったらサイト変わってわかりやすくなったhttps://t.co/1ftygrdSYVhttps://t.co/EXfSX6DjZ7
— AAkira (@_a_akira) 2017年3月29日
新機能的な話(AS 2.4)
ココらへんの話は、IDEAの機能のよう。*4
Android Studio 2.4 からですね。現在の Preview チャンネルで使えるはず https://t.co/n7Yk9MZmMv
— Benoît Quenaudon (@oldergod) 2017年3月24日
これAndroid Studio 2.3だどまだだったみたい、、 https://t.co/EsUsdlQTKp
— takahirom (@new_runnable) 2017年3月24日
コードがカラフルになるらしいのを明日試そう https://t.co/PcY4q0PTCQ
— takahirom (@new_runnable) 2017年3月23日
Easily spot symbols in your code using "semantic highlighting", per-variable colours #DriveToDevelop pic.twitter.com/Eg3Gt91KfQ
— IntelliJ IDEA (@intellijidea) 2017年3月23日
CodeTemplate
その機能使っていないけど、メモ。でもG様も使ってないからテストしてないんじゃないかと
Android Studio 2.3に上げて以降、Code Templatesが利かなくなった
— 義鷹 (@yoshitaka965) 2017年3月22日
Android Studio2.3に上げて以降、Code Templatesが利かない件、Editor > File and Code Templatesの Filesタブで、Class以下数ファイルが書き換えられてたのが原因だった……
— 義鷹 (@yoshitaka965) 2017年3月27日
File and Code Templatesの Filesタブの Class, Interface, Enum, AnnotationTyppe, Singletonは、Android Studioの起動毎にリセットされる
— 義鷹 (@yoshitaka965) 2017年3月31日
別名でテンプレートを作って、Create New Classの Kind項目を Classから作成したテンプレートを選択するぐらいしか対応方法が分からない
— 義鷹 (@yoshitaka965) 2017年3月31日
共通系
Android Studio、run設定では test/ のほうを実行するはずなのにIDE的には androidTest/ をみるようになってしまっているな。
— FUJI Goro (@__gfx__) 2017年3月22日
こういうよくわかんない固定パス仕様変更たまにあるよな・・
・Android Studio 2.3で手元ビルド:5分
— なかざん@🍺 (@Nkzn) 2017年3月23日
・しろやまコマンドで手元ビルド:1分半〜2分
・GCE上で何の変哲もない./gradlew assembleDebug:1分
もうやだ
AS 2.5 previewの表Specにも満たされていないようだから、
デフォルト状態だと自分と同じく動かせる環境じゃないのかなー*6
めちゃくちゃ不安定な気がする Android Studio 2.4 preview3 - exception think https://t.co/xJPH60Pz7E AS2.3preview3が一番安定してた。それ以降はダメ。キャッシュ消したりクリーンインストールしようかな
— wada811 (@wada811) 2017年3月23日
これ同意。確か言及されていたバージョンあたりが丁度
InstantRunのHotSwapがちゃんと動いたよ*7。という初めてのバージョンだった気がする*8
CMakeとかもおかしいらしい
少し前のアップデートからだったと思うけど、Android StudioのGradle Consoleでパスが縦にだらーっと表示されることがあるのは何なんだろう? 特に実害ないから何もせずビルドしているけど。 pic.twitter.com/UmQybbfxUQ
— じん (@jin1016) 2017年4月4日
全部そうなるわけじゃなくて、ちゃんと表示されるのもあるからちょっと気持ち悪い。
— じん (@jin1016) 2017年4月4日
data-binding/apt
私は昨晩逆のことありましたねー。Android上では見えてることになってるのにGradleビルドすると見えないっていう。Android Studioごと入れ直したらなんか治りました(何の役にも立たない情報)
— なかざん@🍺 (@Nkzn) 2017年3月22日
DataBindingでBindingのクラスが生成されない時に確認すべきこと by @konifar on @Qiita https://t.co/yQDgoyrHFl 本当にAndroid Studioごと入れ直したら直って最高に腑に落ちないけど、こにふぁーさんありがとう🙏
— なかざん@🍺 (@Nkzn) 2017年3月22日
ついでにASとGradle Pluginを2.2.3から2.3に上げちゃったので、原因の切り分けがわけわかめになってるんですけどね😋
— なかざん@🍺 (@Nkzn) 2017年3月22日
確かにdata-binding/apt が凄い不安定な気がする
AS 2.3 / 2.4 どちらも・・・
AndroidStudioでなんかおかしくなったら、次のどれかでだいたい直る気がする
— すたぜろ (@STAR_ZERO) 2017年3月22日
- File -> Invalidate Cache
- .gradleのディレクトリを消す
- $ ./gradlew clean --refresh-dependencies
確かに
gradlew clean --refresh-dependencies
以外はやっているかな・・。
でもInstantRun使っているときは上記だと強キャッシュが消えなくて
gradlew cleanBuildCache
は基本なのかも・・
data-binding のエラー対策メモみたいな話
自分も知らなかったのでメモっておく
どっかでbutterknifeのクラスをimportしたままなせいでビルドエラー、からのdatabindingさん滅亡とか有りそうですね。
— だるま (@red_fat_daruma) 2017年3月23日
以下の設定をいれれば根本原因まで見れると思いますよ
— だるま (@red_fat_daruma) 2017年3月23日
project.afterEvaluate {
tasks.withType(JavaCompile) {
options.compilerArgs << "-Xmaxerrs" << "500"
}
}
@_rmakiyama あ、build.gradleのroot要素(androidクロージャと同じ階層)に記述してください。apt入れてる場合、エラー出力の数をいじらないと厳しいですね。
もしかしてAndroid Studio 2.3.0ですか? @__gfx__ さんがそんなことを呟いていたような。。
— hotchemi (@hotchemi) 2017年3月23日
@hotchemi @red_fat_daruma @__gfx__ AS2.3です!どうやらOnActivityResultのライブラリで引っかかってるようでした。他のライブラリ入れずにこれを使ってみようとしたらどうようのエラー… URL
`compile "https://t.co/T8ANl844kp.service:auto-service:1.0-rc2"`ぶちこんだら息を吹き返しました(バージョン適当)。あとでちゃんと調べよ。お腹減ったでござる。。
— アルまきやま (@_rmakiyama) 2017年3月23日
NoClassDefFoundErrorでcom/google/auto/common/SuperficialValidationがないって言われてるからauto-commonをdependenciesに追加で解決するけど、けどっ…!!
— アルまきやま (@_rmakiyama) 2017年3月23日
OnActivityResultでSuperficialValidation使ってるみたいだなぁ。
— アルまきやま (@_rmakiyama) 2017年3月23日
この質問みたくOnActivityResultではauto-serviceがcompileOnlyになっててビルドできないくさいな。ButterKnife入れてた時はそこcompileになってたからうまくいってたのか🤔https://t.co/SrcZquDWvC
— アルまきやま (@_rmakiyama) 2017年3月23日
Updaterの話
Android Studio 2.2.3 -> 2.3にpatch経由でアップデートすると、adbが正常に機能しないので再インストールして2.3を直接起動すると良いという知見を得たので死んだ
— 川峠@Andriders (@eaglesakura) 2017年3月20日
android studio
— close_yutori (@kimukou2628) 2017年3月22日
なんかupdate patch がこの頃、雑になってる気がする。
確かに他の方が指摘するようにdmgフルで落としてきて、フル上書きすると変な挙動が収まる時がある。
うーん。リリース優先であんまテストしてないのかな?
AS 2.3-XX 系からパッチが凄い不安定な気がする。
正式版になったときも結局DMGでフル上書きしましたし・・
AS 2.4-Preview2 => Preview3もなんか挙動怪しいんだよな・・*9
びっくり仰天裏仕様?
android gradle plugin 2.3
— close_yutori (@kimukou2628) 2017年3月27日
instant run有効時に
android.enableBuildCache=false
にすると、apt周りが軒並み死ぬのか、、
gradlew assembleDebug
は問題なくビルドできるのにな、、
android studio 2.3
— close_yutori (@kimukou2628) 2017年3月27日
instant run無ビルドが超遅い
instant run使う
ちょっとした変更が反映認識されない
clean build必須
android.enableBuildCache=false指定
apt軒並みコケル
指定戻す
>イマココ
ようは instant run動かすには、下記が必須という話*10
android.enableBuildCache=true
android studio 2.3
— close_yutori (@kimukou2628) 2017年4月3日
Instant Runで入っていた端末に
チェックoffってbuildしたapk実機転送するとクラッシュするのか、、
2.2.3時は自動で消してくれたんだけどな
project閉じる時のdeamon終了無くなったの含め冗長処理の削減かな?
android studio 2.3
— close_yutori (@kimukou2628) 2017年4月3日
instant runをoffると
プロジェクトによって
DatabindingUtil.setContentView
がオートcastしなかったりなんか挙動怪しい(xxxBindingまで正常生成
プロジェクト差分いまいちわからん><
*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:と言うかその前提でしか作ってないからエラーになるんだろうなという感じ。完全糞仕様だよな。。