【问题标题】:Android NoClassDefFound inside an Android LibraryAndroid 库中的 Android NoClassDefFound
【发布时间】:2016-09-20 13:56:58
【问题描述】:

我有一个 Android 库,我在两个不同的项目中使用它。在其中之一中,我可以正确使用该库。但是,在第二个项目中,我遇到了 NoClassDefFound 异常。

08-31 07:

49:23.155 7073-7073/com.my.android.app E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.my.android.app, PID: 7073 java.lang.NoClassDefFoundError: com.my.android.library.MyClass

未找到的类在 APK 内。我可以在 classes.jar 中看到它 调试的时候可以进入类的代码,但是执行的时候就崩溃了。 最后,我安装了全新的 Android Studio 2.2 并使用了 APK 分析器,我可以在 classes.dex 中准确地看到未找到的类。

【问题讨论】:

    标签: java android android-studio noclassdeffounderror android-multidex


    【解决方案1】:

    您的项目和库依赖项可能已达到 64K 方法引用限制,这会导致创建多个 dex 文件。 要确保 multidex 是问题的根源,请尝试:

    1- 将multidex dependency 添加到项目的build.gradle 中:

        compile 'com.android.support:multidex:1.0.0'
    

    2- 将multiDexEnabled true 添加到您的build.gradle 文件中:

    defaultConfig {
        applicationId "your.package.name"
        minSdkVersion 14
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
        multiDexEnabled true
    }
    

    3- 为您的项目创建一个扩展 MultidexApplication 的应用程序类:

    public class MyApplication extends MultiDexApplication
    

    4- 更改 AndroidManifest.xml 以使用 MyApplication 类作为应用程序的入口点:

        <application
        android:name=".MyApplication"  //the classpath to MyApplication
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
    

    【讨论】:

    • 如果多索引是一个问题,他一开始就无法从中构建 APK。
    • 不正确。正如他所说,可以成功创建APK文件,但是如果调用目标驻留在另一个dex文件中,而应用程序不是MultidexApplication的实例,则会发生NoClassDefFound异常。
    • 不是这样的
    • 你尝试了multidex的方案,问题依旧存在?
    • 是的......这就是我为什么说不是这样的。
    猜你喜欢
    • 1970-01-01
    • 2013-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多