0

This is driving me crazy. I just made some simple svg icons to replace png icons I had in my app (in an ImageView) (which I already did in another activity and it worked fine), and all of a sudden, the app keeps crashing with the following error on Android 8.0 but works fine on 7.0. All xml files are in the right drawable folder, and everything checks out, but it still crashes. I read on SO that I had to update the support library in the Gradle file, but if I do, it says I have to change the compileSdkVersion to match the support library version (which is going to make it incompatible with Android versions earlier than 8.0, right?)

EDIT: I just tried updating the support library and it still crashes.

EDIT 2: Only one of the three icons is making the app crash... it's getting weird

EDIT 3: I changed the icon to something else and now it works... So it's fine, but I'd still like to understand why Android 8 is incompatible with certain SVG icons made in the same software as other icons it works fine with.

Here's the error I get. Pls halp.

04-09 14:58:57.377 9954-9954/com.example.mehra.testcalculator E/AndroidRuntime: FATAL EXCEPTION: main
                                                                            Process: com.example.mehra.testcalculator, PID: 9954
                                                                            java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.mehra.testcalculator/com.example.mehra.testcalculator.MainActivity}: android.view.InflateException: Binary XML file line #0: Binary XML file line #0: Error inflating class ImageView
                                                                                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2955)
                                                                                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3030)
                                                                                at android.app.ActivityThread.-wrap11(Unknown Source:0)
                                                                                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696)
                                                                                at android.os.Handler.dispatchMessage(Handler.java:105)
                                                                                at android.os.Looper.loop(Looper.java:164)
                                                                                at android.app.ActivityThread.main(ActivityThread.java:6938)
                                                                                at java.lang.reflect.Method.invoke(Native Method)
                                                                                at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
                                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
                                                                             Caused by: android.view.InflateException: Binary XML file line #0: Binary XML file line #0: Error inflating class ImageView
                                                                             Caused by: android.view.InflateException: Binary XML file line #0: Error inflating class ImageView
                                                                             Caused by: android.content.res.Resources$NotFoundException: Drawable com.example.mehra.testcalculator:drawable/ic_cycleicon with resource ID #0x7f08006e
                                                                             Caused by: android.content.res.Resources$NotFoundException: File res/drawable-anydpi-v21/ic_cycleicon.xml from drawable resource ID #0x7f08006e
                                                                                at android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:818)
                                                                                at android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:650)
                                                                                at android.content.res.Resources.getDrawableForDensity(Resources.java:891)
                                                                                at android.content.res.Resources.getDrawable(Resources.java:833)
                                                                                at android.content.Context.getDrawable(Context.java:605)
                                                                                at android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:351)
                                                                                at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:200)
                                                                                at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:188)
                                                                                at android.support.v7.content.res.AppCompatResources.getDrawable(AppCompatResources.java:100)
                                                                                at android.support.v7.widget.AppCompatImageHelper.loadFromAttributes(AppCompatImageHelper.java:58)
                                                                                at android.support.v7.widget.AppCompatImageView.<init>(AppCompatImageView.java:78)
                                                                                at android.support.v7.widget.AppCompatImageView.<init>(AppCompatImageView.java:68)
                                                                                at android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:106)
                                                                                at android.support.v7.app.AppCompatDelegateImplV9.createView(AppCompatDelegateImplV9.java:1024)
                                                                                at android.support.v7.app.AppCompatDelegateImplV9.onCreateView(AppCompatDelegateImplV9.java:1081)
                                                                                at android.view.LayoutInflater$FactoryMerger.onCreateView(LayoutInflater.java:189)
                                                                                at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:772)
                                                                                at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
                                                                                at android.view.LayoutInflater.rInflate(LayoutInflater.java:863)
                                                                                at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
                                                                                at android.view.LayoutInflater.rInflate(LayoutInflater.java:866)
                                                                                at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
                                                                                at android.view.LayoutInflater.rInflate(LayoutInflater.java:866)
                                                                                at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
                                                                                at android.view.LayoutInflater.rInflate(LayoutInflater.java:866)
                                                                                at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
                                                                                at android.view.LayoutInflater.rInflate(LayoutInflater.java:866)
                                                                                at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
                                                                                at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
                                                                                at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
                                                                                at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
