使いずらいよ Android Studio 2.2 RC
概論
なんかどんどん酷くなってきているので、罠回避の為にメモ。
完全新規のみだったら問題ないんだけど・・。正直過去互換捨てすぎ。
androidって周辺全部挙げないと現在エラーになる作りになってる。
gradle pluginだけ上げなければいいやと安易に思っていると痛い目を見てます
android gradle plugin 2.2.0-RC の挙動
ちょっとだけ強化されたところ
- build.gradle等 で ANDROID_HOME内に存在しない targetを指定した時
- 自動的にDownloadが始まります
- 以前はbuild taskがエラー終了していたので、jenkins とかでビルドの対策だと思う。
9/9 RC2の android gradle plugin
library-project形式のプロジェクトがビルドできなくなりました。(RC1までならOK)
新規Wizとかでつくられるaar参照形式はOK。
これを
- デグレと見るか
- G様のlibrary-project形式サポート、今後はしたくないよ の意思表示と見るか
今後の更新待ちですかね・・・(汗
support-v4系のライブラリ
これ 24.+ とか指定してるんですけど
target-10/minsdk 10 指定しろ
このチェックがビルド前にがっつし入ってビルドができない>< *1
- AndroidManifest.xml
- build.gradle
辺りが強化されたような挙動
特に ResoucesCompatとか 大量にdeplicateとかエラー表示されたくなかったら置き換えろ
とかいうのがお作法としたいならなら安易にあげちゃ駄目じゃない?
因みに androidの公式refrence参照すると api level 4の記載のまま。。
これ多分
dependencies {
compile "com.android.support:support-compat:24.2.0"
}
のaarが新規追加されていて(分離?)、今ASの新規プロジェクトを作ろうとすると
api-10からの指定だからそのまま作ってこの状態でリリースされている臭いんだよな。雑過ぎ。
これ因みに、library-projectが
- フォルダ参照ではなく
- aar圧縮済み参照
だと 改良された? ManifestMager様 がSkipするらしいんだけど・・
library-project形式で入れている奴がかなりガタガタになっている気がしますね
ResoucesCompat に関して追記
dependencies {
compile "com.android.support:support-v4:24.1.1"
}
なら target-v4 なので問題なし。
もしくは
support-compatのaarを拡張子zipにして、内部のjarをそのまま持ってくるか
辺りにすればOK。
そもそも引っかかってるのaarに同梱されているAndroidManifest.xml のせいですし・・・
まあG様が v9以上にしたいのはわかるけど、gradleの自動補完で勝手に上げられてもな・・・
build.gradleのextバージョン指定がIDEに認識されない
- rootのbuild.gradle
project.ext{
supportVersion="24.+"
}
- ASで認識しない例
dependencies { compile "com.android.support:support-compat:${supportVersion}" }
- =>ASに強制書き換えされて認識される *2
dependencies {
compile "com.android.suppor:support-compat:24.2.0"
}
正直これデグレったな・・とか思ってます
AS移行で動かせないプロジェクトは未だ多し
- eclipse => ASに移行推奨
はいいんだけど、2.1/2.2 でビルドできない奴が多い
- 精々到達して 2.0
- 駄目なら 1.3系のまま
だいたいは傾向は見えていて
- フォルダ参照型のlibraryProjectを使う場合
- aar参照型は比較的安定してる
- ただこの頃、ローカル参照型aarの挙動がおかしくなる時が・・*3
- srcSetで ソースの位置等を指定している場合
- 細かいリビジョンが上がる度によく動かなくなるので、動作テストしてなくて、基本エラーFB待ちなのかも。
まずどのバージョンでビルドできるか調べるところからなんだよな・・・(汗
でなんとか動くようになった、この古いやつをASで編集したり動かしていると
[2.2.Xにしてくれないと困ります]
- で強制的に書き換えようとする
- =>ウッカリボタン押す*4
- =>ビルドができない
- gitのlatest差分やlocal historyみて参照を戻す
ビルドできるバージョン確認とかに時によくハマる話
gradle clean のキャッシュ消去は必須です
- 酷いものだと,build task時にライブラリを落としてくるものが有り
- AS上で --offlieを指定していて gradles task で必要な時ライブラリ が効かないケースが有り。。
android gradle pluginのバージョンを変更した時
- gradlew --stop は必須です
- gradle wraperのバージョンを変更した時
- gradlew --stop は必須です
NullPointerException/Irigal Exception とかよく分かんないエラーが出始めたら、ココらへん*5*6
- ここらへん揃えないと、resourceのコンフリクトエラーでハマる
compileSdkVersion 23 buildToolsVersion "23.0.3" dependencies { compile 'com.android.support:appcompat-v7:23.+' compile 'com.google.android.gms:play-services:8.4.+' //compile sdk 23 等に対応するsdk }
場合によっては、android gradle plugin も揃える必要があり*7
正直、対応表を作って欲しいよな。。とか思う。
こっちはライブラリとか指定してるだけなのにエラー出されても困る・・