如何在ProGuard中使用-dontwarn?

mor*_*rya 33 android proguard

我正在使用android studio来构建调试和发布应用程序.当我构建调试/发布应用程序时

./gradlew assembleDebug

./gradlew assembleRelease
Run Code Online (Sandbox Code Playgroud)

这两个版本都是完美创建并运行的.显示调试或发布的相应对话框

现在我在build.gradle中添加了proguard详细信息:

signingConfigs {
    myConfig {
           storeFile file("keystore.jks")
           storePassword "abc123!"
           keyAlias "androidreleasekey"
           keyPassword "pqrs123!"
    }
}

buildTypes {
    release {
        runProguard true
        proguardFile getDefaultProguardFile('proguard-android-optimize.txt')
        signingConfig signingConfigs.myConfig
    }
}
productFlavors {
    defaultFlavor {
        proguardFile 'proguard-rules.txt'
    }
}
Run Code Online (Sandbox Code Playgroud)

现在它在事件日志中显示错误为

警告:有7个未解析的类或接口引用.您可能需要添加缺少的库jar或更新其版本.如果您的代码在没有缺少类的情况下正常工作,则可以使用"-dontwarn"选项来禁止警告.(http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedclass)

警告:程序类成员有2个未解析的引用.您的输入类似乎不一致.您可能需要重新编译代码.

(http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedprogramclassmember):Flash销售:proguardDefaultFlavorRelease FAILED

如果我将runProguard选项设置为false然后运行它.

我有这些问题:

1)用runProguard = false发布apk是否可以?

2)如何在创建发布版本时使用dontwarn?

swi*_*Boy 28

当我向项目添加新的lib时通常这我需要为Progaurd定义.

假设我正在使用Twitter4J lib,那么我就这样添加dontwarn.

-keep class twitter4j.​​*{*; }

-dontwarn twitter4j.​​*

  • 你在哪里添加这个? (7认同)
  • 注意:写`-keep class some.library.** { *; }` 对于你的所有库来说就像根本不使用 ProGuard 一样。 (3认同)
  • “未解决的引用”警告是否表示Proguard确实删除了这些类?我不应该过滤这些内容然后不进行通知吗? (2认同)
  • 我可以使用-dontwarn*.**吗? (2认同)