Edited at

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


はじめに

Android Studio 3.0 がリリースされました。

ということで、Android Studioを2.3から3.0に移行しました。


手順


1. Android Studioのアップデート

Android Studio -> Check for Updates...からアップデート


2. Gradleのアップデート

Gradleを最新の 4.1 にアップデート


gradle/wrapper/gradle-wrapper.properties

distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip



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

Googleから提供されたmavenリポジトリを使うようにもする


build.gradle

buildscript {

dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
}
}
allprojects {
repositories {
google()
}
}


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


app/build.gradle

android {

buildToolsVersion '26.0.2'
}


5. Flavor Dimensionsの設定

Android Studio 3.0 から、すべての Flavor に対して、Flavor Dimensions の設定が必須


app/build.gradle

android {

flavorDimensions "source"
productFlavors {
free {
dimension "source"
}
}
}

Flavor Dimensionsを設定していなかったら、以下のようなエラーになる


Error:All flavors must now belong to a named flavor dimension. Learn more at https://d.android.com/r/tools/flavorDimensions-missing-error-message.html



6. Dependencyの設定

Android Studio 3.0 から、compileは非推奨で、その代わりにimplementationapiを使うことが推奨されている

implementationapiの違いはここに詳しく書いているhttps://developer.android.com/studio/build/gradle-plugin-3-0-0-migration.html?utm_source=android-studio#new_configurations

また、providedcompileOnlyに、apkruntimeOnlyを使うことも推奨されている


app/build.gradle

// before

dependencies {
compile 'com.xxx.yyy:zzz:1.0.0'
freeCompile 'com.xxx.zzz:yyy:1.0.0'
}


app/build.gradle

// after

dependencies {
implementation 'com.xxx.yyy:zzz:1.0.0'
freeImplementation 'com.xxx.zzz:yyy:1.0.0'
}


7. その他行ったこと


Retrolambda

ビルドしたときに以下のような警告


Warning:One of the plugins you are using supports Java 8 language features. To try the support built into the Android plugin, remove the following from your build.gradle:

apply plugin: 'me.tatarka.retrolambda'

To learn more, go to https://d.android.com/r/tools/java-8-support-message.html


Android Studio 3.0から、Java8記法がサポートされて、Retrolambdaが不要になったので、RetrolambdaをDependencyから削除


Error:Error converting bytecode to dex

ビルドしたときに以下のようなエラー


Information:Gradle tasks [:app:assembleDebug]

Error:Error converting bytecode to dex:


プロジェクトをクリーンしたら直りました


FATAL EXCEPTION: android.view.InflateException: Binary XML file line #0:

特定の画面に遷移したときにアプリが落ちて、以下のようなエラー


FATAL EXCEPTION: android.view.InflateException: Binary XML file line #0:


Android Studio 3.0 から、Android Asset Packaging Tool 2.0 (AAPT2) を使ったリソース処理がデフォルト動作となったらしい

これを無効にしたいので、以下の追記をした


gradle.properties

android.enableAapt2=false



APKの出力先が変わった

Flavor Dimensionsの設定をしたことで、APKの出力先が変わり、CI環境でエラーとなった

APKの出力先が

/app/build/outputs/apk/[flavor]/[buildType]/app-[flavor]-[buildType].apkに変わっていました


追記

Android Studioを3.1に上げた記事も書きました。


参考