【问题标题】:Ksoap2 with proguard带有proguard的Ksoap2
【发布时间】: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。

或者我还能做些什么?

谢谢

【问题讨论】:

    标签: android eclipse proguard ksoap2


    【解决方案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
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-11
    相关资源
    最近更新 更多