Android Kinvey java.lang.NoClassDefFoundError

时间:2016-03-28 17:02:21

标签: java android kinvey

我有一个使用kinvey的android应用程序,它突然我很好地工作了

  

java.lang.OutOfMemoryError:超出GC开销限制

所以我把

dexOptions {
    incremental true
    javaMaxHeapSize "4g"
}        

在我的gradle文件中但是当我创建新客户端

时,我在行中获得了java.lang.NoClassDefFoundError
mKinveyClient = new Client.Builder(AP_ID,App_Secret, this).build();

我试图清理项目,清理gradle文件,将我的kinvey sdk从1.5更新到1.6任何建议?

这是我的build.gradle文件

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:1.0.1@aar'
    compile 'com.daimajia.androidanimations:library:1.1.3@aar'
    ///////////////google cloud messaging
    compile 'com.google.android.gms:play-services:8.4.0'
}

编辑:在我的jars文件下面的图片中

enter image description here

2 个答案:

答案 0 :(得分:1)

我认为问题在于您将kinvey JAR文件和AAR文件都复制到$credential = Get-Credential $body = @{action="Upload";param2="Data";param3="Data";} | ConvertTo-Json Invoke-RestMethod -uri "http://localhost:8080/artifactory/api/build" ` -ContentType "application/json" -method POST -body $body -Credential 文件夹中。你只需要AAR。

声称缺少的类libs/包含在com.google.api.client.json.JsonObjectParser中,因此将该JAR文件添加到模块中的正确google-http-client-1.19-0.jar目录并将这些行包含在您的内容中libs/应该正确地找到该类而不会出错。

build.gradle

关于OutOfMemory错误,您很可能超过Android Dex method limit,因为您包含了多少依赖项。最具体地说,是repositories { flatDir { dirs 'libs' } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile(name:'kinvey-android-*', ext:'aar') // other stuff } 依赖项的gradle文件的最后一行。如果您阅读that documentation,则会看到说明

的注释
  

注意:如果您应用中的方法引用次数超过65K限制,您的应用可能无法编译。通过仅指定应用使用的特定Google Play服务API而非全部API,您可以在编译应用时缓解此问题。

由于您似乎只想要云消息传递,因此您可以只包含该消息,因此请替换此行。

play-services

有了这个

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

您要包含的任何other Play Services

答案 1 :(得分:0)

  

我得到了java.lang.NoClassDefFoundError

你包含了错误的Dependent jar。使用maven或gradle添加相应的依赖版本的jar。