0

我正在使用 XmlPullParser ,当应用程序通过Proguard,并且 apk 在设备上运行时,它给了我以下错误:

08-06 17:10:26.717: E/AndroidRuntime(2527):
   Caused by: java.lang.NoSuchMethodError: org.xmlpull.v1.XmlPullParser.d

我已-ignorewarnings在我的 proguard.cfg 中添加,否则无法通过Proguard.

这是我的proguard.cfg文件的链接。

4

2 回答 2

0

你混淆了你不应该有的方法。您需要保持拉解析器代码完整。添加:

-keep public class org.xmlpull.**

到您的 proguard.cfg 文件。

于 2012-08-07T17:16:43.153 回答
0

你在你的 proguard 配置文件中想要的是 -keep 而不是 -ignorewarnings

-keep class org.xmlpull.** { *; }

有关更多详细信息,请参阅以下网址

http://android-developers.blogspot.com/2010/09/proguard-android-and-licensing-server.html

但是等等,我的应用程序现在崩溃了

大多数崩溃的发生是因为 Proguard 混淆了您的应用程序需要的东西,例如在 AndroidManifest 或布局中引用的类,或者可能从 JNI 或反射调用的东西。此处提供的 Proguard 配置试图避免混淆大多数这些情况,但在边缘情况下,您最终可能会看到 ClassNotFoundException 之类的东西。

您可以对 procfg.txt 文件进行编辑以保留已被混淆的类。添加:

-keep public class * [my classname]

应该有帮助。有关如何防止 Proguard 混淆特定事物的更多信息,请参阅 Proguard 手册。具体来说,保留部分。为了安全起见,请尽量使您的应用程序保持尽可能少的内容。

procfg.txt 中提供的标准设置适用于许多应用程序,并且会捕获许多常见情况,但它们绝不是全面的。我们所做的其中一件事是让 Proguard 在 obf 目录中创建一堆输出文件来帮助您调试这些问题。

mapping.txt 文件解释了你的类是如何被混淆的。将构建提交到 Market 后,您需要确保保留它,因为您将需要它来破译您的堆栈跟踪。

于 2012-08-07T17:19:58.207 回答