2016-03-28 8 views
1

Ich habe eine Android-Anwendung, die Kinvey verwendet und es funktionierte bei mir ganz gut plötzlich bekam ichAndroid Kinvey java.lang.NoClassDefFoundError

java.lang.OutOfMemoryError: GC overhead limit exceeded

i

so setzen
dexOptions { 
    incremental true 
    javaMaxHeapSize "4g" 
}   

in meiner gradle Datei aber ich habe dann java.lang.NoClassDefFoundError in der Linie, wenn ich neuen Client erstellen

mKinveyClient = new Client.Builder(AP_ID,App_Secret, this).build(); 

ich versuchte Projekt zu reinigen, sauber grad le datei, aktualisiert mein kinvey sdk von 1.5 bis 1.6 Irgendwelche Vorschläge?

hier sind meine build.gradle Datei

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.2" 
    dexOptions { //for the error java.lang.OutOfMemoryError: GC overhead limit exceeded 
     incremental true 
     javaMaxHeapSize "4g" 
    }  

    defaultConfig { 
     applicationId "com.example.dell.augmentedreality" 
     minSdkVersion 14 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0" 
     multiDexEnabled = true 
    } 

    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

repositories { 
    jcenter() 

    flatDir { 
     dirs 'libs' 
    } 

    mavenCentral() 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:appcompat-v7:23.1.1' 
    compile files('src/main/java/Vuforia.jar') 
    compile(name:'kinvey-android-2.10.6', ext:'aar') {changing= true} 
    compile 'com.android.support:multidex:1.0.0' 
    compile 'com.gordonwong:material-sheet-fab:1.2.1' 
    compile 'com.android.support:design:23.1.1' 
    compile 'com.android.support:recyclerview-v7:23.0.1' 
    ///////////////////////////for animating the text 
    /////////////////////// 
    compile 'com.nineoldandroids:library:2.4.0' 
    compile 'com.daimajia.easing:library:[email protected]' 
    compile 'com.daimajia.androidanimations:library:[email protected]' 
    ///////////////google cloud messaging 
    compile 'com.google.android.gms:play-services:8.4.0' 
} 

Edit: in dem Bild unter meinen Gläsern Datei

enter image description here

+0

Angenommen, Sie verwenden Android Studio, sehen Sie die Kinvey-Bibliotheken, wenn Sie die "externen Bibliotheken" im Projektfenster erweitern? – Bajal

+0

die Gläser-Datei sind in dem Bild ist da irgendwas falsch daran? –

+0

Kannst du bitte den vollen 'build.gradle' zeigen? –

Antwort

1

Ich denke, das Problem ist, dass Sie sowohl die kinvey JAR-Datei und die AAR-Datei in den Ordner libs/ kopiert. Sie brauchen nur die AAR.

Die Klasse, die zu fehlen in Anspruch genommen wird, ist com.google.api.client.json.JsonObjectParser, innerhalb google-http-client-1.19-0.jar enthalten ist, so dass die JAR-Datei in das richtige Verzeichnis libs/ im Modul hinzugefügt und darunter diese Zeilen in Ihnen build.gradle richtig, dass die Klasse ohne Fehler finden sollten.

repositories { 
    flatDir { 
     dirs 'libs' 
    } 
} 

dependencies {  
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile(name:'kinvey-android-*', ext:'aar') 

    // other stuff 
} 

In Bezug auf die OutOfMemory Fehler, Sie am meisten überschritten wahrscheinlich die Android Dex method limit, weil, wie viele Abhängigkeiten, die Sie aufgenommen haben. Genauer gesagt, die letzte Zeile Ihrer Gradle-Datei für die play-services Abhängigkeit. Wenn Sie that documentation lesen, werden Sie die Notiz sehen, die

Note: If the number of method references in your app exceeds the 65K limit, your app may fail to compile. You may be able to mitigate this problem when compiling your app by specifying only the specific Google Play services APIs your app uses, instead of all of them.

sagt Da Sie scheinen nur Cloud-Messaging zu wollen, können Sie einfach schließen, dass man, so diese Zeile ersetzen.

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

Mit diesem einen

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

Und jeder other Play Services Sie einschließen möchten.

+1

als ich die Linie von Google Play Service geändert hat, hat es funktioniert, vielen Dank –

0

i got java.lang.NoClassDefFoundError

Sie haben falsch Dependent Glas enthalten. Fügen Sie die entsprechende abhängige Version des Jars mithilfe von Maven oder Gradle hinzu.

+0

Das ist natürlich das Problem ... Wenn Sie angeben, welches Glas benötigt wurde, dann wäre diese Antwort nützlich. –

+1

Ich habe diesen Link http://devcenter.kinvey.com/android/guides/getting-started verfolgt ich weiß nicht, welche JAR-Dateien falsch sind, können Sie mir bitte sagen? –

Verwandte Themen