编译和运行时出错[NoClassDefFoundError]

时间:2016-04-11 13:53:06

标签: java android gradle android-gradle

我在错误中度过了这么多天。 当我在Android中编译我的项目并在Android<中运行时5.0

Caused by: java.lang.NoClassDefFoundError: com.squareup.okhttp.Protocol[]

问题在于“NoClassDefFoundError”,因为我删除了很多部分,并且在另一个类中收到了相同的错误。 我已经清理了我的项目,使用了gradlew clean。我用Google搜索了很多天。请帮帮我。

我在gradle中的依赖关系:

dependencies {

compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile files('libs/YouTubeAndroidPlayerApi.jar')

compile('com.facebook.android:facebook-android-sdk:[4,5)') {
    exclude group: 'com.parse.bolts',
            module: 'bolts-tasks'
    exclude group: 'com.parse.bolts',
            module: 'bolts-applinks';
}

compile 'com.android.support:appcompat-v7:23.3.0'
compile 'com.google.apis:google-api-services-youtube:v3-rev145-1.20.0'

compile 'com.squareup.okhttp3:okhttp:3.2.0'
compile 'com.google.android.gms:play-services-gcm:8.4.0'
compile 'info.hoang8f:fbutton:1.0.5'
compile 'com.victor:lib:1.0.1'
compile 'com.melnykov:floatingactionbutton:1.3.0'
compile 'com.google.code.gson:gson:2.4'
compile 'com.github.amlcurran.showcaseview:library:5.3.0'
compile 'com.amazonaws:aws-android-sdk-mobileanalytics:2.2.5'
compile 'com.facebook.fresco:fresco:0.7.0'
compile 'com.facebook.fresco:imagepipeline-okhttp:0.7.0'
compile 'com.wang.avi:library:1.0.1'
compile 'com.balysv:material-ripple:1.0.2'
compile 'com.nineoldandroids:library:2.4.0'
compile 'com.github.markushi:circlebutton:1.1'
compile 'com.baoyz.pullrefreshlayout:library:1.2.0'
compile 'com.android.support:design:23.3.0'
compile 'com.android.support:recyclerview-v7:23.3.0'
compile 'com.github.jd-alexander:LikeButton:0.1.8'
compile 'com.android.support:multidex:1.0.1'
}

[编辑]

模块Gradle:

buildscript {
repositories {
    jcenter()
    mavenCentral()
}
dependencies {
    classpath 'com.android.tools.build:gradle:1.5.0'

    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
}
}

allprojects {
    repositories {
        jcenter()
        maven { url "https://jitpack.io" }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

项目的剩余部分,我正在使用口味,如果我放在这里将会很长:

defaultConfig {
        applicationId "blacktoad.com.flapprototipo"
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 20
        versionName "1.48"

        multiDexEnabled true
    }

    dexOptions {
        javaMaxHeapSize "4g"
        preDexLibraries = false
        jumboMode = true
    }

2 个答案:

答案 0 :(得分:1)

我解决了!

我添加了依赖项:compile 'com.android.support:multidex:1.0.1'

在我的MainActivity中,我添加了:

@Override
protected void attachBaseContext(Context base) {
    super.attachBaseContext(base);
    MultiDex.install(this);
}

答案 1 :(得分:1)

您错过了AndroidManifest.xml中的multidex设置

<application
   ...
   android:name="android.support.multidex.MultiDexApplication"
   ...
>

如果您已经在应用程序标记中使用了name属性,请在该类中添加以下覆盖函数,该类扩展Application而不是AndroidManifest.xml。

@Override
protected void attachBaseContext(Context base) {
    super.attachBaseContext(base);
    MultiDex.install(this);
}

当然,您应该在build.gradle

中拥有该代码
android {
    defaultConfig {
        multiDexEnabled true
    }
}