SimpleXML Error on Lenovo P90

We have a problem with using obfuscation of SimpleXml and Proguards on one (while we found only one) specific device. This is Lenovo P90.

On every other device, the application still works. Also, when I turn on obfuscation, the application works fine.

Login from device:

 W/dalvikvm: VFY: unable to resolve static method 873: Ljavax/xml/stream/XMLInputFactory;.newInstance ()Ljavax/xml/stream/XMLInputFactory;
 D/dalvikvm: VFY: replacing opcode 0x71 at 0x0003
 W/dalvikvm: VFY: unable to find class referenced in signature (Ljavax/xml/stream/XMLEventReader;)
 W/dalvikvm: VFY: unable to find class referenced in signature (Ljavax/xml/stream/XMLEventReader;)
 I/dalvikvm: Could not find method javax.xml.stream.XMLInputFactory.createXMLEventReader, referenced from method org.simpleframework.xml.stream.StreamProvider.provide
 W/dalvikvm: VFY: unable to resolve virtual method 871: Ljavax/xml/stream/XMLInputFactory;.createXMLEventReader (Ljava/io/InputStream;)Ljavax/xml/stream/XMLEventReader;
 D/dalvikvm: VFY: replacing opcode 0x6e at 0x0002
 I/dalvikvm: Could not find method javax.xml.stream.XMLInputFactory.createXMLEventReader, referenced from method org.simpleframework.xml.stream.StreamProvider.provide
 W/dalvikvm: VFY: unable to resolve virtual method 872: Ljavax/xml/stream/XMLInputFactory;.createXMLEventReader (Ljava/io/Reader;)Ljavax/xml/stream/XMLEventReader;
 D/dalvikvm: VFY: replacing opcode 0x6e at 0x0002
 W/dalvikvm: WARNING: could not find annotation member b in Lorg/simpleframework/xml/ElementList;
 E/dalvikvm: Failed creating annotation element (m=0x4f29bc50 n=0x4f29bc30 a=0x0 r=0x0)
 E/KBMB:SimpleRestJob2: java.lang.RuntimeException: failure in processEncodedAnnotation
retrofit.RetrofitError: java.lang.RuntimeException: failure in processEncodedAnnotation
      at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:383)
      at retrofit.RestAdapter$RestHandler.invoke(RestAdapter.java:240)
      at $Proxy18.a(Native Method)
      at cz.kb.mba.core.contacts.dataaccess.ContactsProcessorImpl.a(ContactsProcessorImpl.java:41)
      at cz.kb.mba.core.contacts.dataaccess.ContactsProcessorImpl.a(ContactsProcessorImpl.java:28)
      at cz.kb.mba.core.shared.rest.dataaccess.UnsecuredRestProcessorImpl2$1.a(UnsecuredRestProcessorImpl2.java:45)
      at cz.kb.mba.core.shared.rest.dataaccess.job.SimpleRestJob2.run(SimpleRestJob2.java:34)
      at cz.kb.mba.core.shared.rest.dataaccess.RestJobExecutor$1.c(RestJobExecutor.java:37)
      at com.path.android.jobqueue.BaseJob.a(BaseJob.java:108)
      at com.path.android.jobqueue.JobHolder.a(JobHolder.java:60)
      at com.path.android.jobqueue.executor.JobConsumerExecutor$JobConsumer.run(JobConsumerExecutor.java:201)
      at java.lang.Thread.run(Thread.java:841)

  Caused by: retrofit.converter.ConversionException: java.lang.RuntimeException: failure in processEncodedAnnotation
      at retrofit.converter.SimpleXMLConverter.fromBody(SimpleXMLConverter.java:50)
      at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:367)
      at retrofit.RestAdapter$RestHandler.invoke(RestAdapter.java:240) 
      at $Proxy18.a(Native Method) 
      at cz.kb.mba.core.contacts.dataaccess.ContactsProcessorImpl.a(ContactsProcessorImpl.java:41) 
      at cz.kb.mba.core.contacts.dataaccess.ContactsProcessorImpl.a(ContactsProcessorImpl.java:28) 
      at cz.kb.mba.core.shared.rest.dataaccess.UnsecuredRestProcessorImpl2$1.a(UnsecuredRestProcessorImpl2.java:45) 
      at cz.kb.mba.core.shared.rest.dataaccess.job.SimpleRestJob2.run(SimpleRestJob2.java:34) 
      at cz.kb.mba.core.shared.rest.dataaccess.RestJobExecutor$1.c(RestJobExecutor.java:37) 
      at com.path.android.jobqueue.BaseJob.a(BaseJob.java:108) 
      at com.path.android.jobqueue.JobHolder.a(JobHolder.java:60) 
      at com.path.android.jobqueue.executor.JobConsumerExecutor$JobConsumer.run(JobConsumerExecutor.java:201) 
                                                                      at java.lang.Thread.run(Thread.java:841) 

