glomadrian / Grav

Configurable animations based on points

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Crash with ProGuard active.

ProMode7 opened this issue · comments

I am using the library and it works fine normally but when I applied the proguard to my project, the app is crashing with this error :

06-15 17:40:09.843 30205-30205/com.myapp W/System.err: java.lang.ClassNotFoundException: com.github.glomadrian.grav.generator.paint.ArrayColorGenerator
06-15 17:40:09.843 30205-30205/com.myapp W/System.err: at java.lang.Class.classForName(Native Method)
06-15 17:40:09.843 30205-30205/com.myapp W/System.err: at java.lang.Class.forName(Class.java:400)
06-15 17:40:09.843 30205-30205/com.myapp W/System.err: at java.lang.Class.forName(Class.java:326)
06-15 17:40:09.843 30205-30205/com.myapp W/System.err: at com.github.glomadrian.grav.c.a.a(ClassUtil.java:12)
06-15 17:40:09.843 30205-30205/com.myapp W/System.err: at com.github.glomadrian.grav.b.a.a(GeneratorFactory.java:27)
06-15 17:40:09.843 30205-30205/com.myapp W/System.err: at com.github.glomadrian.grav.GravView.a(GravView.java:53)
06-15 17:40:09.843 30205-30205/com.myapp W/System.err: at com.github.glomadrian.grav.GravView.(GravView.java:39)
06-15 17:40:09.843 30205-30205/com.myapp W/System.err: at java.lang.reflect.Constructor.newInstance0(Native Method)
06-15 17:40:09.843 30205-30205/com.myapp W/System.err: at java.lang.reflect.Constructor.newInstance(Constructor.java:430)
06-15 17:40:09.843 30205-30205/com.myapp W/System.err: at android.view.LayoutInflater.createView(LayoutInflater.java:645)
06-15 17:40:09.843 30205-30205/com.myapp W/System.err: at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:787)
06-15 17:40:09.843 30205-30205/com.myapp W/System.err: at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727)
06-15 17:40:09.844 30205-30205/com.myapp W/System.err: at android.view.LayoutInflater.rInflate(LayoutInflater.java:858)
06-15 17:40:09.844 30205-30205/com.myapp W/System.err: at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
06-15 17:40:09.844 30205-30205/com.myapp W/System.err: at android.view.LayoutInflater.inflate(LayoutInflater.java:518)
06-15 17:40:09.844 30205-30205/com.myapp W/System.err: at android.view.LayoutInflater.inflate(LayoutInflater.java:426)
06-15 17:40:09.844 30205-30205/com.myapp W/System.err: at android.view.LayoutInflater.inflate(LayoutInflater.java:377)
06-15 17:40:09.844 30205-30205/com.myapp W/System.err: at android.support.v7.app.k.b(AppCompatDelegateImplV9.java:292)
06-15 17:40:09.844 30205-30205/com.myapp W/System.err: at android.support.v7.app.c.setContentView(AppCompatActivity.java:140)
06-15 17:40:09.844 30205-30205/com.myapp W/System.err: at com.myapp.SplashActivity.onCreate(SplashActivity.java:42)
06-15 17:40:09.844 30205-30205/com.myapp W/System.err: at android.app.Activity.performCreate(Activity.java:6684)
06-15 17:40:09.844 30205-30205/com.myapp W/System.err: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
06-15 17:40:09.844 30205-30205/com.myapp W/System.err: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2637)
06-15 17:40:09.844 30205-30205/com.myapp W/System.err: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2751)
06-15 17:40:09.844 30205-30205/com.myapp W/System.err: at android.app.ActivityThread.-wrap12(ActivityThread.java)
06-15 17:40:09.844 30205-30205/com.myapp W/System.err: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1496)
06-15 17:40:09.844 30205-30205/com.myapp W/System.err: at android.os.Handler.dispatchMessage(Handler.java:102)
06-15 17:40:09.844 30205-30205/com.myapp W/System.err: at android.os.Looper.loop(Looper.java:154)
06-15 17:40:09.844 30205-30205/com.myapp W/System.err: at android.app.ActivityThread.main(ActivityThread.java:6186)
06-15 17:40:09.844 30205-30205/com.myapp W/System.err: at java.lang.reflect.Method.invoke(Native Method)
06-15 17:40:09.844 30205-30205/com.myapp W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
06-15 17:40:09.844 30205-30205/com.myapp W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
06-15 17:40:09.844 30205-30205/com.myapp W/System.err: Caused by: java.lang.ClassNotFoundException: Didn't find class "com.github.glomadrian.grav.generator.paint.ArrayColorGenerator" on path: DexPathList[[zip file "/data/app/com.myapp-1/base.apk"],nativeLibraryDirectories=[/data/app/com.myapp-1/lib/arm64, /data/app/com.myapp-1/base.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64]]
06-15 17:40:09.844 30205-30205/com.myapp W/System.err: at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
06-15 17:40:09.844 30205-30205/com.myapp W/System.err: at java.lang.ClassLoader.loadClass(ClassLoader.java:380)
06-15 17:40:09.844 30205-30205/com.myapp W/System.err: at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
06-15 17:40:09.844 30205-30205/com.myapp W/System.err: ... 32 more
}

