Android Studio 3.2 Canary3 挙動メモ

はじめに

kotlin対応に注力しているせいか

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 してから再実行

挙動的には下記と同じ感じかも

 

 


ASの最新に関して思うこと(3.1 Canary8以降)

これ自分もよく経験してて、でIDEだけ AS3.0.1/AS2.3 で実行するとちゃんと止まるという。

すごく謎すぎるのですが・・。

build.gradleの補完が復活したからですね*3

暫定でPowerMode をoffにしていじってたりしてます。ちょっと弄る度にカクカクはシンドイ

これ自分もすごく気になってる・・

サードパーティlibrary(aar?)が使ってるんだろうか・・・


android gradle pluginの最新に関して思うこと

AS 3.1/ AS 3.2版 において

下記の状態はかなり不安定になっている気がする

Javaのプロジェクト

  • kotlin使ってないやつだと逆に不安定かも
  • library projectを使っていると特に
  • 古いProjectをimportしてみようとすると上手くできなくて手動で治すハメに
    • 移行Wizとか動かなくなっているっぽい*4

NDKを使ったプロジェクト

  • winだとCCacheがつかえないので高確率でrebuild必須
  • ninja not workのログやたら出てる
  • NDKデバック実行しているとEmuごとASが落ちることがある*5*6

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辺りでも記述が出てくるけど、対処的には

booth.pm

に書いてる サポートライブラリのバージョンを揃える 辺りの対処が最低限必要

  • 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'
    }

並列スレッドビルドだからでしょうか。。依存関係はいつも悩む


TLメモ(試したやつ)

  • Android APK Support は AS 3.1/3.2 ではOFFに出来なかった
  • Android NDK
    • offるとC++関係のソースを弄る時にハイライトとかされなくなる

最新のエミュ(with GooglePlay)は、時間がある時に試そうとしているんですが

半閉鎖proxy環境だとよく落ちることが判明 *9

-http-proxy http://192.168.xxx.xxx:8080

とか付与してもな〜。そもそもG様DNSはproxy様が通してくれなかったorz

TLメモ(その他)

TLメモ(kotlin関係)

*1:見た目上は成功している

*2:見た目上はOK

*3:未だまともに動かないけど・・

*4:同じプロジェクトをAS2.3.3ではなぜかちゃんと移行できる。。

*5:カスタムEmu使ってるから?

*6:メモリ8Gでは足りないから?

*7:それ以下の場合は一部

*8:引っかかるのはsupport-v4なので

*9:proxyは通るけどG様認証は弾く