Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

はじめに

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に上げた記事も書きました。

参考

taki4227
中小企業のSIer、ベンチャー企業を経て、今はSHOWROOMのエンジニアをしています。Android・iOS・Flutterでアプリ開発をしてきました。良いものを作って届けたい、良いものを作ることに携わりたい。
https://note.com/taki4227
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away