如何在ProGuard中使用-dontwarn?

时间:2014-01-14 20:55:46

标签: android proguard

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

./gradlew assembleDebug

./gradlew assembleRelease

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

现在我在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'
    }
}

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

  

警告:有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?

2 个答案:

答案 0 :(得分:27)

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

假设我使用的是Twitter4J lib,然后我就这样添加了dwiwarn。

  

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

     

-dontwarn twitter4j。​​*

答案 1 :(得分:0)

将-dontwarn行放入proguard-rules.pro或proguard-rules.txt文件中。

由于没有答案包含此信息,因此不得不在其他地方使用Google。查看其他答案以了解您所需的具体情况。