Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Run time Error gradle minifyEnabled true #7

Closed
unxavi opened this issue May 28, 2016 · 4 comments
Closed

Run time Error gradle minifyEnabled true #7

unxavi opened this issue May 28, 2016 · 4 comments

Comments

@unxavi
Copy link

unxavi commented May 28, 2016

Hi mate,

Thanks a lot for the lib, is great and pretty simple. I love it. But I am finding a problem that i am not sure how to solve.

When I build my app with gradle "minifyEnabled true" it's fine, but when I use your lib, the app freezes in runtime when I call in the code

requestFactory.buildListRequest from the class RequestFactoryImpl

When working with retrofit or many other libraries, their documentation comes with information on how to set up the proguard-rules file with their lib.

Do you have any info on this? If I build my app with minifyEnabled true and debuggable true, but of course, no obfuscation is taking place

@AlexGilleran
Copy link
Owner

Can't say it's come up before - I'll put it on the TODO list, but for now maybe just try retrofit's list applied to the icesoap package?

Something like:

-dontwarn com.alexgilleran.icesoap.**
-keep class com.alexgilleran.icesoap.** { *; }
-keepattributes Signature
-keepattributes Exceptions
-keepattributes *Annotation*

@unxavi
Copy link
Author

unxavi commented May 29, 2016

Hi Mate,

Thanks for the quick answer.

Well, first when I do the minifyEnable true, I have to keep this classes in order to compile:

-keep class org.dom4j.* { ; }
-dontwarn org.dom4j.

-keep class org.jdom.* { ; }
-dontwarn org.jdom.

-keep class nu.xom.* { ; }
-dontwarn nu.xom.

-keep class org.w3c.dom.** { ; }
-dontwarn org.w3c.dom.

because if I dont do, when minify it says it will lose references.

No I have add what you said in the last post, and it looks better, but I get this execption

