Использование нарисованных векторов SDK <21: строка двоичного файла XML # 68: ошибка надувания класса <unknown>неверный вектор отображаемого тега - PullRequest
0 голосов
/ 11 мая 2018

Я использую Android Studio 3.1.2 в Linux, со следующей настройкой :

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 <21, я получаю следующее исключение: </strong>

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:src до app:srcCompat,
  2. включено vectorDrawables.useSupportLibrary = true в build.gradle и
  3. AppCompatDelegate.setCompatVectorFromResourcesEnabled(true) в общедоступном классе HomeScreen расширяет AppCompatActivity {

Но это не решило мою проблему.

Смотрите фрагмент из моего homescreen_layout.xml, начиная со строки # 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" />

Что я здесь не так делаю? Любая помощь приветствуется.

Спасибо!

1 Ответ

0 голосов
/ 12 мая 2018

2 ошибки совершенно очевидны из вашего Logcat

 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,

    б. если нет, удалите .idea & .gradle из местоположения вашего проекта

    с. если нет, удалите ресурс, очистите проект и заново создайте ресурс снова

  • Убедитесь, что ваш 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"

...