14262


質問です。

AndroidStudio ビルドエラーで実行出来きなくて本当に困っています。  
１ヶ月程前は実行出来ていた環境でした。  
環境  
OSX 10.10.4  
AndroidStudio 1.2.2  
jdk1.7.0_79.jdk

ソースと参考にしたURLを下に載せました。

[code]

    buildscript {
        ext.kotlin_version = '0.12.412'
    
        repositories {
            jcenter()
            mavenCentral()
        }
    
        dependencies {
            classpath 'com.android.tools.build:gradle:1.2.3'
            classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
            classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
        }
    }
    
    apply plugin: "com.android.application"
    apply plugin: 'kotlin-android'
    
    repositories {
        jcenter()
        mavenCentral()
    }
    
    
    
    android {
        compileSdkVersion 22
        buildToolsVersion "22.0.1"
    
        defaultConfig {
            applicationId "jp.trustridge.macaroni.app"
            minSdkVersion 16
            targetSdkVersion 22
            versionCode 10
            versionName "1.6"
        }
    
        compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_7
            targetCompatibility JavaVersion.VERSION_1_7
        }
    
        buildTypes {
            release {
                minifyEnabled true
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
    
        sourceSets {
            main.java.srcDirs += 'src/main/kotlin'
        }
    }
    
    dependencies {
        compile 'com.android.support:support-v13:+'
        compile 'com.android.support:appcompat-v7:+'
        compile 'com.android.support:recyclerview-v7:+'
        compile 'com.google.android.gms:play-services:+'
    
        compile "org.jetbrains.kotlin:kotlin-stdlib:+"
    
        compile 'com.parse.bolts:bolts-android:+'
    
        compile fileTree(dir: 'libs', include: ['*.jar'])
    
        // volley
        compile 'com.mcxiaoke.volley:library:+'
    
        // realm
        compile 'io.realm:realm-android:+'
    
        // adjust
        //compile 'com.adjust.sdk:adjust-android:+'
    }
    
[/code]

エラー文

[code]

    Error:Execution failed for task ':app:dexDebug'.
        > com.android.ide.common.process.ProcessException:
        org.gradle.process.internal.ExecException:
        Process 'command '/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/bin/java''
        finished with non-zero exit value 2
    
[/code]

参考URL <http://markfour.blogspot.jp/2015/03/androidsdkerrorexecution-failed-
for.html>  
参考にしたスタックオーバーフローの質問  
『[AndroidStudio(gradle)でビルドエラー Process finished with non-zero exit value
2](https://ja.stackoverflow.com/q/8020/7290)』

試した事

`compile fileTree(dir: 'libs', include: ['*.jar'])`をコメントアウト→エラー(`Warning:(5,
31) 'ActionBarActivity' is deprecated. Deprecated in Java`など)

[code]

    //以下をコメントアウトでエラー
    compile 'com.android.support:support-v13:+'
    compile 'com.android.support:appcompat-v7:+'
    compile 'com.android.support:recyclerview-v7:+'
    compile 'com.google.android.gms:play-services:+'
    compile "org.jetbrains.kotlin:kotlin-stdlib:+"
    compile 'com.parse.bolts:bolts-android:+'
    // volley
    compile 'com.mcxiaoke.volley:library:+'
    // realm
    compile 'io.realm:realm-android:+'
    
    Error:(1) Error retrieving parent for item: No resource found that matches the given name 'Theme.AppCompat.Light.DarkActionBar'.
    Error:(10, 21) No resource found that matches the given name: attr 'colorAccent'.
    Error:(4, 21) No resource found that matches the given name: attr 'colorPrimary'.
    Error:(7, 21) No resource found that matches the given name: attr 'colorPrimaryDark'.
    Error:Execution failed for task ':app:processDebugResources'.
        > com.android.ide.common.process.ProcessException:
        org.gradle.process.internal.ExecException: Process 'command
        '/Users/makki/Library/Android/sdk/build-tools/22.0.1/aapt'' 
        finished with non-zero exit value 1
    
[/code]

追記8/10  
・参考にしたサイトその３  
<http://markfour.blogspot.jp/2015/03/androidsdkerrorexecution-failed-for.html>  
重複エラーの修正の仕方が書いてありますが、自分場合どのようにすれば良いかわかりません。

追記8/10 (2)

[参照先](https://ja.stackoverflow.com/questions/8020/androidstudiogradle%E3%81%A7%E3%83%93%E3%83%AB%E3%83%89%E3%82%A8%E3%83%A9%E3%83%BC-
process-finished-with-non-zero-exit-
value-2/12096#12096)のコマンドラインで直接gradleを実行方法がわかりません。  
参考サイトを教えていただけると助かります。[こちらで質問しています。](https://ja.stackoverflow.com/questions/14236/gradle%E3%82%92%E3%82%BF%E3%83%BC%E3%83%9F%E3%83%8A%E3%83%AB%E3%81%A7%E5%AE%9F%E8%A1%8C%E3%81%97%E3%81%9F%E3%81%84)

追記8/11  
ターミナルからの実行結果

※helpタスクのログ削除  
ーーーーーーーーーーーーー

追記 8/11(2)  
gradlew buildを実行してみました。

[code]

    makki-no-MacBook-Pro:gnoccho makki$ ./gradlew build
    :app:preBuild UP-TO-DATE
    :app:preDebugBuild UP-TO-DATE
    :app:checkDebugManifest
    :app:preReleaseBuild UP-TO-DATE
    :app:prepareComAndroidSupportAppcompatV72221Library UP-TO-DATE
    :app:prepareComAndroidSupportMediarouterV72200Library UP-TO-DATE
    :app:prepareComAndroidSupportRecyclerviewV72221Library UP-TO-DATE
    :app:prepareComAndroidSupportSupportV132221Library UP-TO-DATE
    :app:prepareComAndroidSupportSupportV42221Library UP-TO-DATE
    :app:prepareComGoogleAndroidGmsPlayServices750Library UP-TO-DATE
    :app:prepareComGoogleAndroidGmsPlayServicesAds750Library UP-TO-DATE
    :app:prepareComGoogleAndroidGmsPlayServicesAnalytics750Library UP-TO-DATE
    :app:prepareComGoogleAndroidGmsPlayServicesAppindexing750Library UP-TO-DATE
    :app:prepareComGoogleAndroidGmsPlayServicesAppinvite750Library UP-TO-DATE
    :app:prepareComGoogleAndroidGmsPlayServicesAppstate750Library UP-TO-DATE
    :app:prepareComGoogleAndroidGmsPlayServicesBase750Library UP-TO-DATE
    :app:prepareComGoogleAndroidGmsPlayServicesCast750Library UP-TO-DATE
    :app:prepareComGoogleAndroidGmsPlayServicesDrive750Library UP-TO-DATE
    :app:prepareComGoogleAndroidGmsPlayServicesFitness750Library UP-TO-DATE
    :app:prepareComGoogleAndroidGmsPlayServicesGames750Library UP-TO-DATE
    :app:prepareComGoogleAndroidGmsPlayServicesGcm750Library UP-TO-DATE
    :app:prepareComGoogleAndroidGmsPlayServicesIdentity750Library UP-TO-DATE
    :app:prepareComGoogleAndroidGmsPlayServicesLocation750Library UP-TO-DATE
    :app:prepareComGoogleAndroidGmsPlayServicesMaps750Library UP-TO-DATE
    :app:prepareComGoogleAndroidGmsPlayServicesNearby750Library UP-TO-DATE
    :app:prepareComGoogleAndroidGmsPlayServicesPanorama750Library UP-TO-DATE
    :app:prepareComGoogleAndroidGmsPlayServicesPlus750Library UP-TO-DATE
    :app:prepareComGoogleAndroidGmsPlayServicesSafetynet750Library UP-TO-DATE
    :app:prepareComGoogleAndroidGmsPlayServicesWallet750Library UP-TO-DATE
    :app:prepareComGoogleAndroidGmsPlayServicesWearable750Library UP-TO-DATE
    :app:prepareDebugDependencies
    :app:compileDebugAidl UP-TO-DATE
    :app:compileDebugRenderscript UP-TO-DATE
    :app:generateDebugBuildConfig UP-TO-DATE
    :app:generateDebugAssets UP-TO-DATE
    :app:mergeDebugAssets UP-TO-DATE
    :app:generateDebugResValues UP-TO-DATE
    :app:generateDebugResources UP-TO-DATE
    :app:mergeDebugResources UP-TO-DATE
    :app:processDebugManifest UP-TO-DATE
    :app:processDebugResources UP-TO-DATE
    :app:generateDebugSources UP-TO-DATE
    :app:processDebugJavaRes UP-TO-DATE
    :app:compileDebugKotlin UP-TO-DATE
    :app:compileDebugJava UP-TO-DATE
    :app:compileDebugNdk UP-TO-DATE
    :app:compileDebugSources UP-TO-DATE
    :app:preDexDebug UP-TO-DATE
    :app:dexDebug
    UNEXPECTED TOP-LEVEL EXCEPTION:
    com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536
        at com.android.dx.merge.DexMerger$6.updateIndex(DexMerger.java:502)
        at com.android.dx.merge.DexMerger$IdMerger.mergeSorted(DexMerger.java:277)
        at com.android.dx.merge.DexMerger.mergeMethodIds(DexMerger.java:491)
        at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:168)
        at com.android.dx.merge.DexMerger.merge(DexMerger.java:189)
        at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454)
        at com.android.dx.command.dexer.Main.runMonoDex(Main.java:303)
        at com.android.dx.command.dexer.Main.run(Main.java:246)
        at com.android.dx.command.dexer.Main.main(Main.java:215)
        at com.android.dx.command.Main.main(Main.java:106)
    
    :app:dexDebug FAILED
    
    FAILURE: Build failed with an exception.
    
    * What went wrong:
    Execution failed for task ':app:dexDebug'.
    > com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/bin/java'' finished with non-zero exit value 2
    
    * Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
    
    BUILD FAILED
    
    Total time: 21.375 secs
    makki-no-MacBook-Pro:gnoccho makki$ 
    
[/code]


CC BY-SA 3.0
2015-08-08T12:54:59.917
13181
2015-08-11T09:31:42.240
2017-04-13T12:52:38.920
-1
10715
question
android java macos android-studio gradle
AndroidStudio(gradle)でビルドエラー (重複クラスでエラー?)


貼り付けられたスタックトレースに出ていたエラーメッセージで検索してみたところ、次のものが見つかりました。

[android - Unable to execute dex: method ID not in [0, 0xffff]: 65536 - Stack
Overflow](https://stackoverflow.com/questions/15209831/unable-to-execute-dex-
method-id-not-in-0-0xffff-65536)

エラーの理由としてはプロジェクトに含まれるメソッド数が65535を超えてしまったためのようです。

なお上記QAに Google 公式の解説へのリンクがありました。

[Building Apps with Over 65K Methods | Android
Developers](http://developer.android.com/tools/building/multidex.html)

上記ページの Configuring Your App for Multidex with Gradle
の節に解決策が書かれているようです。要点は次の２点。

>   * Change your Gradle build configuration to enable multidex
>   * Modify your manifest to reference the MultiDexApplication class
>

build.grade の `defaultConfig` に

[code]

    multiDexEnabled true
    
[/code]

を加え、さらに `dependencies` に

[code]

    compile 'com.android.support:multidex:1.0.0'
    
[/code]

を加えてみてください。  
さらに manifest にも `MultiDexApplication` を参照するための記述を加える必要があるようです。具体的な記述は、上記の
Google 解説ページを見てください。

### 追記

上記の方法でビルドエラーを回避したとしても、この方法でできたバイナリは Android 4.0 未満では動作しないとのことです。ご注意を。

> **Limitations of the multidex support library**  
>  Applications that use multidex may not start on devices that run versions
> of the platform earlier than Android 4.0 (API level 14) due to a Dalvik
> linearAlloc bug (Issue 22586).


CC BY-SA 3.0
2015-08-11T06:20:35.850
14262
2015-08-11T06:40:11.020
2017-05-23T12:38:56.467
-1
10492
13181
answer


Google Play開発者サービス(Google Play
services)は非常に大規模であるため、ライブラリをまるごと依存関係に追加してしまうと、今回エラーとして出ている[65K Methods
Limit](https://developer.android.com/tools/building/multidex.html)に引っかかりやすくなります。

質問文中の

> compile 'com.google.android.gms:play-services:+'

が該当しますが、これを削除し、自分のアプリケーションが必要とするライブラリのみ依存関係に追加することで、おそらくエラーを除去できると思います。  
Google Play servicesがどのようなライブラリに分割されているかは下記公式サイトを参照してください。

  * [Setting Up Google Play Services   |   Google APIs for Android   |   Google Developers](https://developers.google.com/android/guides/setup)

たとえば、Google DriveのAPIを使用したいのであれば

[code]

    compile com.google.android.gms:play-services-drive:7.5.0
    
[/code]

となります。

一般的な対策としては [@holywise
さんが記載されている方法](https://ja.stackoverflow.com/a/14262/2808)になるのですが、その対処を行う前に、まずは不要なライブラリ/メソッドを付随させないようにすべきかと考えます。  
ファイルサイズの肥大化抑制にもつながります。

参考:

  * [Google Play services and DEX method limits | Android Developers Blog](http://android-developers.blogspot.jp/2014/12/google-play-services-and-dex-method.html)
  * [android - How to avoid 65k method limit while using Google Play Services - Stack Overflow](https://stackoverflow.com/questions/27589560/)
  * [Android - 65K問題が起きた時の犯人を調べる方法 - Qiita](http://qiita.com/mattak@github/items/f27db9a7862ab9c84c6c)


CC BY-SA 3.0
2015-08-11T06:59:42.203
14267
2015-08-11T07:10:50.070
2017-05-23T12:38:56.467
-1
2808
13181
answer