やっとJava8 試せそう? Android Studio 2.4 preview5
動作環境
結論から言うと
限定的に data-binding有りでも 1.8でビルドが出来るようになりました
とりあえず、既存プロジェクトが VERSION_1_8 でビルドできる所の確認まで
調べた状況
android studio 2.4 preview5
— close_yutori (@kimukou2628) 2017年4月10日
layout.xmlのプレビューの日本語豆腐問題直ったかも
一応治ったはず? なんだけど
preview表示しながらレイアウトをtxtモードで編集すると表示がバグります(爆
prewview On/OFFし直せば治りますが・・
とりあえず試した環境は下記android studio 2.4 preview5
— close_yutori (@kimukou2628) 2017年4月10日
android.enableBuildCache=false
指定と
(相変わらずキャッシュ参照エラー出るため)
multidex onでやっとjava8 build通ったかも
(use databinding
- app/build.gradle
android{ compileOptions { encoding = 'UTF-8' sourceCompatibility _JavaVersion as org.gradle.api.JavaVersion targetCompatibility _JavaVersion as org.gradle.api.JavaVersion } buildTypes { debug{ debuggable true //AS上からInstantRunが実行されたときのみ適応☆ def isIdeBuild = "false" def compilation = project.properties['android.optional.compilation'] as String if(compilation != null && compilation.indexOf("INSTANT_DEV")!= -1){ isIdeBuild = "true" } ant.echo "[isIdeBuild]:"+isIdeBuild if(compileOptions.sourceCompatibility == JavaVersion.VERSION_1_8){ defaultConfig.minSdkVersion 24 defaultConfig.multiDexEnabled true defaultConfig.multiDexKeepProguard file('multi-dex-keep.txt') } else //■ if("true".equalsIgnoreCase(isIdeBuild) && compileOptions.sourceCompatibility != JavaVersion.VERSION_1_8){ defaultConfig.minSdkVersion 21 // } else{ //=== Build Shurinkerを実行 === minifyEnabled true useProguard false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro', 'shrinker-rules.pro' } } } }
- gradle.propeties
android.enableBuildCache=false //★ #_JavaVersion=VERSION_1_7 _JavaVersion=VERSION_1_8
android studio 2.4 preview5
— close_yutori (@kimukou2628) 2017年4月10日
java7 buildだとmultidex不要なので
java8 buildするだけでどんだけ関数追加してるのかな~(^^;;
あとjava8 build時にbuild shulinker併用すると buildこける
■の部分をコメントにして、動かしてみたのですがよくわかんないエラーが出てしまいましたね(汗
まあ InstantRun と build shulinker は元々共存できないので仕方ないのかも・・・
あと MultiDexに関しては、以下で通しました
protected void attachBaseContext(Context base) { super.attachBaseContext(base); //if(android.os.Build.VERSION.SDK_INT >= 24){ // or if(android.os.Build.VERSION.RELEASE.compareTo("7.0") >= 0){ android.support.multidex.MultiDex.install(this); } }
MultiDex使うと OS4以上になってしまうんですけどね・・
流石に
- google play service
- support-library
- java8 lamda
あたり全入りだと proguardで要らない関数削るのも流石に限界あるか・・ という状態
android studio 2.4 preview5
— close_yutori (@kimukou2628) 2017年4月10日
やっぱダメだ。
二回に一回はbuildこける。
AS2.3でもそうだけどInstantRun実行時は
buildCache有効にしないと安定しない。
暗黙on仕様なのかな~(^^;;
ココに関しては、IDE的にはInstantRunチェックは付いていたのですが
[ant:echo] [compilation]:null //<= チェックついていてもInsantで動かない [ant:echo] [isIdeBuild]:false
なログが出ていたので、VERSION_1_8のときは今回動かさないようにしたみたい*1
でも★の指定しないと、Build Cache 見に行くんだよね。それで
data-bindingの Build Cache ありません => ビルドエラー
で止まると。まあ今回はOFFにしてもエラーになりませんでしたが・・*2
うーん、とするとまだ VERSION_1_8 ビルド自体が不安定なのかな?
あと、そういえば MockWebServer で下記のエラーが出たので
SHA1 digest error for org/bouncycastle/LICENSE.class
- app/build.gradle
packagingOptions { exclude 'org/bouncycastle/LICENSE.class' } sourceSets { main { java { exclude 'org/bouncycastle/LICENSE.class' } } }
で ビルドは通してみたものの、この対処でOKなのかイマイチ不安
普通にぐぐると
が出てきちゃうけど、AS2.4p4からの
MockWebServer の dependencies の bcprov-jdk15on-1.56.jar が不正jarとしてビルドできない
が詳細エラーが出た感じなだけだから除去難しいよなと。
local鯖のSSL対応はまだ自分動かせてないですし・・
android studio 2.4 preview5
— close_yutori (@kimukou2628) 2017年4月10日
new gradle syncチェックついちゃうと
file:/Applications/out/studio/java-lib-plugin
が見つからないエラーが出る。
(-ω-)。これで配布されるんすね
たぶんこれ
- AS 2.3 Beta の時に
- InstantRunのHotswapボタン(イナズマボタン)がデフォルト機能になったように
- AS 2.4 Beta で
- デフォルト機能になりそうなんだけど、作り途中のリリースしてしまうんですね(汗
android studio 2.4 preview5
— close_yutori (@kimukou2628) 2017年4月10日
なんかビルドする度のリーク度が激しいかも。最終的に倍ぐらいいってるし、
補完と引数名表示?のためにCPUカクンカクンあがるので、キーボード移動がカクンカクンする、、。
(-ω-)。これ環境依存ですますレベルなんかな?
2−3回ビルドするとこんな感じになります。*3
でも 「AS2.4p快適やー」 と今回もTLで絶賛呟かれている人も何人か居るので、環境依存なのか??
TLメモ
TLメモ(AS2.4)
Android Studio preview 5, 結構変わった印象
— Sato Shun--- (@stsn_jp) 2017年4月10日
なるほど! release notesのdiffが少ない割に見た目結構変わったなって印象を受けたので, Idea 2017.1になったんですね.
— Sato Shun--- (@stsn_jp) 2017年4月10日
これなんですけど
- Cmd+Shift+F の検索のフォルダ除外フィルターの設定場所
がわかんなくなってすごく不便になったです・・*5
android
— close_yutori (@kimukou2628) 2017年4月10日
今日OS6のGooglePlay開発者サービス更新かかったら
Google Play service for Instant Apps
というものかインストールされたんだけど
これなんだろう?
これはテストしてたら検証端末にUpdateかかってきた。
InstantAppってインストールレスでなかったでしたっけ?
SDKは未公開だけど、GoogleNowみたいに 結局コンポネントだけ入れる形なのな・・
TLメモ(AS2.3)
あれ?Android Studio のレイアウトのプレビューで NestedScrollView のスクロールって前からできたっけ?
— hkusu (@hkusu_) 2017年3月28日
これは AS2.3 からっぽい。 自分も中央ホイールでスクロールできるの初めて知った。
AS2.2で既に実装されてた。IDEA 2017.1 on AS2.2 で確認可能
android studio 2.3.1
— close_yutori (@kimukou2628) 2017年4月12日
NestedScrollView使えば、layout preview上でマウスホイールでスクロールできるとのことだったけど、includeレイアウト入れるとNG。
レイアウトに全部ベタ書きが必須。
これデモ用機能だからかな~(^^;;
で試してみたけど、やっぱ中途半端だったorz
- 深い階層のlayout.xmlは非推奨
- RelativeLayoutを使いましょう
- ConstraintLayoutを使いましょう
- Percent Layout は非推奨になりました
でなかったっけ??
RecyclerViewのLayoutManagerをXML側で指定してtools:listitemで行のレイアウトを指定したらAndroid Studioでリストのプレビューできるようになった
— hkusu (@hkusu_) 2017年4月10日
これはListViewだと前からな気がするんだけど、RecyclerViewだとAS2.3からなのかな?
みんな、おはよー♪
— mokelab (@mokelab) 2017年4月11日
Android Studio 2.3.1が出てるよー
レイアウトXMLで?attrがエラー扱いされちゃうのがなおってた! pic.twitter.com/2euhGrWn0B
TLメモ(gradle 3.5) 2017/04/11 追記
最新のGradle 3.5で、Gradle Build Cacheなるものが出た。(Android Build Cacheとは別物。)ローカルとリモートの成果物を保存しておいて変更がないと判断されれば保存済みの成果物を取得する、と。https://t.co/rcxLQlRZcV
— Shohei Kawano (@shaunkawano) 2017年4月11日
https://t.co/zxgLvC2rQy が出てた。
— close_yutori (@kimukou2628) 2017年4月10日
gradle 3.4系より快適なカンジがするのでASのwarperもオフライン指定形式で差し替えてみる
(でもみてるとどんどん容量増えていってる感じだな・・
みてるとバージョン上がるごとに10MB程度増えているようにみえる。
https:// のデフォルト状態だと、結構DLしまくっている状況の方多そうですね*6
Gradle 3.5 にしたら Android プロジェクトのビルドが2回目以降爆速になった
— バトルプログラマー柴田智也 (@tomoya_shibata) 2017年4月11日
そんなに爆速か? という感じなんですけど・・。富豪環境フレンズな方なんでしょうか・・*7
android gradle
— close_yutori (@kimukou2628) 2017年4月11日
gradle 3.5 のbuild cache
明らかにG様Build Cacheと干渉する。
instant run offなら
org.gradle.caching=true の指定でjavaのコンパイルは1~2割程度速くなる(90=>70秒
- このときはAS2.4p5 で 1_7ビルドで試してました。
- ただ一点書いておくことは、gradle公式のほう、全然メモリリークしない!
- なんでG様 Instantビルドはリークしまくるのかがすごい知りたい!
android studio 2.3.1
— close_yutori (@kimukou2628) 2017年4月11日
このバージョンだと
gradle 3.5の
org.gradle.caching=trueは干渉しないみたい。レスポンス良。
AS2.4p5 は 1_7ビルドも作り直してるのかな?https://t.co/sXeOSpdSRx
- AS2.3.1 になってちょっと安定したかなーと(AS2.3.0より)
org.gradle.caching=true
で作ったキャッシュはコマンドでてこないんだけど、物理削除なんだろうか??