Caused by: java.lang.RuntimeException: failure in processEncodedAnnotation
      at java.lang.reflect.Field.getDeclaredAnnotations(Native Method)
      at java.lang.reflect.Field.getDeclaredAnnotations(Field.java:201)
      at org.simpleframework.xml.core.FieldDetail.<init>(FieldDetail.java:57)
      at org.simpleframework.xml.core.DetailScanner.fields(DetailScanner.java:428)
      at org.simpleframework.xml.core.DetailScanner.scan(DetailScanner.java:367)
      at org.simpleframework.xml.core.DetailScanner.<init>(DetailScanner.java:140)
      at org.simpleframework.xml.core.DetailExtractor.getDetail(DetailExtractor.java:107)
      at org.simpleframework.xml.core.Support.getDetail(Support.java:278)
      at org.simpleframework.xml.core.Support.getDetail(Support.java:271)
      at org.simpleframework.xml.core.ScannerFactory.getInstance(ScannerFactory.java:76)
      at org.simpleframework.xml.core.Support.getScanner(Support.java:357)
      at org.simpleframework.xml.core.Source.getScanner(Source.java:271)
      at org.simpleframework.xml.core.Source.getSchema(Source.java:317)
      at org.simpleframework.xml.core.Composite.read(Composite.java:198)
      at org.simpleframework.xml.core.Composite.read(Composite.java:148)
      at org.simpleframework.xml.core.Traverser.read(Traverser.java:92)
      at org.simpleframework.xml.core.Persister.read(Persister.java:625)
      at org.simpleframework.xml.core.Persister.read(Persister.java:606)
      at org.simpleframework.xml.core.Persister.read(Persister.java:584)
      at org.simpleframework.xml.core.Persister.read(Persister.java:543)
      at retrofit.converter.SimpleXMLConverter.fromBody(SimpleXMLConverter.java:48)
      at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:367) 
      at retrofit.RestAdapter$RestHandler.invoke(RestAdapter.java:240) 
      at $Proxy18.a(Native Method) 
      at cz.kb.mba.core.contacts.dataaccess.ContactsProcessorImpl.a(ContactsProcessorImpl.java:41) 
      at cz.kb.mba.core.contacts.dataaccess.ContactsProcessorImpl.a(ContactsProcessorImpl.java:28) 
      at cz.kb.mba.core.shared.rest.dataaccess.UnsecuredRestProcessorImpl2$1.a(UnsecuredRestProcessorImpl2.java:45) 
      at cz.kb.mba.core.shared.rest.dataaccess.job.SimpleRestJob2.run(SimpleRestJob2.java:34) 
      at cz.kb.mba.core.shared.rest.dataaccess.RestJobExecutor$1.c(RestJobExecutor.java:37) 
      at com.path.android.jobqueue.BaseJob.a(BaseJob.java:108) 
      at com.path.android.jobqueue.JobHolder.a(JobHolder.java:60) 
      at com.path.android.jobqueue.executor.JobConsumerExecutor$JobConsumer.run(JobConsumerExecutor.java:201) 
      at java.lang.Thread.run(Thread.java:841) 

Here are some important parts of the project / assembly configuration Import SimpleXml:

compile('com.squareup.retrofit:converter-simplexml:1.9.0') {
    exclude module: 'stax'
    exclude module: 'stax-api'
    exclude module: 'xpp3'
}

Proguard configuration for simplexml (I googled more rules, but nothing works so far):

# simplexml
-dontwarn org.simpleframework.xml.stream.StreamProvider
-dontwarn org.simpleframework.xml.stream.StreamReader*
-keep class org.simpleframework.xml.core.**{ *; }
+4
source share

Source: https://habr.com/ru/post/1652847/


All Articles