Android,Proguard& XmlPullParser:NoSuchMethodError

时间:2012-08-07 16:48:12

标签: java android proguard xmlpullparser

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

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

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

以下是我的proguard.cfg文件的链接。

2 个答案:

答案 0 :(得分:0)

你混淆了一种你不应该拥有的方法。您需要保持pull解析器代码不变。添加:

-keep public class org.xmlpull.**

到你的proguard.cfg文件。

答案 1 :(得分: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文件解释了如何对类进行模糊处理。   您需要确保在提交后保留此信息   你的构建到市场,因为你需要这个来破译你的堆栈   痕迹。