본문 바로가기
개발 공부 기록하기/- Android

스플래시 화면에서 xml을 사용시 에러해결

by soulduse 2018. 2. 28.

앱을 만들고 스플래시 화면을 단순 theme로 보여주는데


앱 실행과 동시에 앱이 죽는 것이 아닌가?


아래와 같은 에러가 발생되었다.


org.xmlpull.v1.XmlPullParserException: Binary XML file line #6: <bitmap> requires a valid 'src' attribute


우선 나의 splash를 구성하는 내용은 아래와 같다.


Manifests

<activity
android:name=".ui.splash.SplashActivity"
android:theme="@style/SplashTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

이렇게 theme로 단순히 스플래시 화면을 보여주도록 구성했다.

android:theme="@style/SplashTheme">


styles.xml

<style name="SplashTheme" parent="AppTheme">
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="android:windowBackground">@drawable/splash</item>
</style>

splash.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
android:opacity="opaque">
<item android:drawable="@color/colorPrimary"/>
<item>
<bitmap
android:gravity="center"
android:src="@mipmap/ic_launcher"/>
</item>
</layer-list>


대부분은 잘 잘동하지만 특정 기종에선(넥서스 5, etc.. ) 아예 앱 실행과 동시에 죽어버리는 불상사가 발생했다.


에러 로그를 보니...



java.lang.RuntimeException: Unable to start activity ComponentInfo{com.dave.fish/com.dave.fish.ui.splash.SplashActivity}: android.content.res.Resources$NotFoundException: Drawable com.dave.fish:drawable/splash with resource ID #0x7f0800a0


Caused by: android.content.res.Resources$NotFoundException: Drawable com.dave.fish:drawable/splash with resource ID #0x7f0800a0

                                                                Caused by: android.content.res.Resources$NotFoundException: File res/drawable/splash.xml from drawable resource ID #0x7f0800a0


Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #6: <bitmap> requires a valid 'src' attribute


위와 같은 에러들이 뿜뿜 하였는데

특정기종에선 src의 값을 제대로 찾지 못하는듯 하다.


splash.xml의 문제인것으로 판단되어 해결책을 찾아보니

<item>
<bitmap
android:gravity="center"
android:src="@mipmap/ic_launcher"/>
</item>

<item> <bitmap> </item> 의 형식으로 감싸준게 화근이었다.


이렇게 사용하면 잘인식되는 기종있고, 안되는 기종이 있는듯하다.


아래와 같이 수정하고 난 후에는 모두 잘 동작함을 확인하였다.

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
android:opacity="opaque">
<item android:drawable="@color/colorPrimary"/>
<item
android:gravity="center"
android:drawable="@mipmap/ic_launcher"/>
</layer-list>


오늘의 문제해결 코딩일기 끝!

반응형