ImageView矢量资产在牛轧糖上工作并在奥利奥上崩溃

时间:2021-10-25 03:00:22

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

这真让我抓狂。我刚刚制作了一些简单的svg图标来替换我在我的应用程序中的png图标(在ImageView中)(我已经在另一个活动中做了它并且工作正常),并且突然之间,应用程序不断崩溃,出现以下错误Android 8.0但在7.0上工作正常。所有xml文件都在正确的drawable文件夹中,所有内容都会检出,但它仍然会崩溃。我读到SO必须更新Gradle文件中的支持库,但如果我这样做,它说我必须更改compileSdkVersion以匹配支持库版本(这将使其与早于8.0的Android版本不兼容) , 对?)

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

编辑2:三个图标中只有一个让应用程序崩溃...它变得很奇怪

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.

编辑3:我将图标更改为其他内容,现在它可以正常工作......所以很好,但我仍然想了解为什么Android 8与某些SVG图标不兼容,这些图标与其他图标在同一软件中制作完好无误。

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

1 个解决方案

#1


2  

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

引起:java.lang.IllegalArgumentException:路径字符串不能为空。

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

也许其中一个图标中有一条空路径。较早版本的Android可能会忽略它,而奥利奥则不太宽容。

Check your icon XML and remove any empty paths.

检查您的图标XML并删除所有空路径。

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.

为什么错误?空路上没有意义。它只占用空间。它本来不应该在那里。 Android很友好,可以让你知道。

#1


2  

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

引起:java.lang.IllegalArgumentException:路径字符串不能为空。

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

也许其中一个图标中有一条空路径。较早版本的Android可能会忽略它,而奥利奥则不太宽容。

Check your icon XML and remove any empty paths.

检查您的图标XML并删除所有空路径。

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.

为什么错误?空路上没有意义。它只占用空间。它本来不应该在那里。 Android很友好,可以让你知道。