为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Proguard 转换类和资源时出错

使用 Proguard 转换类和资源时出错

红颜莎娜 2021-11-03 10:48:45
我最近在升级 gradle 和 android 依赖项后遇到了由使用 Proguard 转换类和资源导致的崩溃。我尝试了堆栈溢出中的所有解决方案(没有成功的结果)。如果有人可以帮助找到解决方案而无需降级 gradle 或通过将类保留在 proguard-rules 中将我的代码公开给公众。这是 Gradle 文件应用程序:apply plugin: 'com.onesignal.androidsdk.onesignal-gradle-plugin'apply plugin: 'com.android.application'apply plugin: 'io.fabric'apply plugin: 'com.google.gms.google-services'android {    compileSdkVersion 28    buildToolsVersion '28.0.3'    defaultConfig {        applicationId "####"        minSdkVersion 18        targetSdkVersion 28        versionCode 30        versionName "1.7.35"        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"        vectorDrawables.useSupportLibrary = true        multiDexEnabled true        manifestPlaceholders = [                onesignal_app_id: "###",                onesignal_google_project_number: "###"        ]    }    ext.enableCrashlytics = true    buildTypes {        release {            debuggable false            minifyEnabled true            shrinkResources true            useProguard true            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-RulesActivity.pro'        }        debug {            debuggable true            minifyEnabled true            shrinkResources true            useProguard true            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-RulesActivity.pro'        }    }    buildscript {        configurations.all {            resolutionStrategy {                force 'net.sf.proguard:proguard-gradle:5.3.1'            }        }    }}
查看完整描述

1 回答

?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

当我尝试使用minifyEnabled true. Build按 按钮检查面板中的警告Toggle view。


就我而言,问题在于库的重复定义org.xmlpull.v1,请参阅https://www.guardsquare.com/en/products/proguard/manual/troubleshooting#duplicateclass:


您也不应该将已经是 Android 运行时一部分的库添加到您的应用程序中(特别是 org.w3c.dom、org.xml.sax、org.xmlpull.v1、org.apache.commons.logging.Log、org.apache .http 和 org.json)。它们可能不一致,并且运行时库无论如何都会优先。


一个问题是在提供这个 Java 库的旧库 KSoap 中。解决方案是使用 proguard用Ksoap2编写的。我下载了库,删除了重复的包并在build.gradle. 您也可以添加到proguard-rules.proline -ignorewarnings,但我不建议这样做。


更新


我还在构建日志中找到了以下几行:


Warning: okio.DeflaterSink: can't find referenced class org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement

Warning: okio.Okio: can't find referenced class org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement

Warning: okio.Okio: can't find referenced class org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement

在https://github.com/square/okio/issues/60 中,您可以看到此修复线:


-dontwarn okio.**

//img1.sycdn.imooc.com//6181f8ce0001100709550330.jpg

查看完整回答
反对 回复 2021-11-03
  • 1 回答
  • 0 关注
  • 219 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信