带有proguard的Ksoap2

Posted

技术标签:

【中文标题】带有proguard的Ksoap2【英文标题】:Ksoap2 with proguard 【发布时间】:2014-02-02 06:17:59 【问题描述】:

我有一个使用 ksoap2 库的应用程序,一切正常,但是从 Eclipse 导出应用程序时,它显示了这个

Proguard returned with error code 1. See console
Note: there were 4 duplicate class definitions.
Warning: library class android.content.res.XmlResourceParser extends or implements program class org.xmlpull.v1.XmlPullParser
Warning: library class android.content.Intent depends on program class org.xmlpull.v1.XmlPullParser
Warning: library class android.content.IntentFilter depends on program class org.xmlpull.v1.XmlSerializer
Warning: library class android.content.IntentFilter depends on program class org.xmlpull.v1.XmlPullParser
Warning: library class android.content.res.ColorStateList depends on program class org.xmlpull.v1.XmlPullParser
Warning: library class android.graphics.drawable.AnimationDrawable depends on program class org.xmlpull.v1.XmlPullParser
Warning: library class android.graphics.drawable.BitmapDrawable depends on program class org.xmlpull.v1.XmlPullParser
Warning: library class android.graphics.drawable.ColorDrawable depends on program class org.xmlpull.v1.XmlPullParser
Warning: library class android.graphics.drawable.Drawable depends on program class org.xmlpull.v1.XmlPullParser
Warning: library class android.graphics.drawable.Drawable depends on program class org.xmlpull.v1.XmlPullParser
Warning: library class android.graphics.drawable.Drawable depends on program class org.xmlpull.v1.XmlPullParser
Warning: library class android.view.LayoutInflater depends on program class org.xmlpull.v1.XmlPullParser
Warning: library class android.view.LayoutInflater depends on program class org.xmlpull.v1.XmlPullParser

浏览ksoap2-android-assembly-3.1.1-jar-with-dependencies.jar 后,我发现它有自己的org.xmlpull.v1 包和4 个文件,这些文件自API 1 以来已经在android.jar 中定义。

如果这些类已经存在,ksoap 的作者为什么还要添加它们? O_o 如果他必须做一些更改,如果包名也被更改,那就太好了。

无论如何,我可以做两件事来解决这个问题。在 proguard 配置文件中使用 -dontwarn。这似乎不是一个好主意。或者下载源代码并删除该包名并构建一个 jar。

或者我还能做些什么?

谢谢

【问题讨论】:

【参考方案1】:

我有一个类似的问题,我用这个解决了它:

-ignorewarnings
-keep class org.kobjects.**  *; 
-keep class org.ksoap2.**  *; 
-keep class org.kxml2.**  *; 
-keep class org.xmlpull.**  *; 

【讨论】:

在guardsquare.com/en/products/proguard/manual/… 中写着:You should also not add libraries to your application that are already part of the Android runtime (notably ... org.xmlpull.v1, ...). They are possibly inconsistent, and the runtime libraries would get precedence anyway。它可以工作,但会忽略 ProGuard 警告。因此,最好更改库源,如接受的答案中所述。【参考方案2】:

在 Rar 或任何 Zip 应用程序中打开 .jar。删除xmlpull 文件夹。就是这样:)

【讨论】:

XMen W.K 我正在使用第三方的jar文件库,这里如何打开jar文件并删除“xmlpull”文件夹??????? 使用任何 Rar 或任何 Zip 应用程序@Srinivasan

以上是关于带有proguard的Ksoap2的主要内容,如果未能解决你的问题,请参考以下文章

带有重复 Zip 输入错误的 Proguard

使用带有 proguard 关闭力的 jsoup 关闭

带有自定义控件和自定义 StringProperty 的 Proguard

带有混淆和优化的 Guava 的 ProGuard 配置

带有外部 jar 的 Proguard 错误 - 返回错误代码 1

带有proguard的Ksoap2