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



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

编辑:我刚刚尝试更新支持库,但它仍然崩溃。

编辑2:三个图标中只有一个使应用程序崩溃...越来越奇怪了

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

这是我得到的错误。请哈尔普。

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

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

也许其中一个图标中有一条空路径。旧版本的Android可能忽略了它,而Oreo则不那么宽容。

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

为什么会出现错误?空路没有意义。它只占用空间。它本来就不应该在那里。Android很好心地让你知道。

最新更新