【问题标题】:Use of drawable vectors SDK < 21: Binary XML file line #68: Error inflating class <unknown> invalid drawable tag vector使用可绘制矢量 SDK < 21:二进制 XML 文件第 68 行:错误膨胀类 <unknown> 无效可绘制标签矢量
【发布时间】:2018-05-11 20:31:36
【问题描述】:

我在 Linux 上使用 android studio 3.1.2,具有以下设置

compileSdkVersion 27
buildToolsVersion '27.0.3'
minSdkVersion 16
targetSdkVersion 19
Gradle version: 4.4
Android plugin version: 3.1.2

我的项目使用以下依赖项:

implementation 'com.google.android.exoplayer:exoplayer-core:2.8.0'
implementation 'com.android.support:support-v4:27.1.1'
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.google.firebase:firebase-core:15.0.2'
implementation 'com.google.firebase:firebase-crash:15.0.2'
implementation 'com.google.firebase:firebase-messaging:15.0.2'
implementation 'com.google.android.gms:play-services-plus:15.0.1'
implementation 'com.android.support:palette-v7:27.1.1'
implementation 'com.google.code.gson:gson:2.8.0'
implementation 'com.android.support:design:27.1.1'
implementation 'com.android.support.constraint:constraint-layout:1.1.0'

在 Lollipop 之前的设备 - SDK

E/UncaughtException: java.lang.RuntimeException: Unable to start activity ComponentInfo{ro.aripisprecer.radiocrestin/ro.aripisprecer.radiocrestin.HomeScreen}: android.view.InflateException: Binary XML file line #68: Error inflating class <unknown>

Caused by: android.view.InflateException: Binary XML file line #68: Error inflating class <unknown>

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:595)
                         at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 
                         at android.view.LayoutInflater.onCreateView(LayoutInflater.java:670) 
                         at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:695) 
                         at android.view.LayoutInflater.rInflate(LayoutInflater.java:756) 
                         at android.view.LayoutInflater.inflate(LayoutInflater.java:492) 
                         at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 
                         at ro.aripisprecer.radiocrestin.PlayRadio.onCreateView(PlayRadio.java:350) 
                         at android.app.Fragment.performCreateView(Fragment.java:1700) 
                         at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:890) 
                         at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1062) 
                         at android.app.BackStackRecord.run(BackStackRecord.java:684) 
                         at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1447) 
                         at android.app.Activity.performStart(Activity.java:5240) 
                         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2168) 
                         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 
                         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:5017) 
                         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:779) 
                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
                         at dalvik.system.NativeStart.main(Native Method) 
                      
Caused by: android.content.res.Resources$NotFoundException: File res/drawable/ic_share_black_24dp.xml from drawable resource ID #0x7f08009b
                         at android.content.res.Resources.loadDrawable(Resources.java:2101)
                         at android.content.res.TypedArray.getDrawable(TypedArray.java:602)
                         at android.view.View.<init>(View.java:3554)
                         at android.view.View.<init>(View.java:3484)
                         at java.lang.reflect.Constructor.constructNative(Native Method) 
                         at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
                         at android.view.LayoutInflater.createView(LayoutInflater.java:595) 
                         at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 
                         at android.view.LayoutInflater.onCreateView(LayoutInflater.java:670) 
                         at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:695) 
                         at android.view.LayoutInflater.rInflate(LayoutInflater.java:756) 
                         at android.view.LayoutInflater.inflate(LayoutInflater.java:492) 
                         at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 
                         at ro.aripisprecer.radiocrestin.PlayRadio.onCreateView(PlayRadio.java:350) 
                         at android.app.Fragment.performCreateView(Fragment.java:1700) 
                         at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:890) 
                         at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1062) 
                         at android.app.BackStackRecord.run(BackStackRecord.java:684) 
                         at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1447) 
                         at android.app.Activity.performStart(Activity.java:5240) 
                         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2168) 
                         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 
                         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:5017) 
                         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:779) 
                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
                         at dalvik.system.NativeStart.main(Native Method) 

Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #1: 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:2097)
                         at android.content.res.TypedArray.getDrawable(TypedArray.java:602) 
                         at android.view.View.<init>(View.java:3554) 
                         at android.view.View.<init>(View.java:3484) 
                         at java.lang.reflect.Constructor.constructNative(Native Method) 
                         at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
                         at android.view.LayoutInflater.createView(LayoutInflater.java:595) 
                         at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 
                         at android.view.LayoutInflater.onCreateView(LayoutInflater.java:670) 
                         at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:695) 
                         at android.view.LayoutInflater.rInflate(LayoutInflater.java:756) 
                         at android.view.LayoutInflater.inflate(LayoutInflater.java:492) 
                         at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 
                         at ro.aripisprecer.radiocrestin.PlayRadio.onCreateView(PlayRadio.java:350) 
                         at android.app.Fragment.performCreateView(Fragment.java:1700) 
                         at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:890) 
                         at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1062) 
                         at android.app.BackStackRecord.run(BackStackRecord.java:684) 
                         at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1447) 
                         at android.app.Activity.performStart(Activity.java:5240) 
                         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2168) 
                         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 
                         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:5017) 
                         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:779) 
                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
                         at dalvik.system.NativeStart.main(Native Method) 

