daimajia / AnimationEasingFunctions

Android Animation Easing Functions. Let's make animation more real!
MIT License
2.47k stars 410 forks source link

Proguard causes `NoSuchMethodException` #4

Closed landakram closed 9 years ago

landakram commented 9 years ago

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).

daimajia commented 9 years ago

Yeah, I'll do this today.

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

landakram commented 9 years ago

Thanks @daimajia!

ultimate-deej commented 8 years ago

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.

eirinaios commented 8 years ago

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

nikkorejz commented 7 years ago

Thanks, @ultimate-deej !