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

Crash on android 4.4.4 #270

Open
1 task done
DevilGeek opened this issue May 17, 2023 · 5 comments
Open
1 task done

Crash on android 4.4.4 #270

DevilGeek opened this issue May 17, 2023 · 5 comments

Comments

@DevilGeek
Copy link

DevilGeek commented May 17, 2023

What kind of issue is this?

  • Functional Bug. (Application crash)

Details

  • Library Version : slidetoact v0.10.0
  • Android Version : 4.4.4 (API 19)
  • minSdkVersion 19
  • targetSdkVersion 33
  • compileSdk 33
  • gradle : 8.0.1
  • Same code work on another devices on Android 8.1 (API 27)
Stacktraces :

FATAL EXCEPTION: main Process: com.xxx.xxx, PID: 1654 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.xxx.xxx/com.xxx.xxx.MainActivity}: android.view.InflateException: Binary XML file line #403: Error inflating class com.ncorti.slidetoact.SlideToActView at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233) at android.app.ActivityThread.access$800(ActivityThread.java:135) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5001) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:801) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:617) at dalvik.system.NativeStart.main(Native Method) Caused by: android.view.InflateException: Binary XML file line #403: Error inflating class com.ncorti.slidetoact.SlideToActView at android.view.LayoutInflater.createView(LayoutInflater.java:620) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696) at android.view.LayoutInflater.rInflate(LayoutInflater.java:755) at android.view.LayoutInflater.rInflate(LayoutInflater.java:758) at android.view.LayoutInflater.inflate(LayoutInflater.java:492) at android.view.LayoutInflater.inflate(LayoutInflater.java:397) at com.xxx.xxx.databinding.ActivityMainBinding.inflate(ActivityMainBinding.java:250) at com.xxx.xxx.databinding.ActivityMainBinding.inflate(ActivityMainBinding.java:244) at com.xxx.xxx.MainActivity.onCreate(MainActivity.java:229) at android.app.Activity.performCreate(Activity.java:5231) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)  at android.app.ActivityThread.access$800(ActivityThread.java:135)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)  at android.os.Handler.dispatchMessage(Handler.java:102)  at android.os.Looper.loop(Looper.java:136)  at android.app.ActivityThread.main(ActivityThread.java:5001)  at java.lang.reflect.Method.invokeNative(Native Method)  at java.lang.reflect.Method.invoke(Method.java:515)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:801)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:617)  at dalvik.system.NativeStart.main(Native Method)  Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Constructor.constructNative(Native Method) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at android.view.LayoutInflater.createView(LayoutInflater.java:594) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)  at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)  at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)  at android.view.LayoutInflater.inflate(LayoutInflater.java:492)  at android.view.LayoutInflater.inflate(LayoutInflater.java:397)  at com.xxx.xxx.databinding.ActivityMainBinding.inflate(ActivityMainBinding.java:250)  at com.xxx.xxx.databinding.ActivityMainBinding.inflate(ActivityMainBinding.java:244)  at com.xxx.xxx.MainActivity.onCreate(MainActivity.java:229)  at android.app.Activity.performCreate(Activity.java:5231)  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)  at android.app.ActivityThread.access$800(ActivityThread.java:135)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)  at android.os.Handler.dispatchMessage(Handler.java:102)  at android.os.Looper.loop(Looper.java:136)  at android.app.ActivityThread.main(ActivityThread.java:5001)  at java.lang.reflect.Method.invokeNative(Native Method)  at java.lang.reflect.Method.invoke(Method.java:515)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:801)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:617)  at dalvik.system.NativeStart.main(Native Method)  Caused by: android.content.res.Resources$NotFoundException: File res/drawable/slidetoact_ic_arrow.xml from drawable resource ID #0x7f07011a at android.content.res.Resources.loadDrawable(Resources.java:2096) at android.content.res.Resources.getDrawable(Resources.java:700) at androidx.core.content.res.ResourcesCompat.getDrawable(ResourcesCompat.java:139) at com.ncorti.slidetoact.SlideToActView.setSliderIcon(SlideToActView.kt:164) at com.ncorti.slidetoact.SlideToActView.<init>(SlideToActView.kt:387) at com.ncorti.slidetoact.SlideToActView.<init>(SlideToActView.kt:51) at com.ncorti.slidetoact.SlideToActView.<init>(SlideToActView.kt) at java.lang.reflect.Constructor.constructNative(Native Method)  at java.lang.reflect.Constructor.newInstance(Constructor.java:423)  at android.view.LayoutInflater.createView(LayoutInflater.java:594)  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)  at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)  at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)  at android.view.LayoutInflater.inflate(LayoutInflater.java:492)  at android.view.LayoutInflater.inflate(LayoutInflater.java:397)  at com.xxx.xxx.databinding.ActivityMainBinding.inflate(ActivityMainBinding.java:250)  at com.xxx.xxx.databinding.ActivityMainBinding.inflate(ActivityMainBinding.java:244)  at com.xxx.xxx.MainActivity.onCreate(MainActivity.java:229)  at android.app.Activity.performCreate(Activity.java:5231)  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)  at android.app.ActivityThread.access$800(ActivityThread.java:135)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)  at android.os.Handler.dispatchMessage(Handler.java:102)  at android.os.Looper.loop(Looper.java:136)  at android.app.ActivityThread.main(ActivityThread.java:5001)  at java.lang.reflect.Method.invokeNative(Native Method)  at java.lang.reflect.Method.invoke(Method.java:515)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:801)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:617)  at dalvik.system.NativeStart.main(Native Method)  Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #5: invalid drawable tag vector at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:933) at android.graphics.drawable.Drawable.createFromXml(Drawable.java:877) at android.content.res.Resources.loadDrawable(Resources.java:2092) at android.content.res.Resources.getDrawable(Resources.java:700)  at androidx.core.content.res.ResourcesCompat.getDrawable(ResourcesCompat.java:139)  at com.ncorti.slidetoact.SlideToActView.setSliderIcon(SlideToActView.kt:164)  at com.ncorti.slidetoact.SlideToActView.<init>(SlideToActView.kt:387)  at com.ncorti.slidetoact.SlideToActView.<init>(SlideToActView.kt:51)  at com.ncorti.slidetoact.SlideToActView.<init>(SlideToActView.kt)  at java.lang.reflect.Constructor.constructNative(Native Method)  at java.lang.reflect.Constructor.newInstance(Constructor.java:423)  at android.view.LayoutInflater.createView(LayoutInflater.java:594)  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)  at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)  at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)  at android.view.LayoutInflater.inflate(LayoutInflater.java:492)  at android.view.LayoutInflater.inflate(LayoutInflater.java:397)  at com.xxx.xxx.databinding.ActivityMainBinding.inflate(ActivityMainBinding.java:250)  at com.xxx.xxx.databinding.ActivityMainBinding.inflate(ActivityMainBinding.java:244)  at com.xxx.xxx.MainActivity.onCreate(MainActivity.java:229)  at android.app.Activity.performCreate(Activity.java:5231)  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)  at android.app.ActivityThread.access$800(ActivityThread.java:135)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)  at android.os.Handler.dispatchMessage(Handler.java:102)  at android.os.Looper.loop(Looper.java:136)  at android.app.ActivityThread.main(ActivityThread.java:5001)  at java.lang.reflect.Method.invokeNative(Native Method)  at java.lang.reflect.Method.invoke(Method.java:515)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:801)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:617)  at dalvik.system.NativeStart.main(Native Method) 

