Android Studio 2.2-preview5 一歩進んで二歩下がる話
Android Studio 2.2-preview5 にあげたのはいいのですが・・・
Android Studio 2.2-preview5 に更新されて
android gradle plugin 自体も
- 2.2.0-preview4
- 2.2.0-preview5
と公式Repoでも公開されて9-patchもなおって、やっと使える・・・とおもったら
Android Studio 2.2-preview5
— close_yutori (@kimukou2628) July 13, 2016
今日嵌まってた。2.2-preview4 の段階で9-patchの壊れるバグ対応で来てるのに
android gradle plugin 2.2-preview5 だと Invalidate Exception (no message)
— close_yutori (@kimukou2628) July 13, 2016
というよく分かんないエラーが出て駄目、でbuild.gradleで preview4指定すると
「不正なpluginバージョン指定です」
といわれて IDEで強引に書き換え要求される。キャンセルするとプロジェクト情報が壊れてAPK転送すらできなくなる
— close_yutori (@kimukou2628) July 13, 2016
(コマンドラインではOK)
結局 2.1.+の指定で回避して使うというよくわかんない対処してた
という状態orz
7/20追記 Android Studio 2.2-preview6
- IrigalStateException は ADT形式の時に出る感じ。
- IDEビルド時のみにInstantRunを引数与えて有効にする辺のチェック面倒くさくなったのかな?
android gradle plugin 2.2.0-preview6
— close_yutori (@kimukou2628) July 20, 2016
やっぱりADT形式のビルドが
IregalStateException(no message)直ってないな~
サポート辞める気かしら、、
instantRun、MultiDex非対応な面では正しいんだけど、
— close_yutori (@kimukou2628) July 20, 2016
instantRunマトモに動かないgithubプロジェクト多いしな、、
でも必須前提やめてほしいんだか、、、
- まあ、jdkに関しても下記な感じなので色々と厳しくなっていく気がする
- ちなみにjpsが全く動かなくなってるけどOracleの人気づいているんだろうか?*1
jdk8u102から
— close_yutori (@kimukou2628) July 20, 2016
7zでは解凍できない形式なのか、、、
インストール権限が無い端末では今後新しいjdkを開発者が導入しずらくなるんだね~(^^;)
- ちなみにjpsが全く動かなくなってるけどOracleの人気づいているんだろうか?*1
Canary Channel のバージョンとかだと
$STUDIO_HOME/Contents/gradle/m2repository $STUDIO_HOME/gradle/m2repository
あたりにしか最新のpluginが公開されていなかったりとか*2
IDEからしか動かせないように
-Pandroid.inject.invoked.from.ide=true
def isIdeBuild() { return project.properties['android.injected.invoked.from.ide'] == 'true' }
とか色々と仕掛けられていたりしそうですが、今回の修正とかどうなんでしょうね
DSL的には
- 2.2.0-alpha4 の段階で下記の修正が入っているっぽいですが・・・
android { dexOptions { additionalParameters("jack.incremental" : true) } }
でもこのオプション
でしか説明出てこないので、NビルドのJackAndJilll辺りが主流になるまで使わなそう
android { defaultConfig { javaCompileOptions { annotationProcessorOptions { className 'com.example.MyProcessor' // Arguments are optional. arguments = [ foo : 'bar' ] } } } }
どういう状況かというと
- ADT形式で認識させるbuild.gradle を使用
- 2.2.0-preview5 だとこれが下記のエラーを吐いて中断する
IllegalStateException (no message)
あたり
- Instant Runを有効にした場合
android.applicationVariants.all{ variant -> variant.outputs.each { output -> output.processResources.manifestFile = file('src/main/AndroidManifest.xml') output.processManifest.enabled=false } }
な設定をしている場合は、Irigal State Exceptionを投げよるのは知っているんですけどね。 G社様的ルールが追加になっているのか・・・?
IDEを更新することで変わったと思われる挙動
- ASのよく分かんないチェッカーでpluginの指定を勝手に最新に変更しようとする
- apk実行時にも Gradle Syncをバックグラウンドで実行しようとする
- プロジェクト開き終わった後に、書き換えればビルドできるじゃん的な回避も無理。。。
うーん。期待値となんか違う。。。
ほかにも
とかあるしな。。*5
他にも気がついた点
Google Map のアプリみたいに
- ConstraintLayoutの中に SupportMapFragmentの定義をするとエラー
Layout Editor
4.0.3以下は Project Wizardでは作成できなくなってる。
- しかもAPI 8とか指定すると、ユーザーいないですがよろしいんですか?? 辺りの警告が頻繁にでてウザい
- 正直な処、Google Analyticsが対応していなくて情報取れていないだけだと思うんだが。。。*8
*1:jpsコマンド自体使ってる人少ないのかな? Linux系だったらpsでも事足りますし。。
*2:jRebelのpluginとかこの位置のLocalRepoちゃんと通して、修正したbuild.gradleをローカルに生成して、それで内部鯖でbuildしていたりする
*4:minSDK/manifest merger=false 等の設定を無視
*5:コマンドラインからadb installは問題なく出来るのですが・・。API Levelで部分的に動かすとかの動作確認テストがしづらくなってる
*6:ビルドはできてるけど・・
*7:ftlテンプレート自体が更新されていないっぽいが・・。エラーにするならテンプレート直せといいたいけど・・
*8:GooglePlay開発者サービスが更新されていないので、連携系もまともに動かないだけ