NoClassDefFoundError: com.parse.ParseRequest. Android Parse Exception

Я создал один пример приложения, используя parse.com баночка. В этом проекте Buid версия SDK было 22(все работало нормально). Но после изменения 23 я столкнулся с некоторыми проблемами при компиляции приложения. Я пытался очистить проект, Неправильные кэши. Перестройте проект и т. Д., Но я столкнулся с той же ошибкой:

FATAL EXCEPTION: main
java.lang.NoClassDefFoundError: com.parse.ParseRequest
at com.parse.Parse.initialize(Parse.java:184)
Я не могу найти точное решение. Я проверил папку libs есть JAR. Я также пытался с последним gradle код, но столкнулся с той же ошибкой. После удаления файла parse я могу скомпилировать свой проект. Мои зависимости

    dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile files('libs/org.apache.http.legacy.jar')
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:design:23.1.1'
    compile 'com.android.support:cardview-v7:23.1.1'
    compile 'com.google.android.gms:play-services:8.1.0'
    compile 'de.hdodenhof:circleimageview:1.3.0'
    compile project(':MaterialShowcaseView')
    compile files('libs/Parse-1.9.2.jar')
    compile files('libs/bolts-android-1.2.0.jar')
    compile files('libs/universal-image-loader-1.9.4.jar')

}

Если я изменю эту зависимость с

compile 'com.parse.bolts:bolts-android:1.4.0'
compile 'com.parse:parse-android:1.12.0'
тогда ошибка другая. Ошибка:
java.lang.NoClassDefFoundError: com.parse.ParsePlugins$1
at com.parse.ParsePlugins.restClient(ParsePlugins.java:92)
at com.parse.Parse.initializeParseHttpClientsWithParseNetworkInterceptors(Parse.java:762)
at com.parse.Parse.initialize(Parse.java:365)
at com.parse.Parse.initialize(Parse.java:344)
Пожалуйста, предложите мне, что не так с этой зависимостью. заранее спасибо

1 ответ

Решение

Проблема не из-за класса синтаксического анализа. В случае ошибки вы получаете эту ошибку из-за того, что мультидекс не обрабатывается, а инициализация синтаксического анализа происходит при запуске приложения, поэтому он выдаст ошибку "класс не найден".

добавить следующие строки в build.gradle для обработки мульти Dex

Чтобы решить вопрос, что я даю в моем build.gradle

dexOptions {
        incremental true
        // here heap size give 4g i got this thing from https://groups.google.com/forum/#!topic/adt-dev/P_TLBTyFWVY

        javaMaxHeapSize "4g"
    }


dependencies {
     compile 'com.android.support:multidex:1.0.1'
    //    your dependencies which you are using.

}

Весь build.gradle

apply plugin: 'com.android.application'
repositories {
    mavenCentral()

}
configurations {
//    all*.exclude group: 'com.android.support', module: 'recyclerview-v7'
}

android {
    signingConfigs {
        /*
        releasebuild {
            keyAlias 'hellotest'
            keyPassword 'hellotest'
            storeFile file('path to keystore')
            storePassword 'hellotest'
        }
        */
    }
    compileSdkVersion 'Google Inc.:Google APIs:22'
    buildToolsVersion '23.0.0'
    /* if you got error regarding duplicate file of  META-INF/LICENSE.txt from jar file
    packagingOptions {
        exclude 'META-INF/LICENSE.txt'
    }
    */
    dexOptions {
        jumboMode = true
        incremental true
        // here heap size give 4g i got this thing from https://groups.google.com/forum/#!topic/adt-dev/P_TLBTyFWVY

        javaMaxHeapSize "4g"
    }
    defaultConfig {
        multiDexEnabled true
        applicationId "com.myapp.packagenme"
        minSdkVersion 17
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.releasebuild
        }
        debug {
            signingConfig signingConfigs.releasebuild
        }
    }
}

dependencies {
     compile 'com.android.support:multidex:1.0.1'
    //    your dependencies which you are using.

}

С помощью Android разработчика мультидекс руководство MultiDexApplication класс

Установить MultiDex.install я ссылаюсь на ссылку разработчика Android

public class MyAppClass extends MultiDexApplication{
@Override
    protected void attachBaseContext(Context newBase) {
        MultiDex.install(newBase);
        super.attachBaseContext(newBase);
    }
}

Предложение

Выборочная компиляция API в ваш исполняемый файл

Не используйте весь сервис Google Play, используйте только необходимую библиотеку. Начиная с версии 6.5 вместо этого вы можете выборочно встраивать API-интерфейсы сервиса Google Play в свое приложение. Например, чтобы включить только API Google Fit и Android Wear, замените следующую строку в файле build.gradle:

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

с этими строками:

compile 'com.google.android.gms:play-services-fitness:8.4.0'
compile 'com.google.android.gms:play-services-wearable:8.4.0'

Дай мне знать, если что.

Другие вопросы по тегам