java.lang.RuntimeException: Unable to start activity ComponentInfo

{com.myapp/com.myapp.SplashActivity}: android.view.InflateException: Binary XML file line #48: Binary XML file line #48: Error inflating class com.github.glomadrian.grav.GravView
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2684)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2751)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1496)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6186)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
Caused by: android.view.InflateException: Binary XML file line #48: Binary XML file line #48: Error inflating class com.github.glomadrian.grav.GravView
Caused by: android.view.InflateException: Binary XML file line #48: Error inflating class com.github.glomadrian.grav.GravView
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.newInstance0(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:430)
at android.view.LayoutInflater.createView(LayoutInflater.java:645)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:787)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:858)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
at android.view.LayoutInflater.inflate(LayoutInflater.java:518)
at android.view.LayoutInflater.inflate(LayoutInflater.java:426)
at android.view.LayoutInflater.inflate(LayoutInflater.java:377)
at android.support.v7.app.k.b(AppCompatDelegateImplV9.java:292)
at android.support.v7.app.c.setContentView(AppCompatActivity.java:140)
at com.myapp.SplashActivity.onCreate(SplashActivity.java:42)
at android.app.Activity.performCreate(Activity.java:6684)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2637)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2751)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1496)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6186)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'void com.github.glomadrian.grav.b.c.a.a(android.util.AttributeSet, android.content.Context)' on a null object reference
at com.github.glomadrian.grav.b.a.a(GeneratorFactory.java:28)
at com.github.glomadrian.grav.GravView.a(GravView.java:53)
at com.github.glomadrian.grav.GravView.<init>(GravView.java:39)
at java.lang.reflect.Constructor.newInstance0(Native Method) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:430) 
at android.view.LayoutInflater.createView(LayoutInflater.java:645) 
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:787) 
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727) 
at android.view.LayoutInflater.rInflate(LayoutInflater.java:858) 
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:518) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:426) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:377) 
at android.support.v7.app.k.b(AppCompatDelegateImplV9.java:292) 
at android.support.v7.app.c.setContentView(AppCompatActivity.java:140) 
at com.myapp.SplashActivity.onCreate(SplashActivity.java:42) 
at android.app.Activity.performCreate(Activity.java:6684) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2637) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2751) 
at android.app.ActivityThread.-wrap12(ActivityThread.java) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1496) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:154) 
at android.app.ActivityThread.main(ActivityThread.java:6186) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779) 

The xml integration is like this :

<com.github.glomadrian.grav.GravView
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:layout_centerInParent="true"
       app:animationGenerators="@array/BallWaveAnimations"
       app:array_colors="@array/bubble"
       app:ball_from_size="@dimen/dim_10"
       app:ball_to_size="@dimen/dim_20"
       app:colorGenerator="com.github.glomadrian.grav.generator.paint.ArrayColorGenerator"
       app:gravGenerator="com.github.glomadrian.grav.generator.grav.BallGenerator"
       app:pointGenerator="com.github.glomadrian.grav.generator.point.RegularPointGenerator"
       app:regular_cell_size="300"
       app:regular_variance="200"
       app:shake_direction="vertical"
       app:shake_max_duration="10000"
       app:shake_min_duration="10000"
       app:shake_variance="@dimen/dim_350"
       app:side_to_side_direction="downToUp"
       app:side_to_side_max_duration="20000"
       app:side_to_side_min_duration="10000" />

No changes are done in code about this xml view. Are there any pro guard rules which should be added ?

alright so I fixed this issue by adding these lines to proguard :

-keep class com.github.glomadrian.** { ; }
-dontwarn com.github.glomadrian.
*
-keepattributes Exceptions, Signature, InnerClasses

commented

Thanks @pramod7patel I just remove ";" from your first line and its working fine.
Add below lines of code in your proguard-rules.pro file if you are using com.github.glomadrian:Grav:1.+ library

-keep class com.github.glomadrian.** { }
-dontwarn com.github.glomadrian.*
-keepattributes Exceptions, Signature, InnerClasses