04-09 14:58:57.382 9954-9954/com.example.mehra.testcalculator E/AndroidRuntime:     at com.example.mehra.testcalculator.Calculator_fragment.onCreateView(Calculator_fragment.java:68)
                                                                                    at android.support.v4.app.Fragment.performCreateView(Fragment.java:2354)
                                                                                    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1419)
                                                                                    at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1740)
                                                                                    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1809)
                                                                                    at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:799)
                                                                                    at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2580)
                                                                                    at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2367)
                                                                                    at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2322)
                                                                                    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2229)
                                                                                    at android.support.v4.app.FragmentManagerImpl.dispatchStateChange(FragmentManager.java:3221)
                                                                                    at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:3171)
                                                                                    at android.support.v4.app.FragmentController.dispatchActivityCreated(FragmentController.java:192)
                                                                                    at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:560)
                                                                                    at android.support.v7.app.AppCompatActivity.onStart(AppCompatActivity.java:177)
                                                                                    at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1340)
                                                                                    at android.app.Activity.performStart(Activity.java:7191)
                                                                                    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2918)
                                                                                    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3030)
                                                                                    at android.app.ActivityThread.-wrap11(Unknown Source:0)
                                                                                    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696)
                                                                                    at android.os.Handler.dispatchMessage(Handler.java:105)
                                                                                    at android.os.Looper.loop(Looper.java:164)
                                                                                    at android.app.ActivityThread.main(ActivityThread.java:6938)
                                                                                    at java.lang.reflect.Method.invoke(Native Method)
                                                                                    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
                                                                                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
                                                                                 Caused by: java.lang.IllegalArgumentException: Path string cannot be empty.
                                                                                    at android.util.PathParser.nCreatePathDataFromString(Native Method)
                                                                                    at android.util.PathParser.-wrap1(Unknown Source:0)
                                                                                    at android.util.PathParser$PathData.<init>(PathParser.java:76)
                                                                                    at android.graphics.drawable.VectorDrawable$VFullPath.updateStateFromTypedArray(VectorDrawable.java:1924)
                                                                                    at android.graphics.drawable.VectorDrawable$VFullPath.inflate(VectorDrawable.java:1875)
                                                                                    at android.graphics.drawable.VectorDrawable.inflateChildElements(VectorDrawable.java:734)
                                                                                    at android.graphics.drawable.VectorDrawable.inflate(VectorDrawable.java:635)
                                                                                    at android.graphics.drawable.DrawableInflater.inflateFromXmlForDensity(DrawableInflater.java:146)
                                                                                    at android.graphics.drawable.Drawable.createFromXmlInnerForDensity(Drawable.java:1322)
                                                                                    at android.graphics.drawable.Drawable.createFromXmlForDensity(Drawable.java:1281)
                                                                                    at android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:808)
                                                                                        ... 57 more
Nihilish
  • 105
  • 1
  • 16
  • Unrelated: Having higher compileSdkVersion does not mean you're suddenly not compatible with old Android devices. Read this: https://stackoverflow.com/a/26694276/2444099 – Eugen Pechanec Apr 09 '18 at 19:57

1 Answers1

3

Caused by: java.lang.IllegalArgumentException: Path string cannot be empty.

Perhaps one of the icons has an empty path in it. Older versions of Android may have ignored it while Oreo is less permissive.

Check your icon XML and remove any empty paths.

Why the error? There's no point in empty path. It only takes up space. It wasn't supposed to be there in the first place. Android is kind enough to let you know.

Eugen Pechanec
  • 37,669
  • 7
  • 103
  • 124
  • You're right, the icon had an empty path (). Man, I spent 3 hours trying to figure out why it wasn't working haha. Thanks a bunch – Nihilish Apr 09 '18 at 20:00
  • I can suggest https://jakearchibald.github.io/svgomg/ for optimizing SVGs before putting them in the app. – Eugen Pechanec Apr 09 '18 at 20:25