05-29 08:58:55.434 26724-26724/? E/AndroidRuntime: FATAL EXCEPTION: main Process: es.myapp.example, PID: 26724 java.lang.RuntimeException: Unable to start activity ComponentInfo{es.myapp.example/es.myapp.example.ui.urgent.UrgentActivity}: com.alexgilleran.icesoap.exception.ClassDefException: The xpath expression //st_poblacion_coord specified for UrgentCity was an invalid XPath expression at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) at android.app.ActivityThread.-wrap11(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) Caused by: com.alexgilleran.icesoap.exception.ClassDefException: The xpath expression //st_poblacion_coord specified for UrgentCity was an invalid XPath expression at com.alexgilleran.icesoap.parser.impl.BaseIceSoapParserImpl.compileXPath(Unknown Source) at com.alexgilleran.icesoap.parser.impl.BaseIceSoapParserImpl.compileXPath(Unknown Source) at com.alexgilleran.icesoap.parser.impl.BaseIceSoapParserImpl.retrieveRootXPaths(Unknown Source) at com.alexgilleran.icesoap.parser.impl.IceSoapListParserImpl.<init>(Unknown Source) at com.alexgilleran.icesoap.request.impl.ListRequestImpl.<init>(Unknown Source) at com.alexgilleran.icesoap.request.impl.SOAP11ListRequestImpl.<init>(Unknown Source) at com.alexgilleran.icesoap.request.impl.RequestFactoryImpl.buildListRequest(Unknown Source) at es.myapp.example.soap.a.a(Unknown Source) at es.myapp.example.ui.urgent.g.a(Unknown Source) at es.myapp.example.ui.urgent.UrgentActivityFragment.onCreateView(Unknown Source) at android.support.v4.app.Fragment.performCreateView(Unknown Source) at android.support.v4.app.aq.a(Unknown Source) at android.support.v4.app.aq.a(Unknown Source) at android.support.v4.app.s.run(Unknown Source) at android.support.v4.app.aq.e(Unknown Source) at android.support.v4.app.am.o(Unknown Source) at android.support.v4.app.ah.onStart(Unknown Source) at es.myapp.example.ui.urgent.UrgentActivity.onStart(Unknown Source) at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1237) at android.app.Activity.performStart(Activity.java:6268) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2379) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)  at android.app.ActivityThread.-wrap11(ActivityThread.java)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)  at android.os.Handler.dispatchMessage(Handler.java:102)  at android.os.Looper.loop(Looper.java:148)  at android.app.ActivityThread.main(ActivityThread.java:5417)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  Caused by: com.alexgilleran.icesoap.exception.XPathParsingException: org.b.a.b: org.jaxen.saxpath.base.XPathReader at com.alexgilleran.icesoap.xpath.XPathFactory.compile(Unknown Source) at com.alexgilleran.icesoap.parser.impl.BaseIceSoapParserImpl.compileXPath(Unknown Source)  at com.alexgilleran.icesoap.parser.impl.BaseIceSoapParserImpl.compileXPath(Unknown Source)  at com.alexgilleran.icesoap.parser.impl.BaseIceSoapParserImpl.retrieveRootXPaths(Unknown Source)  at com.alexgilleran.icesoap.parser.impl.IceSoapListParserImpl.<init>(Unknown Source)  at com.alexgilleran.icesoap.request.impl.ListRequestImpl.<init>(Unknown Source)  at com.alexgilleran.icesoap.request.impl.SOAP11ListRequestImpl.<init>(Unknown Source)  at com.alexgilleran.icesoap.request.impl.RequestFactoryImpl.buildListRequest(Unknown Source)  at es.myapp.example.soap.a.a(Unknown Source)  at es.myapp.example.ui.urgent.g.a(Unknown Source)  at es.myapp.example.ui.urgent.UrgentActivityFragment.onCreateView(Unknown Source)  at android.support.v4.app.Fragment.performCreateView(Unknown Source)  at android.support.v4.app.aq.a(Unknown Source)  at android.support.v4.app.aq.a(Unknown Source)  at android.support.v4.app.s.run(Unknown Source)  at android.support.v4.app.aq.e(Unknown Source)  at android.support.v4.app.am.o(Unknown Source)  at android.support.v4.app.ah.onStart(Unknown Source)  at es.myapp.example.ui.urgent.UrgentActivity.onStart(Unknown Source)  at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1237)  at android.app.Activity.performStart(Activity.java:6268)  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2379)  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)  at android.app.ActivityThread.-wrap11(ActivityThread.java)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)  at android.os.Handler.dispatchMessage(Handler.java:102)  at android.os.Looper.loop(Looper.java:148)  at android.app.ActivityThread.main(ActivityThread.java:5417)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  Caused by: org.b.a.b: org.jaxen.saxpath.base.XPathReader at org.b.a.a.a.a(Unknown Source) at org.b.a.a.a.a(Unknown Source) at com.alexgilleran.icesoap.xpath.XPathFactory.compile(Unknown Source)  at com.alexgilleran.icesoap.parser.impl.BaseIceSoapParserImpl.compileXPath(Unknown Source)  at com.alexgilleran.icesoap.parser.impl.BaseIceSoapParserImpl.compileXPath(Unknown Source)  at com.alexgilleran.icesoap.parser.impl.BaseIceSoapParserImpl.retrieveRootXPaths(Unknown Source)  at com.alexgilleran.icesoap.parser.impl.IceSoapListParserImpl.<init>(Unknown Source)  at com.alexgilleran.icesoap.request.impl.ListRequestImpl.<init>(Unknown Source)  at com.alexgilleran.icesoap.request.impl.SOAP11ListRequestImpl.<init>(Unknown Source)  at com.alexgilleran.icesoap.request.impl.RequestFactoryImpl.buildListRequest(Unknown Source)  at es.myapp.example.soap.a.a(Unknown Source)  at es.myapp.example.ui.urgent.g.a(Unknown Source)  at es.myapp.example.ui.urgent.UrgentActivityFragment.onCreateView(Unknown Source)  at android.support.v4.app.Fragment.performCreateView(Unknown Source)  at android.support.v4.app.aq.a(Unknown Source)  at android.support.v4.app.aq.a(Unknown Source)  at android.support.v4.app.s.run(Unknown Source)  at android.support.v4.app.aq.e(Unknown Source)  at android.support.v4.app.am.o(Unknown Source)  at android.support.v4.app.ah.onStart(Unknown Source)  at es.myapp.example.ui.urgent.UrgentActivity.onStart(Unknown Source)  at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1237)  at android.app.Activity.performStart(Activity.java:6268)  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2379)  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)  at android.app.ActivityThread.-wrap11(ActivityThread.java)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)  at android.os.Handler.dispatchMessage(Handler.java:102)  at android.os.Looper.loop(Looper.java:148)  at android.app.ActivityThread.main(ActivityThread.java:5417)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  Caused by: java.lang.ClassNotFoundException: org.jaxen.saxpath.base.XPathReader at java.lang.Class.classForName(Native Method) at java.lang.Class.forName(Class.java:324) at org.b.a.a.a.a(Unknown Source)  at org.b.a.a.a.a(Unknown Source)  at com.alexgilleran.icesoap.xpath.XPathFactory.compile(Unknown Source)  at com.alexgilleran.icesoap.parser.impl.BaseIceSoapParserImpl.compileXPath(Unknown Source)  at com.alexgilleran.icesoap.parser.impl.BaseIceSoapParserImpl.compileXPath(Unknown Source)  at com.alexgilleran.icesoap.parser.impl.BaseIceSoapParserImpl.retrieveRootXPaths(Unknown Source)  at com.alexgilleran.icesoap.parser.impl.IceSoapListParserImpl.<init>(Unknown Source)  at com.alexgilleran.icesoap.request.impl.ListRequestImpl.<init>(Unknown Source)  at com.alexgilleran.icesoap.request.impl.SOAP11ListRequestImpl.<init>(Unknown Source)  at com.alexgilleran.icesoap.request.impl.RequestFactoryImpl.buildListRequest(Unknown Source)  at es.myapp.example.soap.a.a(Unknown Source)  at es.myapp.example.ui.urgent.g.a(Unknown Source)  at es.myapp.example.ui.urgent.UrgentActivityFragment.onCreateView(Unknown Source)  at android.support.v4.app.Fragment.performCreateView(Unknown Source)  at android.support.v4.app.aq.a(Unknown Source)  at android.support.v4.app.aq.a(Unknown Source)  at android.support.v4.app.s.run(Unknown Source)  at android.support.v4.app.aq.e(Unknown Source)  at android.support.v4.app.am.o(Unknown Source)  at android.support.v4.app.ah.onStart(Unknown Source)  at es.myapp.example.ui.urgent.UrgentActivity.onStart(Unknown Source)  at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1237)  at android.app.Activity.performStart(Activity.java:6268)  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2379)  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)  at android.app.ActivityThread.-wrap11(ActivityThread.java)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)  at android.os.Handler.dispatchMessage(Handler.java:102)  at android.os.Looper.loop(Looper.java:148)  at android.app.ActivityThread.main(ActivityThread.java:5417)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  Caused by: java.lang.ClassNotFoundException: Didn't find class "org.jaxen.saxpath.base.XPathReader" on path: DexPathList[[zip file "/data/app/es.myapp.example-2/base.apk"],nativeLibraryDirectories=[/data/app/es.myapp.example-2/lib/arm, /vendor/lib, /system/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) at java.lang.ClassLoader.loadClass(ClassLoader.java:511) at java.lang.ClassLoader.loadClass(ClassLoader.java:469) at java.lang.Class.classForName(Native Method)  at java.lang.Class.forName(Class.java:324)  at org.b.a.a.a.a(Unknown Source)  at org.b.a.a.a.a(Unknown Source)  at com.alexgilleran.icesoap.xpath.XPathFactory.compile(Unknown Source)  at com.alexgilleran.icesoap.parser.impl.BaseIceSoapParserImpl.compileXPath(Unknown Source)  at com.alexgilleran.icesoap.parser.impl.BaseIceSoapParserImpl.compileXPath(Unknown Source)  at com.alexgilleran.icesoap.parser.impl.BaseIceSoapParserImpl.retrieveRootXPaths(Unknown Source)  at com.alexgilleran.icesoap.parser.impl.IceSoapListParserImpl.<init>(Unknown Source)  at com.alexgilleran.icesoap.request.impl.ListRequestImpl.<init>(Unknown Source)  at com.alexgilleran.icesoap.request.impl.SOAP11ListRequestImpl.<init>(Unknown Source)  at com.alexgilleran.icesoap.request.impl.RequestFactoryImpl.buildListRequest(Unknown Source)  at es.myapp.example.soap.a.a(Unknown Source)  at es.myapp.example.ui.urgent.g.a(Unknown Source)  at es.myapp.example.ui.urgent.UrgentActivityFragment.onCreateView(Unknown Source)  at android.support.v4.app.Fragment.performCreateView(Unknown Source)  at android.support.v4.app.aq.a(Unknown Source)  at android.support.v4.app.aq.a(Unknown Source)  at android.support.v4.app.s.run(Unknown Source)  at android.support.v4.app.aq.e(Unknown Source)  at android.support.v4.app.am.o(Unknown Source)  at android.support.v4.app.ah.onStart(Unknown Source)  at es.myapp.example.ui.urgent.UrgentActivity.onStart(Unknown Source)  at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1237)  at android.app.Activity.performStart(Activity.java:6268)  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2379)  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)  at android.app.ActivityThread.-wrap11(ActivityThread.java)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)  at android.os.Handler.dispatchMessage(Handler.java:102)  at android.os.Looper.loop(Looper.java:148)  at android.app.ActivityThread.main(ActivityThread.java:5417)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  Suppressed: java.lang.ClassNotFoundException: org.jaxen.saxpath.base.XPathReader at java.lang.Class.classForName(Native Method) at java.lang.BootClassLoader.findClass(ClassLoader.java:781) at java.lang.BootClassLoader.loadClass(ClassLoader.java:841) at java.lang.ClassLoader.loadClass(ClassLoader.java:504) ... 36 more Caused by: java.lang.NoClassDefFoundError: Class not found usi

