daimajia / AnimationEasingFunctions

Android Animation Easing Functions. Let's make animation more real!

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Proguard causes `NoSuchMethodException`

landakram opened this issue · comments

Hey! Just want to say first that I really appreciate your work.

I'm using this library in an application and found a bug when using proguard. Without any changes to the proguard.project.txt file, I get this error when trying to use the animations:

W/System.err(22899): java.lang.NoSuchMethodException: <init> [float]
W/System.err(22899):    at java.lang.Class.getConstructorOrMethod(Class.java:472)
W/System.err(22899):    at java.lang.Class.getConstructor(Class.java:446)
W/System.err(22899):    at com.daimajia.easing.Skill.a(SourceFile:104)
W/System.err(22899):    at com.daimajia.easing.Glider.a(SourceFile:33)

I worked around this by adding to my proguard-project.txt file:

-keep class com.daimajia.easing.** { *; }
-keep interface com.daimajia.easing.** { *; }

It might be helpful to add this to documentation (like the README).

Yeah, I'll do this today.

Thanks for your feedback. (SORRY FOR MY LATE REPLY). :-D

I've encountered exactly the same issue today.
The following rule helped me:

-keepclassmembers public class * extends com.daimajia.easing.BaseEasingMethod {
    public <init>(...);
}

The source of the problem is that constructors are called indirectly. This rule prevents proguard from removing constructors instead of forcing it to keep everything.

Thank you so much @ultimate-deej! You saved my day!