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