はじめに
Android Studio 3.1 がリリースされました。
ということで、Android Studioを3.0から3.1に移行しました。
手順
1. Android Studioのアップデート
Android Studio -> Check for Updates...
からアップデート
2. Gradleのアップデート
Gradle version 4.4
以上でないといけないので、最新の 4.6
にアップデート
distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip
3. Android Plugin for Gradleのアップデート
buildscript {
dependencies {
classpath 'com.android.tools.build:gradle:3.1.1'
}
}
4. SDK Build Toolsのアップデートのアップデート
buildToolsVersionが 27.0.3
以上でないといけない
android {
buildToolsVersion '27.0.3'
}
5. ビルド環境の設定
D8コンパイラ
新しいDEXコンパイラ D8 はデフォルトで使われるので、何もしない
D8コンパイラを使いたくない場合は、以下のように書く
android.enableD8=false
Incremental desugaring
これもデフォルトで使われている
使いたくない場合は以下の通り
android.enableIncrementalDesugaring=false
In-process desugaring in D8
以下のように書く
プレビュー版のため、今回はやらなかった
android.enableD8.desugaring=true
Data Binding Compiler V2
以下の記述を追加
android.databinding.enableV2=true
それぞれの詳しい内容はこちら
New DEX compiler, D8
Data Binding Compiler V2
6. その他行ったこと
Data Binding
DataBindingのkaptを書かなくても良くなった の記事を見て、以下の記述を消しました。
dependencies {
kapt 'com.android.databinding:compiler:3.0.1'
}
Data Bindingエラー ケース1
ビルドしたときに以下のようなエラー
Type inference failed. Expected type mismatch: inferred type is ***Binding? but ***Binding was expected
RecyclerViewAdapter で以下のように書いていたのが原因。
val binding: **Binding = DataBindingUtil.bind(view)
Nullableの形に変えました。
val binding: **Binding? = DataBindingUtil.bind(view)
Data Bindingエラー ケース2
ビルドしたときに以下のようなエラー
Type mismatch: inferred type is String? but String was expected
ObservableField で以下のように書いていたのが原因。
val value: ObservableField<String> = ObservableField("")
val binding: String = value.get()
Nullableの形に変えました。
val value: ObservableField<String> = ObservableField("")
val binding: String? = value.get()
.gitignoreの設定
Android Studio 3.1 から .idea/codeStyles/codeStyleConfig.xml
と .idea/codeStyles/Project.xml
が新たにファイルが増えた。
これらをGit管理対象外にするために、以下の記述を足した。
.idea/codeStyles