我已遵循其他建议并替换:

  1. android:srcapp:srcCompat,
  2. build.gradle中包含vectorDrawables.useSupportLibrary = true,并且
  3. AppCompatDelegate.setCompatVectorFromResourcesEnabled(true)公共类 HomeScreen 中扩展 AppCompatActivity{

但这并没有解决我的问题。

从我的 homescreen_layout.xml 中查看一个 sn-p,从第 #68 行开始

 <View
    android:layout_width="14dp"
    android:layout_height="14dp"
    android:layout_marginBottom="6dp"
    android:layout_marginEnd="5dp"
    android:layout_marginRight="5dp"
    android:background="@drawable/ic_share_black_24dp"
    app:layout_constraintBottom_toBottomOf="@+id/music_image"
    app:layout_constraintRight_toRightOf="@+id/music_image" />

这是 ic_share_black_24dp.xml 文件的内容:

<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"

android:width="14dp"
android:height="14dp"
android:viewportHeight="24.0"
android:viewportWidth="24.0"
tools:ignore="VectorRaster">

<path
    android:fillColor="@color/red_color_toolbar"
    android:pathData="M18,16.08c-0.76,0 -1.44,0.3 -1.96,0.77L8.91,12.7c0.05,-0.23 0.09,-0.46 0.09,-0.7s-0.04,-0.47 -0.09,-0.7l7.05,-4.11c0.54,0.5 1.25,0.81 2.04,0.81 1.66,0 3,-1.34 3,-3s-1.34,-3 -3,-3 -3,1.34 -3,3c0,0.24 0.04,0.47 0.09,0.7L8.04,9.81C7.5,9.31 6.79,9 6,9c-1.66,0 -3,1.34 -3,3s1.34,3 3,3c0.79,0 1.5,-0.31 2.04,-0.81l7.12,4.16c-0.05,0.21 -0.08,0.43 -0.08,0.65 0,1.61 1.31,2.92 2.92,2.92 1.61,0 2.92,-1.31 2.92,-2.92s-1.31,-2.92 -2.92,-2.92z" />

我在这里做错了什么?任何帮助表示赞赏。

谢谢!

【问题讨论】:

  • 当你注释掉那个类时会发生什么Binary XML file line #68你的项目运行了吗?
  • 如果我从第 #68 行开始注释掉类,它会移动到下一个,第 #128 行:
  • 好的。我没有注意到这一点。请将您的 targetSdkVersion 19 更改为 27 并下载最新的构建工具版本 27.0.3 并在模拟器 API 17 上检查它,(不是在 API 19 上,它有一些未解决的错误)看看,如果这有效。
  • @RohitSharma 这是同样的错误。会不会是异常来自其他地方而不是来自这个 xml 文件?

标签: android android-layout android-studio android-drawable android-appcompat


【解决方案1】:

从您的 Logcat 中可以明显看出 2 个错误

 1. Caused by: android.content.res.Resources$NotFoundException: File res/drawable/ic_share_black_24dp.xml from drawable resource ID #0x7f08009b
 2. Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #1: invalid drawable tag vector

如果升级后也遇到同样的错误,那么

一个一个试试,不管用什么。

  • 确保您的命名匹配,因为它无法找到它,我建议您:

    一个。 Invalidate Caches/Restart,

    b.如果没有,请从您的项目位置删除 .idea.gradle

    c。如果没有,删除资源,清理项目并再次重新创建资源

  • 确保您的ic_share_black_24dp 未在项目的其他任何地方使用,即左侧抽屉面板(导航菜单)和右侧面板(导航菜单),如果是则重命名资源之一


另外,试试这个矢量资源

<vector xmlns:android="http://schemas.android.com/apk/res/android"
        android:width="24dp"
        android:height="24dp"
        android:viewportWidth="24.0"
        android:viewportHeight="24.0">
    <path
        android:fillColor="#FF000000"
        android:pathData="M18,16.08c-0.76,0 -1.44,0.3 -1.96,0.77L8.91,12.7c0.05,-0.23 0.09,-0.46 0.09,-0.7s-0.04,-0.47 -0.09,-0.7l7.05,-4.11c0.54,0.5 1.25,0.81 2.04,0.81 1.66,0 3,-1.34 3,-3s-1.34,-3 -3,-3 -3,1.34 -3,3c0,0.24 0.04,0.47 0.09,0.7L8.04,9.81C7.5,9.31 6.79,9 6,9c-1.66,0 -3,1.34 -3,3s1.34,3 3,3c0.79,0 1.5,-0.31 2.04,-0.81l7.12,4.16c-0.05,0.21 -0.08,0.43 -0.08,0.65 0,1.61 1.31,2.92 2.92,2.92 1.61,0 2.92,-1.31 2.92,-2.92s-1.31,-2.92 -2.92,-2.92z"/>
</vector>

编辑:在您的视图标签中,请更改:

android:background="@drawable/ic_share_black_24dp"

到这里:

app:srcCompat="@drawable/ic_share_black_24dp"

【讨论】:

  • 我已经按照你描述的每一步进行了操作,它可以找到资源,但问题出在“vector”标签上。我已经在谷歌驱动器上上传了完整的调试跟踪、xml 资源和主屏幕布局。你可以看看,也许你能找到一些东西。请看这里:drive.google.com/drive/folders/…
  • 谢谢马吕斯。是不是也可以分享整个项目,让我明天测试一下。
  • 感谢您的回复。不幸的是,我不允许共享整个应用程序。您可以远程连接到我的电脑并实时查看吗?
  • 当然可以。任何办公桌?
  • 编辑了答案。 :)
猜你喜欢
  • 2018-07-02
  • 2020-10-19
  • 2016-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多