i tried :

Specify the slider_icon in the xml :

app:slider_icon="@drawable/slider_icon"

(the drawable is a copy from the repo)

and i got this error on android 4.4.4 (still working on my android 8.1 device)
  FATAL EXCEPTION: main Process: com.xxx.xxx, PID: 1260 java.lang.NoSuchMethodError: android.graphics.drawable.Drawable.setTint at com.ncorti.slidetoact.SlideToActIconUtil.tintIconCompat$slidetoact_release(SlideToActIconUtil.kt:32) at com.ncorti.slidetoact.SlideToActView.onDraw(SlideToActView.kt:569)  

@cortinico
Copy link
Owner

Does this happen also on a emulator for API 19?

@DevilGeek
Copy link
Author

@cortinico

Yes, I just checked and this also happens in the emulator (android 4.4, API 19).

java.lang.NoSuchMethodError: android.graphics.drawable.Drawable.setTint at com.ncorti.slidetoact.SlideToActIconUtil.tintIconCompat$slidetoact_release(SlideToActIconUtil.kt:32) at com.ncorti.slidetoact.SlideToActView.onDraw(SlideToActView.kt:569) at android.view.View.draw(View.java:14465)

@DevilGeek
Copy link
Author

DevilGeek commented May 23, 2023

I did a little bit of testing with the exemple app from the repo.
It crash on the emulator but i was able to get it working on android 4.4 by changing

ResourcesCompat.getDrawable(context.resources, value, context.theme)?.let {
to :
VectorDrawableCompat.create(context.resources, value, context.theme)?.let {

in SlideToActView.kt 165

but the 'custom icon' exemple will crash with this 'fix'

based on this stackoverflow answer : https://stackoverflow.com/a/48237058

@cortinico
Copy link
Owner

Maybe we can selectively use ResourcesCompat or VectorDrawableCompat based on the type of the image on API 19?

@DevilGeek
Copy link
Author

I think that would be the solution, but I don't know Kotlin. only java

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