【问题标题】:No Class defined error on release builds?发布版本上没有类定义错误?
【发布时间】:2018-09-11 14:44:15
【问题描述】:

我似乎遇到了一个问题,即只有发布版本崩溃并出现错误java.lang.NoClassDefFoundError: Failed resolution of: Lretrofit2/Retrofit$Builder; 该类无关紧要,因为它在发布版本中也没有解决其他类。但是,这不会出现在 Debug 版本上,这根本没有意义。我发现当我包含这两个依赖项时:

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
    }
}

【问题讨论】:

  • 您是否使用了一些代码混淆工具,例如 proguard 或 dexguard?
  • 不 - 只是普通的多索引

标签: android exoplayer


【解决方案1】:

更新你的 gradle

targetSdkVersion 27,

compileSdkVersion 27,和

buildtoolsVersion to 27.0.1 或删除它(将其保留为默认值。gradle 将始终在此版本 27 中查找最新的)

以上也解决了我的问题。虽然,我不使用multiDexEnabled true,因为当我包含谷歌播放服务库时,我认为没有理由。

尝试删除 multiDexEnabled true 并重新构建 gradle。

除非你是扩展Application类的类。那么你可以使用multiDexEnable true

@Override
protected void attachBaseContext(Context context) {
    super.attachBaseContext(context);
    MultiDex.install(this);
}

check this question for possible solution

【讨论】:

  • 解决方案是也更新支持库
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-12
  • 2017-09-10
  • 1970-01-01
  • 2021-11-18
  • 1970-01-01
  • 2016-10-11
相关资源
最近更新 更多