Android Studio 3.2 Canary3 挙動メモ
- はじめに
- 動作環境
- 試していて気になっていること
- ASの最新に関して思うこと(3.1 Canary8以降)
- android gradle pluginの最新に関して思うこと
- TLメモ(試したやつ)
- TLメモ(その他)
- TLメモ(kotlin関係)
はじめに
kotlin対応に注力しているせいか
Android KTXめっちゃええやん。拡張関数でコードの書き方が劇的に楽になってる。 https://t.co/acgHMH4j8Q
— Yoshiaki NAKANISHI (@chun_ryo) 2018年2月5日
KTX は View に toBitmap() がはえてて捗りそうだった。
— Yuki Anzai (@yanzm) 2018年2月6日
IDE的には不安定な気がしますが、取り敢えず備忘メモ
3.2-XX系がリリースされてUpdateチャンネルが混乱していますが
- 3.1系 BetaCannel
- 3.2系 CanaryCannel
にしておけば取り敢えずアプデ対象的には問題無さそうです
動作環境
- Windows 10
- 8G
- AS 3.0.1 /AS 3.1-Beta3 /AS 3.2-Canary3
- gradle plugin 3.0.1 / 3.1-beta3 / 3.2-alpha03
- gradle runtime 3.5.1
試していて気になっていること
今すごく気になってるのが、
一部のクラス(RecyclerViewとか)のindexが正常に作成されないことがあって*1
- NG
- AS3.1/3.2 & plugin 3.1-XX/3.2-XX
- OK
- AS3.0.1 & plugin 3.1-XX/3.2-XX
すごく謎すぎるのです。まあCanary やBeta だからしかたないのかな??
IDEとpluginがうまくマッチングされていない状況に感じる
試した対策
状況的には改善しなかった。
コマンドラインのビルドは通るんだけどGradleSyncのindex作成が上手くいかない*2
Singleプロジェクトなら問題ないんだけど、library Projectを使うと何故か駄目。
- .idea削除してOpenProjectし直し
- gradlew clean cleanBuildCache してから再実行
挙動的には下記と同じ感じかも
なぜか弊社のエンジニアみんなキャッシュ消えない呪いかかってるっぽくて面白い https://t.co/6E3xUbRuZ5 https://t.co/tkuovZpS4N
— takahirom (@new_runnable) 2018年2月7日
消しても消してもkaptで別ブランチのDagger Factoryとかが生成される問題に直面した
— せーい (@_yshrsmz) 2018年2月6日
結局足りないクラスのあるブランチマージして解決しちゃいました…
— せーい (@_yshrsmz) 2018年2月6日
~/.gradleのキャッシュ消したらいいんかなー、とか思いつつ
あ、ライブラリとかも含めてじゃなくて.gradle/caches/build-cache-*的なgradleの差分ビルドまわりのキャッシュのつもりでした。あとはandroid plugin側のキャッシュけすcleanBuildCacheタスクとか。
— せーい (@_yshrsmz) 2018年2月6日
Oh :(
— せーい (@_yshrsmz) 2018年2月6日
そいつは突然やってきて、全くbuildできなくなる。clean→rebuildもだめ、.gradleのキャッシュファイル消してもだめ。同じ現象に陥ってるAndroiderさんいないのかな…
— satsukies(さとし/さつき) (@satsukies) 2018年2月7日
そうなんですよね、単に自分のコードが悪さしてるときもあれば、全然関係ないところ(gradle cacheとか)に原因があったり… 泣けます😇
— satsukies(さとし/さつき) (@satsukies) 2018年2月9日
ASの最新に関して思うこと(3.1 Canary8以降)
Android Studio 3.1 Canary 9、テストコードにブレークポイント貼っても貫通して最後まで突っ走っちゃうんだけど。
— バトルプログラマー柴田智也 (@tomoya_shibata) 2018年1月31日
これ自分もよく経験してて、でIDEだけ AS3.0.1/AS2.3 で実行するとちゃんと止まるという。
すごく謎すぎるのですが・・。
Android Studio 3.1 Canary 9 で build.gradle 弄ってるとキー入力の反映がものすごく重いんだけれど、プラグインかなにかのせいだろうか
— バトルプログラマー柴田智也 (@tomoya_shibata) 2018年2月20日
build.gradleの補完が復活したからですね*3
暫定でPowerMode をoffにしていじってたりしてます。ちょっと弄る度にカクカクはシンドイ
build.gradle で compile はもう書いてないのに「compile は implementation に置き換えられたからなー2018年末で消えるからなー覚悟しとけー」って警告でるのはなんだろう、書いてなくても出る警告なんだろうか
— バトルプログラマー柴田智也 (@tomoya_shibata) 2018年2月20日
これ自分もすごく気になってる・・
サードパーティlibrary(aar?)が使ってるんだろうか・・・
android gradle pluginの最新に関して思うこと
AS 3.1/ AS 3.2版 において
下記の状態はかなり不安定になっている気がする
Javaのプロジェクト
- kotlin使ってないやつだと逆に不安定かも
- library projectを使っていると特に
- 古いProjectをimportしてみようとすると上手くできなくて手動で治すハメに
- 移行Wizとか動かなくなっているっぽい*4
NDKを使ったプロジェクト
1_7のプロジェクト(3.0.1 は問題ない)
1_8 指定にすると 3.1以降はbuildやsyncが安定する気がする
compileOptions { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 }
G様的には 1_8ベースでしか試してない気がするんだよなー
target sdk 23のプロジェクト
仕事プロジェクト上強制されているので、頑張って動かそうとしてるけど
- app/build.gradle
android { compileSdkVersion 23 //★ buildToolsVersion "26.0.2" //★ defaultConfig { minSdkVersion 23 targetSdkVersion 23 } } //ライブラリ依存関係 dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.2.0' compile 'com.android.support:design:23.2.0' }
の環境を強いられている状態だと、そのままではbuildが通らない。
support-v4 辺りがDexArchiveExceptionあたりでぶつかる
android { compileSdkVersion 27 //★ buildToolsVersion "27.0.2" //★ }
辺りに変更すればOKなんだけど、その場合は minsdk周りが 24以上になるんだよな〜
まあ 1_8の機能って minsdk 24 からRetorolamda と同じ範囲をサポート*7
なだから仕方ないんでしょうけど
plugin 3.1/3.2 でのminsdk 23を指定するに当たっての記述修正
gradlew assembleDebug --stacktrace
でモジュール特定して
gradlew :app:dependencies
で探して頑張れ
ってQitta辺りでも記述が出てくるけど、対処的には
に書いてる サポートライブラリのバージョンを揃える 辺りの対処が最低限必要
- root/build.gradle
allprojects{ //◎ configurations.all { resolutionStrategy.eachDependency { DependencyResolveDetails details -> if (details.requested.group == 'com.android.support') { if(details.request.name.indexOf('multidex') > 0){ return //javaでいうcontinueと同じ } details.useVersion '23.2.0' } } } }
◎ ・・テクブさんの本だとsubprojectsで問題ない みたいな記載があった
ただ何回かビルドすると MultiDexArchiveExcetionがまた出てくるので不安定ですが。。
下記の記述のほうがいいのかなーとか思うこともよく*8
configurations.all {
resolutionStrategy.force 'com.android.support:support-v4:23.2.0'
}
並列スレッドビルドだからでしょうか。。依存関係はいつも悩む
Androidのbuild.gradleでdependencies { implementation 'foo:bar:1.0' }みたいに書いた依存jar内の一部のクラスだけオレオレクラスで差し替えたいのだけど、どう書けばいいのだろう。
— 瀬良文弥 (@shela_) 2018年2月16日
やっぱりそうですよね。ぐぐってたら普通のbuild.gradleでの対策書いてた人もいたけど、zipとして扱って不要なファイルエントリだけのぞいて生成しているだけでした
— 瀬良文弥 (@shela_) 2018年2月21日
TLメモ(試したやつ)
あの Jake Wharton さんが伝授する Android Studio を高速化する方法 https://t.co/44iWB5txDR
— ちゃんずまお (@maochanz) 2018年1月27日
Android Studio エミュレータのネットワーク設定 https://t.co/Id9OmM1Kmb
— ちゃんずまお (@maochanz) 2018年2月19日
最新のエミュ(with GooglePlay)は、時間がある時に試そうとしているんですが
半閉鎖proxy環境だとよく落ちることが判明 *9
-http-proxy http://192.168.xxx.xxx:8080
とか付与してもな〜。そもそもG様DNSはproxy様が通してくれなかったorz
TLメモ(その他)
【Android Studio】メニューバーをAndroidStudioに移動する https://t.co/iL1wzWh2TV #android #intellij
— ちゃんずまお (@maochanz) 2018年1月27日
Android Studio氏、正規表現使ったコード内検索かけたら固まってしまった
— ちばっちんぐ (@chibatching) 2018年2月20日
Android Studioのメニューで、Help→IntelliJ IDEA Helpを選択すると、リンク切れてて404になっちゃうのね。なんたること。
— けいちゃ (@keicha_hrs) 2018年2月13日
Android Studio でコンフリクトを解決してたんだけど、このアイコン 押したら一発で解決してくれた! いつからあったんだろう? pic.twitter.com/EHxJCbUEAc
— びな🙋 (@bina1204) 2018年2月7日
TLメモ(kotlin関係)
"latest Android Studio alpha at the time of writing this message (3.2 alpha 3). Downgrading fixed the issue."
— バトルプログラマー柴田智也 (@tomoya_shibata) 2018年2月20日
つらい〜〜〜 #Canaryを使うってこういうこと #Canaryはかなりつらい
App crashes with VerifyError on launch · Issue #57 · Ekito/koin https://t.co/m0OzrThsGt
— shiraji (@shiraj_i) 2018年2月6日
Android Studioにはないっぽいですね。すいません。
— shiraji (@shiraj_i) 2018年2月6日
ここで入っているはずなんですが。Runnerの設定が丸々見えないですね。v173からは確実にいるので、Android Studioのメジャーバージョンアップデートまで待たないとですね。先が長そう。。。https://t.co/Ybv7itKd9h
— shiraji (@shiraj_i) 2018年2月6日