3

Google がサポート デザイン ライブラリでリリースしたばかりのクールなものを使用することにしました。ライブラリをインポートし、プロジェクトをGradleファイルと同期すると、すべてうまくいきます。しかし、プロジェクトをコンパイルするとエラーが発生します。AppCompat ライブラリを Design Library に置き換えるまではすべてうまくいったので、ライブラリが多すぎるかどうかはわかりません。

Error:Execution failed for task ':app:dexDebug'.

com.android.ide.common.internal.LoggedErrorException: コマンドの実行に失敗しました: /Users/stanate/Library/Android/sdk/build-tools/22.0.1/dx --dex --output /Users/stanate/Workspace/ CervezaYa/cervezaya/app/build/intermediates/dex/debug --input-list=/Users/stanete/Workspace/CervezaYa/cervezaya/app/build/intermediates/tmp/dex/debug/inputList.txt エラー コード: 2 出力: 予期しないトップレベルの例外: com.android.dex.DexIndexOverflowException: メソッド ID が [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) com.android.dx.merge.DexMerger.mergeMethodIds(DexMerger.java:491) com.android.dx.merge.DexMerger.mergeDexes(DexMerger) .java:168) com.android.dx.merge で。com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454) の DexMerger.merge(DexMerger.java:189) com.android.dx.command.dexer.Main.runMonoDex(Main.java: 303) com.android.dx.command.dexer.Main.run(Main.java:246) で com.android.dx.command.dexer.Main.main(Main.java:215) で com.android.dx .command.Main.main(Main.java:106)

これが私のbuild.gradleファイルです:

buildscript {
repositories {
    maven { url 'https://maven.fabric.io/public' }
}

dependencies {
    classpath 'io.fabric.tools:gradle:1.19.1'
}
}
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'

android {
compileSdkVersion 22
buildToolsVersion "22.0.1"

defaultConfig {
    applicationId "com.coolapp.coolapp"
    minSdkVersion 14
    targetSdkVersion 22
    versionCode 1
    versionName "1.0"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

packagingOptions {
    exclude 'META-INF/services/javax.annotation.processing.Processor'
}
}

repositories {
   mavenCentral()
   jcenter()
   maven { url 'https://maven.fabric.io/public' }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:design:22.2.0'

    compile 'com.google.android.gms:play-services:7.5.0'

    // Third party custom UI
    compile 'com.github.ksoichiro:android-observablescrollview:1.5.0'
    compile 'com.makeramen:roundedimageview:2.0.1'
    compile 'com.afollestad:material-dialogs:0.7.4.1'
    compile 'com.appyvet:materialrangebar:1.0'

    // Views Injection
    compile 'com.jakewharton:butterknife:6.1.0'

   // Image Processing
   compile 'com.squareup.picasso:picasso:2.5.0'

    // Event bus
    compile 'com.squareup:otto:1.3.6'

    // Best mobile DataBase ever
    compile 'io.realm:realm-android:0.80.3'

    // Dependencies Injection with Dagger
    provided 'com.squareup.dagger:dagger-compiler:1.2.2'
    compile 'com.squareup.dagger:dagger:1.2.2'
    // Network
    compile 'com.squareup.retrofit:retrofit:1.9.0'
    compile 'com.squareup.okhttp:okhttp-urlconnection:2.0.0'
    compile 'com.squareup.okhttp:okhttp:2.0.0'

    // Fonts
    compile 'uk.co.chrisjenx:calligraphy:2.1.0'

    // Smart location
   compile('io.nlopez.smartlocation:library:3.0.10') {
        transitive = false
   }
   // Facebook SDK
    compile 'com.facebook.android:facebook-android-sdk:3.21.1'
    compile files('libs/simple.facebook-2.2.jar')


    // Crashlytics
    compile('com.crashlytics.sdk.android:crashlytics:2.2.4@aar') {
        transitive = true;
    }
}
4

2 に答える 2

4

これは、プロジェクトが限界に達したことを意味します。読む: https://developer.android.com/tools/building/multidex.html

次の方法で multidex を有効にする必要があります。

defaultConfig {
    ...
    multiDexEnabled true
}

dependencies {
    ...
    compile 'com.android.support:multidex:1.0.0'
}

Application クラスをMultiDexApplicationで拡張し、リンク自体で説明されているように AndroidManifest.xml を編集します。

于 2015-05-30T10:07:59.773 に答える
4

I had the same problem, because as google says:

If the number of method references in your app exceeds the 65K limit, your app may fail to compile.

so you have exceeded the 65k limit

The are multiple solutions:

  1. Enable Proguard
    buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
        debug {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
  2. Use multidex, just add:
    debug {
        multiDexEnabled true
    }
  3. Simply remove the dependencies that you don't really need
于 2015-05-30T10:28:37.120 に答える