8

使用 Android Studio:1.2.RC

我在 .gradle 中启用了 proguard:```

minifyEnabled=true

and added these rules to my proguard-rules.pro:

-dontwarn com.squareup.**
-dontwarn okio.**

and added these lint rules to my .gradle file:

warningsAsErrors false
abortOnError false
disable 'InvalidPackage'

```

但是当我尝试在调试模式下运行应用程序时,我仍然收到这些警告:

```
Warning: okio.DeflaterSink: can't find referenced class org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
Warning: okio.Okio: can't find referenced class java.nio.file.Files
Warning: okio.Okio: can't find referenced class java.nio.file.Files
Warning: okio.Okio: can't find referenced class java.nio.file.Files
Warning: okio.Okio: can't find referenced class java.nio.file.Path
Warning: okio.Okio: can't find referenced class java.nio.file.OpenOption
Warning: okio.Okio: can't find referenced class java.nio.file.Path
Warning: okio.Okio: can't find referenced class java.nio.file.OpenOption
Warning: okio.Okio: can't find referenced class org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
Warning: okio.Okio: can't find referenced class java.nio.file.Path
Warning: okio.Okio: can't find referenced class java.nio.file.OpenOption
Warning: okio.Okio: can't find referenced class java.nio.file.Path
Warning: okio.Okio: can't find referenced class java.nio.file.OpenOption
Warning: okio.Okio: can't find referenced class org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
Warning: there were 14 unresolved references to classes or interfaces.
         You may need to add missing library jars or update their versions.
         If your code works fine without the missing classes, you can suppress
         the warnings with '-dontwarn' options.
         (http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedclass)
:app:proguardDebug FAILED

```

太奇怪了,因为我还将这些规则/选项添加到了依赖于 OkHttp/Picasso 的所有库模块中,我不知道哪里出了问题,也许这是一个 Android Studio 错误?有人对这个问题有任何线索吗?

我在 github 上打开了一个问题。

4

2 回答 2

20

您已禁用警告

-dontwarn com.squareup.**
-dontwarn okio.**

但是对于包裹呢(如您发布的日志中所示)

-dontwarn org.codehaus
-dontwarn java.nio

无论哪种方式,忽略警告都不是一个好方法。

尝试防止这些类像这样被缩小:

-keep public class org.codehaus.**
-keep public class java.nio.**
于 2015-04-27T03:55:39.533 回答
2

哦,天哪,我忘了为我的调试版本指定 proguard 文件,添加“proguardFiles”规则可以解决问题:

    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
            debuggable false
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            applicationIdSuffix ".debug"
        }
    }

您努力寻找钥匙的那些时刻之一,它就在您的口袋里。

于 2015-04-28T02:10:44.203 回答