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

我最近在升级 gradle 和 android 依赖项后遇到了由使用 Proguard 转换类和资源导致的崩溃。我尝试了堆栈溢出中的所有解决方案(没有成功的结果)。

http://img.mukewang.com/6181f8ae00018d5617060318.jpg

如果有人可以帮助找到解决方案而无需降级 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'

            }

        }

    }


}



红颜莎娜
浏览 220回答 1
1回答

一只名叫tom的猫

当我尝试使用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.IgnoreJRERequirementWarning: okio.Okio: can't find referenced class org.codehaus.mojo.animal_sniffer.IgnoreJRERequirementWarning: okio.Okio: can't find referenced class org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement在https://github.com/square/okio/issues/60 中,您可以看到此修复线:-dontwarn okio.**
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java