2016年3月6日日曜日

【Android】Error:Execution failed for task ':app:dexDebug'. Google Play Servicesの更新で起きたこと

  • 公開日:2016年03月06日

記事概要

androidのアプリ開発で発生したError:Execution failed for task ':app:dexDebug'エラーの修正方法を記載した記事です。
(この記事はJavaプログラミングでもさらに詳しく掲載予定です。)

環境

  • android sdk 23
  • Build Tools, Revision 23.0.2
  • com.google.android.gms:play-services:8.4.0

事象

Androidアプリで利用しているGoogle Play Servicesのバージョンを8.3.0から8.4.0に更新しました。その後、gradleでビルドした時にError:Execution failed for task ':app:dexDebug'が発生した。

変更前
{project_folder}/build.gradle

dependencies {
    compile 'com.mcxiaoke.volley:library:1.0.19'
    compile 'com.android.support:support-v4:23.1.0'
    compile 'com.google.android.gms:play-services:8.3.0'
    compile 'com.google.code.gson:gson:2.3'
    compile files('libs/twitter4j-core-4.0.2.jar')
    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1'
    androidTestCompile 'com.android.support.test:runner:0.4.1'
    compile 'com.android.support:appcompat-v7:23.0.0'
    compile project(':libraries:facebook')
    compile 'com.android.support:cardview-v7:23.0.0'
    compile 'com.android.support:recyclerview-v7:23.0.0'
    compile 'com.android.support:design:23.0.0'
}

変更後
{project_folder}/build.gradle

dependencies {
    compile 'com.mcxiaoke.volley:library:1.0.19'
    compile 'com.android.support:support-v4:23.1.0'
    compile 'com.google.android.gms:play-services:8.4.0'
    compile 'com.google.code.gson:gson:2.3'
    compile files('libs/twitter4j-core-4.0.2.jar')
    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1'
    androidTestCompile 'com.android.support.test:runner:0.4.1'
    compile 'com.android.support:appcompat-v7:23.0.0'
    compile project(':libraries:facebook')
    compile 'com.android.support:cardview-v7:23.0.0'
    compile 'com.android.support:recyclerview-v7:23.0.0'
    compile 'com.android.support:design:23.0.0'
}

発生箇所

android studioを使ったgradleビルド時。

エラー原因

Androidアプリでメソッド数が64k(65536)を超えるとビルド時やインストール時にエラーになる。このメソッド数はライブラリも含めてカウントされる。
つまり、Google Play Servicesのバージョンを8.3.0から8.4.0にあげたことにより、Androidアプリ全体のメソッド数が64k(65536)を超えてしまったために発生した。

修正方法

修正方法は以下のように複数あります。

  • メソッドを減らす。
  • proguardを使用する
  • multidex supportを利用する

ここではmultidex supportで解決する方法を選択します。

変更後
{project_folder}/build.gradle

    defaultConfig {
        // something

        // Enabling multidex support.
        multiDexEnabled true

    }

上記の変更でgradleビルドが可能になります。
また、Google Play Servicesは利用するライブラリだけをビルドすることもできます。修正する時間があればその方が良い選択です。現在のGoogle Play Servicesは全てのライブラリを導入すると容量が増えるので、必要なライブラリだけに絞る方が良いです。

結論

dexについて理解が浅い場合は、簡易的な修正をするだけでなく、この機会に学んでおくことをオススメします。

以上です。

PICK UP

運営サイト


この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

0 件のコメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...