12
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

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

参考

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
12
Help us understand the problem. What are the problem?