使用[java / lang / String]进行Proguard警告

时间:2017-11-24 10:54:36

标签: java android proguard

我正面临着proguard的问题。我在proguard中有一些规则,其中一个是:

-keep class org.jmrtd.** { *; }
-dontwarn org.jmrtd.**

但是在构建

时我收到了这个警告
Unexpected error while performing partial evaluation:
  Class       = [org/jmrtd/MRTDFileSystem]
  Method      = [readBinary(II)[B]
  Exception   = [java.lang.IllegalArgumentException] (Can't find common super class of [java/lang/String] (with 2 known super classes) and [org/jmrtd/MRTDFileSystem$MRTDFileInfo] (with 1 known super classes))
Unexpected error while preverifying:
  Class       = [org/jmrtd/MRTDFileSystem]
  Method      = [readBinary(II)[B]
  Exception   = [java.lang.IllegalArgumentException] (Can't find common super class of [java/lang/String] (with 2 known super classes) and [org/jmrtd/MRTDFileSystem$MRTDFileInfo] (with 1 known super classes))

任何人都可以帮助我吗? 谢谢。

1 个答案:

答案 0 :(得分:1)

看起来像库jar的问题。您确定所有库都配置正确吗? MRTDFileInfoMRTDFileSystem的内部类,可以在内部引用。

处理步骤如下:

  

输入Jar - > Strink - >优化 - >混淆 - > 预验证 - >输出罐

根据您的错误跟踪,您在预验证步骤中收到错误:预先验证时出现意外错误

如果你想跳过这个erorr你可以简单地使用预防Proguard来预先验证:

-dontpreverify

它将跳过预先验证,但我怀疑jar会正常运行

我建议你正确提供你的图书馆罐子,以便proguard可以参考它们。

除了-dontwarn之外,您还可以使用-ignorewarnings

希望这有助于调试问题。