设计支持库v22.2 &;UNEXPECTED-TOP-LEVEL exception &;



我决定使用Google刚刚发布的支持设计库中的一些很酷的东西。当我导入库并将项目与Gradle文件同步时,一切都很顺利。但是当我编译项目时,它给了我一个错误。我不知道我是否有太多的库,因为一切都很好,直到我用设计库取代了AppCompat库。

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

com.android.ide.common.internal.LoggedErrorException: Failed to run command:/Users/stanete/Library/Android/sdk/build-tools/22.0.1/dx——dex——output/Users/stanete/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: method ID not in [0,0xffff]: 65536com.android.dx.merge.DexMerger updateindex 6.美元(DexMerger.java: 502)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.DexMerger.merge (DexMerger.java: 189)com.android.dx.command.dexer.Main.mergeLibraryDexBuffers (Main.java: 454)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)

这是我的构建。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;
    }
}

这意味着你的项目已经达到了极限。阅读:https://developer.android.com/tools/building/multidex.html

您需要启用multidex,您可以:

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

用MultiDexApplication扩展你的Application类,并编辑你的AndroidManifest.xml,如链接中所解释的。

我也遇到了同样的问题,因为正如google所说:

如果你的应用程序中方法引用的数量超过65K的限制,你的应用程序可能无法编译。

所以你已经超过了65k的限制

有多个解:

  1. 启用混淆器
     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. 使用multidex,只需添加:
     debug {
        multiDexEnabled true
    }
  3. 直接删除你不需要的依赖项

最新更新