LoginSignup
16
12

More than 5 years have passed since last update.

Android Studioを 3.0 から 3.1 へ移行する

Last updated at Posted at 2018-04-02

はじめに

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 にアップデート

gradle/wrapper/gradle-wrapper.properties
distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip

3. Android Plugin for Gradleのアップデート

build.gradle
buildscript {
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.1'
    }
}

4. SDK Build Toolsのアップデートのアップデート

buildToolsVersionが 27.0.3 以上でないといけない

app/build.gradle
android {
    buildToolsVersion '27.0.3'
}

5. ビルド環境の設定

D8コンパイラ

新しいDEXコンパイラ D8 はデフォルトで使われるので、何もしない
D8コンパイラを使いたくない場合は、以下のように書く

gradle.properties
android.enableD8=false

Incremental desugaring

これもデフォルトで使われている
使いたくない場合は以下の通り

gradle.properties
android.enableIncrementalDesugaring=false

In-process desugaring in D8

以下のように書く
プレビュー版のため、今回はやらなかった

gradle.properties
android.enableD8.desugaring=true

Data Binding Compiler V2

以下の記述を追加

gradle.properties
android.databinding.enableV2=true

それぞれの詳しい内容はこちら
New DEX compiler, D8
Data Binding Compiler V2

6. その他行ったこと

Data Binding

DataBindingのkaptを書かなくても良くなった の記事を見て、以下の記述を消しました。

app/build.gradle
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管理対象外にするために、以下の記述を足した。

.gitignore
.idea/codeStyles

参考

16
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
12