Is it possible that you use reflection in the library and the gradle minify just takes out some classes that you need?

Thanks a lot

@unxavi
Copy link
Author

unxavi commented May 29, 2016

Hi,

I made it work, but I had to add a lot of things, I think I am doing something wrong.

For the proguard rules I added

`-dontwarn com.alexgilleran.icesoap.**
-keep class com.alexgilleran.icesoap.** { ; }
-keepattributes Signature
-keepattributes Exceptions
-keepattributes *Annotation

-keep class org.dom4j.* { ; }
-dontwarn org.dom4j.

-keepattributes Signature
-keepattributes Exceptions
-keepattributes Annotation

-keep class org.jdom.* { ; }
-dontwarn org.jdom.

-keepattributes Signature
-keepattributes Exceptions
-keepattributes Annotation

-keep class nu.xom.* { ; }
-dontwarn nu.xom.

-keepattributes Signature
-keepattributes Exceptions
-keepattributes Annotation

-keep class org.w3c.dom.** { ; }
-dontwarn org.w3c.dom.

-keepattributes Signature
-keepattributes Exceptions
-keepattributes Annotation

-keep class org.jaxen.saxpath.base.** { ; }
-dontwarn org.jaxen.saxpath.base.

-keepattributes Signature
-keepattributes Exceptions
-keepattributes Annotation`

Maybe I can take out some of the keepattributes, but the keep I think thery are needed.

@AlexGilleran
Copy link
Owner

Yeah you'll probably need at least the keep class for Jaxen as evidently it uses Class.forName somewhere.

I'm pretty sure the keepattributes lines only need to be specified once in the whole file though rather than once for each keep class ?

@unxavi unxavi closed this as completed Mar 9, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants