将Gradle 2.1.0更新为2.2.1后的NoClassDefFoundError

时间:2016-10-24 13:17:09

标签: android maven gradle android-gradle maven-plugin

我的库是aar文件。将根gradle类路径2.1.0更改为2.2.1后,我得到NoClassDefFoundError错误。

例如:我在我的aar库中创建了一个新类,之后我同步并且我的主应用程序看到我的类但是当我运行应用程序时,在运行时它给了我NoClassDefFoundError。

Ps:更新后,gradle下载了2.14.1。

@RepositoryRestResource

在我的MainActivity类中,我使用静态方法调用方法:

threadid=1: thread exiting with uncaught exception (group=0xa4ca8b20)
: java.lang.NoClassDefFoundError: com.gk.lib.ui.Utils
:     at com.example.activities.MainActivity.onCreate(MainActivity.java:78)
:     at android.app.Activity.performCreate(Activity.java:5231)
:     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
:     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
:     at android.app.ActivityThread.access$800(ActivityThread.java:135)
:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
:     at android.os.Handler.dispatchMessage(Handler.java:102)
:     at android.os.Looper.loop(Looper.java:136)
:     at android.app.ActivityThread.main(ActivityThread.java:5001)
:     at java.lang.reflect.Method.invokeNative(Native Method)
:     at java.lang.reflect.Method.invoke(Method.java:515)
:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
:     at dalvik.system.NativeStart.main(Native Method)

我的实用工具类:

Utils.gkTestMethod();

与我所称的课程无关。如果我创建新类,则会出现此错误。

感谢。

2 个答案:

答案 0 :(得分:0)

关于主build.gradle中的此片段:

dependencies {

    compile('com.gk.lib:common:1.0.0') {
        transitive = true
    }

    compile('com.gk.lib:ui:1.0.0') {
        transitive = true
        exclude module: 'common'
    }

    compile('com.gk.lib:components:1.0.0') {
        transitive = true
        exclude module: 'common'
        exclude module: 'ui'
    }

    // Other dependencies
}

似乎components取决于commonui,而ui取决于common。是否有充分的理由明确排除并重新包含传递依赖?我认为这应该有效:

dependencies {

    compile 'com.gk.lib:components:1.0.0'

    // Other dependencies
}

IIRC common不具传递性。

答案 1 :(得分:0)

我无法相信multidex支持可以解决我的问题。为什么我以前没想过:/谢谢。

https://developer.android.com/studio/build/multidex.html