2016-09-20 56 views
2

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

七月8日至31日:

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中看到它 当我在debbuging时,我可以进入该类的代码,但是在执行它时,它会崩溃。 最后,我安装了全新的Android Studio 2.2,并使用了APK分析器,我可以在classes.dex中查看未找到的类。

回答

0

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

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

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

2-添加multiDexEnabled truebuild.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"> 
+0

如果multidexing将是摆在首位,他不能从它建立一个APK的问题。 – breakline

+0

不正确。正如他所说,可以成功创建APK文件,但如果调用目标驻留在另一个dex文件中,而应用程序不是MultidexApplication的实例,则会发生NoClassDefFound异常。 –

+0

情况并非如此 –

相关问题