RuntimeException не может найти XML-ресурс макета - PullRequest
0 голосов
/ 19 октября 2019

Я попытался реализовать загрузочный экран для моего приложения для Android. Мое приложение отлично работает на многих устройствах. Мне удалось установить его на нескольких устройствах, но на одном. На одном телефоне приложение мгновенно падает, когда я пытаюсь его запустить. Не имеет значения, устанавливаю ли я приложение через APK или напрямую с помощью android studio.

Вот сообщение об ошибке :

10-19 16:18:35.088 19315-19315/? E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.jp.einkaufszettellisten, PID: 19315
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.jp.einkaufszettellisten/com.jp.einkaufszettellisten.Activities.Ladebildschirm}: android.content.res.Resources$NotFoundException: File res/drawable/splash_background.xml from drawable resource ID #0x7f070095
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2518)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2580)
        at android.app.ActivityThread.access$1200(ActivityThread.java:162)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1440)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:148)
        at android.app.ActivityThread.main(ActivityThread.java:5678)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
     Caused by: android.content.res.Resources$NotFoundException: File res/drawable/splash_background.xml from drawable resource ID #0x7f070095
        at android.content.res.Resources.loadDrawableForCookie(Resources.java:2841)
        at android.content.res.Resources.loadDrawable(Resources.java:2710)
        at android.content.res.Resources.getDrawable(Resources.java:862)
        at android.content.Context.getDrawable(Context.java:458)
        at androidx.core.content.ContextCompat.getDrawable(ContextCompat.java:454)
        at androidx.appcompat.widget.ResourceManagerInternal.getDrawable(ResourceManagerInternal.java:144)
        at androidx.appcompat.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:411)
        at androidx.appcompat.widget.TintTypedArray.getDrawableIfKnown(TintTypedArray.java:86)
        at androidx.appcompat.app.AppCompatDelegateImpl.attachToWindow(AppCompatDelegateImpl.java:647)
        at androidx.appcompat.app.AppCompatDelegateImpl.ensureWindow(AppCompatDelegateImpl.java:623)
        at androidx.appcompat.app.AppCompatDelegateImpl.onCreate(AppCompatDelegateImpl.java:350)
        at androidx.appcompat.app.AppCompatActivity.onCreate(AppCompatActivity.java:105)
        at com.jp.einkaufszettellisten.Activities.Ladebildschirm.onCreate(Ladebildschirm.java:20)
        at android.app.Activity.performCreate(Activity.java:6324)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2471)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2580) 
        at android.app.ActivityThread.access$1200(ActivityThread.java:162) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1440) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:148) 
        at android.app.ActivityThread.main(ActivityThread.java:5678) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
     Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #9: <bitmap> requires a valid 'src' attribute
        at android.graphics.drawable.BitmapDrawable.updateStateFromTypedArray(BitmapDrawable.java:764)
        at android.graphics.drawable.BitmapDrawable.inflate(BitmapDrawable.java:724)
        at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:1215)
        at android.graphics.drawable.LayerDrawable.inflateLayers(LayerDrawable.java:254)
        at android.graphics.drawable.LayerDrawable.inflate(LayerDrawable.java:164)
        at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:1215)
        at android.graphics.drawable.Drawable.createFromXml(Drawable.java:1124)
        at android.content.res.Resources.loadDrawableForCookie(Resources.java:2818)
        at android.content.res.Resources.loadDrawable(Resources.java:2710) 
        at android.content.res.Resources.getDrawable(Resources.java:862) 
        at android.content.Context.getDrawable(Context.java:458) 
        at androidx.core.content.ContextCompat.getDrawable(ContextCompat.java:454) 
        at androidx.appcompat.widget.ResourceManagerInternal.getDrawable(ResourceManagerInternal.java:144) 
        at androidx.appcompat.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:411) 
        at androidx.appcompat.widget.TintTypedArray.getDrawableIfKnown(TintTypedArray.java:86) 
        at androidx.appcompat.app.AppCompatDelegateImpl.attachToWindow(AppCompatDelegateImpl.java:647) 
        at androidx.appcompat.app.AppCompatDelegateImpl.ensureWindow(AppCompatDelegateImpl.java:623) 
        at androidx.appcompat.app.AppCompatDelegateImpl.onCreate(AppCompatDelegateImpl.java:350) 
        at androidx.appcompat.app.AppCompatActivity.onCreate(AppCompatActivity.java:105) 
        at com.jp.einkaufszettellisten.Activities.Ladebildschirm.onCreate(Ladebildschirm.java:20) 
        at android.app.Activity.performCreate(Activity.java:6324) 
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108) 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2471) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2580) 
        at android.app.ActivityThread.access$1200(ActivityThread.java:162) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1440) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:148) 
        at android.app.ActivityThread.main(ActivityThread.java:5678) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

Активностьв манифесте

<activity
            android:name=".Activities.Ladebildschirm"
            android:label="@string/app_name"
            android:theme="@style/SplashTheme">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

Класс сбоя

package com.jp.einkaufszettellisten.Activities;

import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.app.AppCompatDelegate;

import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;

public class Ladebildschirm extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        startActivity(new Intent(Ladebildschirm.this, MainActivity.class));
        finish();
    }
}

Всплеск фон xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:opacity="opaque">
    <!-- The background color, preferably the same as your normal theme -->
    <item android:drawable="@color/backgroundLight"/>
    <!-- Your product logo - 144dp color version of your app icon -->
    <item>
        <bitmap
            android:gravity="center"
            app:srcCompat="@drawable/ic_launcher"
            android:src="@drawable/ic_launcher"/>
    </item>
</layer-list>

Файл ресурса стиля

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

    <style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
    </style>

    <style name="SplashTheme">
        <item name="android:windowBackground">@drawable/splash_background</item>
    </style>

    <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />

    <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />

</resources>

build.gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.jp.einkaufszettellisten"
        minSdkVersion 21
        targetSdkVersion 28
        versionCode 2
        versionName '2.0.0'
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'com.google.android.material:material:1.0.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta2'
    implementation 'androidx.lifecycle:lifecycle-extensions:2.1.0'
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.2.0'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
    implementation 'com.github.yukuku:ambilwarna:2.0.1'
}

Телефон, который я пытаюсь установить, имеет Android 6.0. 1 работает.

Я также заметил, что у меня есть две папки res в моей рабочей области (одна помечена как сгенерированная). Созданная папка пуста. Я не знаю, связано ли это с моей проблемой.

Ответы [ 2 ]

0 голосов
/ 28 октября 2019

Я нашел ответ на проблему.

Проблема заключалась в том, что я создал свои ресурсы для рисования только в папке v24. Это вызвало ошибку «Ресурсы не найдены» в более старых версиях API, которые использовали ресурсы только из папки not v24.

Надеюсь, это поможет другим людям, совершившим ту же ошибку.

0 голосов
/ 19 октября 2019

Внесите изменения в XML-файл Splash background, как показано ниже:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:opacity="opaque">
    <!-- The background color, preferably the same as your normal theme -->
    <item android:drawable="@color/backgroundLight"/>
    <!-- Your product logo - 144dp color version of your app icon -->
    <item
         android:gravity="center"
         android:drawable="@drawable/ic_launcher" />
</layer-list>
...