【问题标题】:How to fix warning 'can't find referenced class' in Android Eclipse ProGuard Rule?如何修复 Android Eclipse ProGuard 规则中的警告“找不到引用的类”?
【发布时间】:2016-04-20 07:45:03
【问题描述】:

我正在使用 Eclipse。在我的 Android 代码中,我使用了 ProGuard。但是在导出 APK 时,我遇到了以下警告:

Proguard returned with error code 1. See console
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
       You should check if you need to specify additional program jars.
Warning: there were 14 unresolved references to classes or interfaces.
          You may need to specify additional library jars (using '-libraryjars').
java.io.IOException: Please correct the above warnings first.
at proguard.Initializer.execute(Initializer.java:321)
at proguard.ProGuard.initialize(ProGuard.java:211)
at proguard.ProGuard.execute(ProGuard.java:86)
at proguard.ProGuard.main(ProGuard.java:492)

怎么了?

【问题讨论】:

    标签: android android-proguard


    【解决方案1】:

    您可以通过修改“progaurd-rules.pro”来解决这个问题,这似乎是您正在使用 Progaurd 来收缩您的代码。

    您必须使用-dontwarn,但在将其添加到proguard 文件之前要小心,因为Proguard 已经删除了一些未使用的类,因此测试不会出错

    对于 OKiO,添加这些行

    -dontwarn java.nio.file.*
    -dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
    -dontwarn okio.**
    

    对于任何其他库,您可以查看此链接以进行进一步的 proguard 操作 https://github.com/krschultz/android-proguard-snippets

    【讨论】:

      【解决方案2】:

      从 android-proguard-sn-ps 添加 Okio 规则可能会更好:

      # Okio
      -keep class sun.misc.Unsafe { *; }
      -dontwarn java.nio.file.*
      -dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
      -dontwarn okio.**
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-12-22
        • 1970-01-01
        • 2017-06-05
        • 2014-07-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-20
        相关资源
        最近更新 更多