やっぱり人柱版でした Android Studio 2.3 Canary
まだversionを上げていない人向けの結論
data-bindingがコンパイルできなくなりました。
エラーすら全くでない。わけわからじ。
ですね。
- NG
classpath 'com.android.tools.build:gradle 2.3.0-alpha1'
- OK(2.2.+ベースに戻す)
//classpath 'com.android.tools.build:gradle 2.3.0-alpha1' classpath 'com.android.tools.build:gradle 2.2.+'
で動くようにはなりますが、頻繁に「gradle pluginのバージョン上げろ」と
ダイアログが出てくるので正直ウザイ・・*1
用意されていた対応策が動かない
一応、特定のdata-bindingのバージョンで動かなくなる事を見越して
com.android.databinding.dataBinder
からDLされるバージョン指定ができるはずなのですが、指定しても駄目。
結局data-bindingは未だに、gradle pluginの本体側と密結合なんですよね。。
android { dataBinding { enabled = true version = "1.0-rc4" //★ } }
この状態で IDE2.3/gradle plugin 2.2.+戻すと
InstantRunができなくなります。
まあ InstantRun って
- JRebel の HotSwap/ColdSwapの技術とは違い
- 差分ビルドを管理する技術
だと自分は思っていたりしますが、
やっぱりビルドが遅いね・・・と実感してしまったりしています
まあここらへんは、layout-previewが死んでるからなんだよな。。相変わらず実機で見ないと分からない的な話
- あとInstantRun使ってると、
adb tcpip 5555 adb connect XX.XX.XX.XX:5555
G様の安易な IllegalStateException な対応で思うこと
最近この IllegalStateException なコッソリ修正がやたら増えてるんですけど〜><
正直、今まで動いていた処理が動かなくなるのでやめてほしいんですよね。*7
たぶんこう使ってほしくない*8的な意味合いでandroid.jarとかsupport-libraryにぶっこまれてきている感じがします
- target-25でビルドしたら
- getSystemService(Context.LOCATION_SERVICE) をUIスレッドしか許可しないとか
- でも最新の android gradle plugin を使うと target-25を強いられるとか
compile 'com.android.support:customtabs:24.1.+'.
とかの minsdk 15 とかも
足切りを変更されていたりとか・・
今回の修正に関して(release noteで記載されていないこと)
プロジェクト構成
予想通りimlが互換性がないようです。移行しただけだと、プロジェクトを開いたり補完用indexの作成に5分以上かかります*9
- .idea/.iml 消して
- $HOME/build_cache を手動で消して
- Invalidate Caches/Restart
Open Project し直しが必要。多分互換性がなくて、更新nodeとか探しているんでしょう*10
layout preview が少しだけマシになった
- 今まで
- layoutの上に、半透明のエラー画面がでて、必ず閉じないと駄目だった
- 2.3 Canary
- layoutの下に、エラー用のTextエリアがおかれてそちらの方に出力。☓ボタン押さなくてOK
layoutのプレビューで相変わらずエラーが出るのは変わらないけど
とりあえず操作ブロックは改善しよう というのは好感が持てるかも。
今回の修正に関して(release noteで記載されていること)
Data Binding のビルドオプション
- AS 2.2 あたりから
未だに変更されたファイルだけじゃなくて、layout周り全部ぶん回るみたいなので
明確な差分ビルドができない限り、CPU100%*13生活は変わらなそうです。
根本的な解決は、やはりCPUリミットを書けるソフトを導入することでしょうね。。
InstantRunの上部のボタン
- Option1: 今までの実行ボタンシリーズ
- Option2: HotSwapボタン有りのボタンシリーズ
- Option3: apk再インストールボタン有りのボタンシリーズ
が切り替えられるのが変更?
というかそもそもHotSwapって動いてますっけ? *14
Lintの制御
Lint in Studio 2.3 - Android Studio Project Site
基本的に、デバックを阻害するワーニング潰しとかでしか使ってないので有り難みが正直分からない。
そもそもlintの一覧表*15すら未だに無いんだよね。。IDEの設定見ろって感じなんでしょうけど。。
ワーニング等が出ても Cmd+Enter で修正方法の候補が出ないことが未だに有り、不親切だなと思ってたりしてます
webP
minsdk 18から使えるとのこと。まだ様子見かな。supportLibraryがでてから考えるかも。
Vector Asset Wizard
VectorDrawable で使うやつ。photoshopのデータがそのまま使えるので、デザイナーさん受けはいいかも。
一応SupportLibraryが出てるのでやっと使う人出てくるかな?という感じ
9patch
未だにデザイナーさんと話が通じない 9patch
まあ
- iOSのデザインの仕事が多い
- A側にはI側のデザインがそのまま流れてくる
経緯を考えれば、プログラマー側で諦めて頑張ったほうがいいのかもしれない。。
*1:このプロジェクトでは聞かない を選択しても
*2:と検出されたなら
*3:長いときには180秒
*4:USBマウスとかも巻き添えで死ぬ
*5:genymotionで開発が好まれるのはココらへんもあるかも。
*6:6系以上はGPSが動かないし、4系とかはAS技術ターゲット外
*7:相変わらずドキュメントレスですし
*8:なかには低いOSの強制排除みたいな
*9:Twitterでもプロジェクトが開けないみたいなつぶやきが多数
*10:多分見つからないときがすごく遅くなるような挙動
*11:しかもたまに変更差分がないと判定されてビルド走らない・・
*12:これ有効にするとindexが作られなくて補完が死ぬ
*14:基本アプリ再起動しか見たことないんですが・・・
*15:エラーにされるLintとか、gradleで書いたときの対応表とか