发布版本上出现“未定义类”错误?
发布版本上出现“未定义类”错误?
我似乎遇到了一个问题,只有发布版本会崩溃,并显示错误信息java.lang.NoClassDefFoundError: Failed resolution of: Lretrofit2/Retrofit$Builder;
。这个类是无关紧要的,因为在发布版本中它没有解析其他类。然而,在调试版本中却没有出现这个问题,这一点毫无道理。我发现当我包括以下两个依赖项时:
implementation 'com.google.android.gms:play-services-ads:12.0.0' implementation 'com.google.ads.interactivemedia.v3:interactivemedia:3.8.5'
应用程序会崩溃。然而,当我排除其中一个依赖项时,发布版本就能正常工作。有人遇到过这个问题吗?
构建配置如下:
compileSdkVersion 26 buildToolsVersion 26.0.1 defaultConfig { applicationId "xxxx" minSdkVersion 21 targetSdkVersion 27 versionName project.rootProject.version.toString() multiDexEnabled true vectorDrawables.useSupportLibrary = true } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' signingConfig xxxx } }
问题:发布版上出现“没有定义类错误(No Class defined error on release builds)”的原因和解决方法
在发布版上出现“没有定义类错误(No Class defined error on release builds)”的问题,可能是由于以下原因导致的:
1. Gradle版本不兼容。解决方法是更新Gradle,将targetSdkVersion
、compileSdkVersion
和buildtoolsVersion
都设置为27.0.1,或者将其移除(保持默认设置,Gradle会自动寻找该版本中的最新版本)。
2. 是否使用了multiDexEnabled true
。如果已经包含了Google Play服务库,则可以尝试移除multiDexEnabled true
并重新构建Gradle。
3. 如果你的类继承Application类,则可以使用multiDexEnable true
。在attachBaseContext
方法中添加以下代码:
protected void attachBaseContext(Context context) { super.attachBaseContext(context); MultiDex.install(this); }
4. 可以参考这个问题中的解决方法,更新支持库。
希望以上解决方法能够帮助你解决“没有定义类错误(No Class defined error on release builds)”的问题。