programing

안드로이드 뷰부풀리기예외:이진 XML 파일라인 #12: 클래스 부풀리기 오류

subpage 2023. 9. 11. 21:50
반응형

안드로이드 뷰부풀리기예외:이진 XML 파일라인 #12: 클래스 부풀리기 오류

subj에 표시된 종류의 오류가 많이 발생하고 있습니다.이런 오류들은 가끔 있는 것 같아서 재현할 수가 없습니다.스택을 통해 다른 레이아웃 리소스에 대해 이러한 오류가 발생할 수 있음을 알 수 있습니다.XML의 행 또한 다양합니다.

누가 왜 이런 오류가 발생하는지 설명해 줄 수 있습니까?그리고 이 문제를 해결하기 위해 제가 할 수 있는 일은 무엇입니까?

스택

=============================================================

com.fsp.android.f generated the following exception:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.fsp.android.f/com.life360.android.ui.tour.TourActivity}: android.view.InflateException: Binary XML file line #12: Error inflating class <unknown>

--------- Stack trace ---------
1. android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2649)
2. android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2674)
3. android.app.ActivityThread.access$2200(ActivityThread.java:131)
4. android.app.ActivityThread$H.handleMessage(ActivityThread.java:1975)
5. android.os.Handler.dispatchMessage(Handler.java:99)
6. android.os.Looper.loop(Looper.java:123)
7. android.app.ActivityThread.main(ActivityThread.java:4702)
8. java.lang.reflect.Method.invokeNative(Native Method)
9. java.lang.reflect.Method.invoke(Method.java:521)
10. com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
11. com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
12. dalvik.system.NativeStart.main(Native Method)
-------------------------------

----------- Cause -----------
android.view.InflateException: Binary XML file line #12: Error inflating class <unknown>

1. android.view.LayoutInflater.createView(LayoutInflater.java:513)
2. com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
3. android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563)
4. android.view.LayoutInflater.rInflate(LayoutInflater.java:618)
5. android.view.LayoutInflater.rInflate(LayoutInflater.java:621)
6. android.view.LayoutInflater.inflate(LayoutInflater.java:382)
7. android.view.LayoutInflater.inflate(LayoutInflater.java:320)
8. android.view.LayoutInflater.inflate(LayoutInflater.java:276)
9. com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:208)
10. android.app.Activity.setContentView(Activity.java:1629)
11. com.solvek.sample.ui.BaseActivity.onCreate(BaseActivity.java:23)
12. com.solvek.sample.ui.tour.TourActivity.onCreate(TourActivity.java:161)
13. android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
14. android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2587)
15. android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2674)
16. android.app.ActivityThread.access$2200(ActivityThread.java:131)
17. android.app.ActivityThread$H.handleMessage(ActivityThread.java:1975)
18. android.os.Handler.dispatchMessage(Handler.java:99)
19. android.os.Looper.loop(Looper.java:123)
20. android.app.ActivityThread.main(ActivityThread.java:4702)
21. java.lang.reflect.Method.invokeNative(Native Method)
22. java.lang.reflect.Method.invoke(Method.java:521)
23. com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
24. com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
25. dalvik.system.NativeStart.main(Native Method)
-----------------------------

-------- Environment --------
Time =2010-12-20 08:27:35 AM
Device =tmobile/htc_espresso/espresso/espresso:2.1-update1/ERE27/216830:user/release-keys
Make =HTC
Model =T-Mobile myTouch 3G Slide
Product =htc_espresso
App =com.fsp.android.f, version 2.0.9 (build 1232)

XML의 결과는 여기에 있지만 다른 xmls에서는 이러한 오류가 발생합니다.

<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android">
    <ViewFlipper android:layout_gravity="fill" android:id="@+id/flipper" android:layout_height="fill_parent" android:layout_width="fill_parent">
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_1"/>
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_2"/>
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_3"/>
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_4"/>
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_5"/>
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_6"/>
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_7"/>
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_8"/>
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_9"/>
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_10"/>
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_11"/>
    </ViewFlipper>

    <LinearLayout android:id="@+id/exit_bar" android:layout_gravity="top" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/blue_bar" android:visibility="invisible">
        <Button android:background="@drawable/orange_btn" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_gravity="center" android:textStyle="bold" android:textColor="#000000" android:shadowColor="#ffffff" android:shadowRadius="1.6" android:shadowDx="1.5" android:shadowDy="1.3" android:id="@+id/exit_tour_btn" android:text="Exit" android:layout_marginLeft="20dip"/>
        <TextView android:layout_height="wrap_content" android:textColor="#ffffff" android:layout_gravity="center" android:layout_width="110dip" android:layout_marginLeft="20dip" android:textSize="16dip" android:textStyle="bold" android:text="Life360 Tour"/>

    </LinearLayout>

    <Button style="@style/BlueBtn" android:text="Continue" android:layout_marginTop="40dip" android:id="@+id/continue_btn" android:visibility="gone" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_gravity="center" />

    <FrameLayout android:id="@+id/bottom_bar" android:layout_gravity="bottom" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/blue_bar" android:visibility="invisible">
        <ImageView android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/left" android:layout_gravity="left|center" android:background="@drawable/tour_left" android:layout_marginLeft="10dip"/>
        <ImageView android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/right" android:layout_gravity="right|center" android:background="@drawable/tour_right" android:layout_marginRight="10dip"/>               
    </FrameLayout>
</merge>

에 더 합니다. 이 는 에 됩니다 가 하여 가 는 가 됩니다 가 는 InflateException는 . . 는 입니다 인 입니다 는 인 ImageView인출 가능한 리소스를 로드합니다.이러한 리소스 중 하나가 픽셀 해상도가 높을 경우 많은 메모리가 필요하여 부풀리기 예외가 발생합니다.

따라서 기본적으로 모든 이미지 드로잉의 픽셀 해상도가 레이아웃에 필요한 최소값인지 확인합니다.

이것은 당신이 a를 사용하는 경우에도 발생할 수 있습니다.VectorDrawable library를 원용및을림리림을oge및원ttd app:srcCompat에 대신에android:src

정확한 오류: 이진 XML 파일 라인 #XX: 클래스 ImageView를 부풀리는 동안 오류가 발생했습니다.

해당 링크 참조

ViewFlipper레이아웃 부풀리기 중에 모든 이미지를 메모리에 로드합니다.이미지가 커서 메모리가 많이 필요해서 교체했습니다.ViewFlipper와 함께ImageSwitcher를수는다은과꿀다과e은hnene로h를s는꿀수 ViewFlipper한 번에 하나의 이미지만 로드됩니다.

하나의 생성자만으로 사용자 지정 보기를 만들 때 동일한 오류가 발생했습니다. 사용자 지정 보기에 대한 모든 생성자를 정의해 보십시오.

   public CustomWebView(Context context) {
        super(context);
        init();
    }

    public CustomWebView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public CustomWebView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        init();
    }

같은 버그를 발견하고 근본적인 이유는 다음과 같습니다.

응용프로그램 컨텍스트를 사용하여 보기를 부풀립니다.

Activity Context로 부풀리기를 하면 버그가 수정되었습니다.

질문이 이미 답이 된 것은 알지만, 누군가가 이런 문제에 부딪힐 수도 있다는 생각으로 글을 올립니다.

내 경우 문제는 res/layout/폴더의 레이아웃과 res/values/dimens의 @dimens에 대한 값을 참조하는 애플리케이션을 전화기에 로드하는 것입니다. 여기에는 액세스하려고 하는 글꼴_22가 있으며 res/values-xlarge/dimens에 정의되어 있습니다.

저는 실제로 기존 프로젝트의 UI를 업데이트하고 있습니다.

레이아웃 폴더에 대해 xml을 작성하는 동안 힌트를 위해 Ictrl+space를 사용하는 IDE Eclipse를 사용하고 있기 때문에 어떤 폴더에 대해 작성하는지에 관계없이 values-xlarge 폴더뿐만 아니라 값의 모든 값을 표시합니다.

또한 두 파일의 값이 서로 다른 화면에 대해 매핑된 값과 동일해야 한다는 것도 알고 있습니다.

이것이 누군가가 이런 종류의 어리석은 문제에 부딪히는데 도움이 되기를 바랍니다.

저도 같은 오류를 발견했는데, 오류가 무엇인지 확인하는 데 이틀이 걸렸습니다.

가 사용하려고 입니다: 는 을 하려고 입니다 입니다 하려고 는 을 .android:background

:app:srcCompat

SVG 파일로.

당신 같은 경우엔, 이게 다라고 생각해요

<ImageView 
    android:scaleType="fitXY" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:src="@drawable/tour_11"      <-- the error is here !
 />

이런 식으로 사용하는 것을 추천합니다.

build.gradle 앱에 추가하기

android {  
   defaultConfig {  
     vectorDrawables.useSupportLibrary = true  
    }  
 }

그리고.

<androidx.appcompat.widget.AppCompatImageView  <-- use **AppCompatImageView** not **ImageView**
        android:scaleType="fitXY" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        app:srcCompat="@drawable/tour_11"
     />

도움이 되었으면 좋겠습니다.

소재 테마로 테마를 선택하여 이 오류가 발생하였습니다.그러나 4.4.2에서 앱을 실행하려고 할 때 이 오류가 발생했습니다.

솔루션 : 테마_holo를 테마로 선택

제 사진 크기가 14Kb에 불과한데 문제는 디자이너가 1011pxx1819px를 줬다는 것입니다. (해상도가 너무 높아서 인플레가 발생했습니다.예외)

비슷한 문제가 발생할 경우 보기를 부풀리는 과정에서 이런 문제가 발생했습니다.

View.inflate(getApplicationContext(), R.layout.my_layout, null)

을 교체하여 getApplicationContext()와 함께this

저는 로그캣에서 오류 메시지가 실제로 부족했기 때문에 문제의 원인을 파악하기 위해 다음과 같이 수행했습니다.

(로그캣 오류 메시지에서 my HomeFragment.java의 특정 레이아웃을 부풀리는 중에 오류가 발생했다고 합니다.)

  1. 배치가 부풀려지기 직전에 중단점을 뒀습니다.
  2. 특정 중단점에 도달할 때까지 디버그 모드로 응용 프로그램을 실행했습니다.
  3. 해서 하고 했습니다를 했습니다.Evaluate expression그 위에:
    • Run > Evaluate Expression아니면alt - F8
  4. 결과는 문제의 원인에 대한 더 많은 정보를 보여주었습니다. 제 경우에는 다음을 사용하여 그릴 수 있는 파일이었습니다.tools:targetApi="lollipop"(이전 장치에서만 버그가 발생했습니다.)

제게 있어서 제 문제는 제가

android:background="?attr/selectableItemBackground"

Linear Layout(선형 레이아웃) 배경에서 제거하면 테스트가 통과됩니다.

링크가 도움이 될 입니다.당신의 매니페스트에 문제가 있는지 확인해 보세요.다시 발생할 수 있는 경우 전체 스택 추적을 게시하여 오류가 실제로 무엇인지 확인할 수 있습니다.

편집: 확인해 보셨을 겁니다만, TourActivity 레이아웃에 사용하는 XML 파일의 12번째 줄에 무엇이 있습니까?

답변된 질문인 것은 알지만, 제가 직면한 원인은 보이지 않습니다.

Android Studio에서 제 드로어블을 /drawable-V24 에뮬레이터는 API 23입니다.그래서 결국은 찾을 수가 없습니다.

이 솔루션은 모든 드로어블을 /드로어블 폴더(no -24)로 이동하는 것이었습니다.

이미지 파일을 "drawable-24" 폴더에서 "drawable" 폴더로 복사해야 합니다.

  • 저는 이 문제를 해결할 뿐입니다. 그림 그리기 가능에서 이미지를 삭제하고(v24), 그림 그리기 가능 폴더에 붙여넣기만 하면 됩니다.

저도 같은 오류가 있어서 폴더 drawable-mdpi에서 폴더 drawable로 drawable 이동을 해결했습니다.Android Studio에 있는 동안 모든 것이 완벽하게 작동했기 때문에 Eclipse에서 이 추한 런타임 오류가 발생했다는 것을 깨닫는 데 시간이 걸렸습니다.

노트 편집:Eclipse에서 Android Studio로 마이그레이션할 때 프로젝트가 Eclipse에서 발생하는 경우 발생할 수 있으므로 Android Studio에서는 Eclipse와 약간의 차이가 있으므로 주의해야 합니다.

저는 방금 이 문제가 있어서 그것이 무엇인지 알아냈습니다.내 가치관에 문제를 일으키고 있는 색상을 참조하고 있었습니다.그래서 드롭다운 제안에서 사용하는 대신 수동으로 정의했습니다.효과가 있었어요!

나의 경우, Floating action 버튼을 사용하고 설정할 때 이 오류가 발생합니다.android:backgroundTint="#000"하지 마세요. 하지 .backgroundTint문제가 해결되었습니다.당신에게 도움이 되길 바랍니다.

저도 같은 문제가 있었는데 드로잉 가능 폴더의 이미지 앞에 있는 (24) drawable-v24를 제거하고 일반 drawable로 대체하여 해결되었습니다.

내 모든 드로우블 아이템을 드로우블-v24에서 드로우블로 이동하여 해결했습니다.

API lvl16에서 앱을 실행했을 때도 같은 오류가 있었습니다(26개는 문제가 없었습니다).제가 사용을 했기 때문에.?attrr/colorAccent내 형태로 그려질 수 있습니다.

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

    <corners android:radius="8dp" />

    <solid android:color="@attr/colorAccent" />

</shape>

그것을 일반 색상으로 교체하면 문제가 해결되었습니다.

제 경우에는 레이아웃 파일에 사용하는 라이브러리 UI 구성 요소의 전체 패키지 이름을 지정해야 합니다.

이 실타래가 오래된 것은 알지만, 다른 사람들이 잠 못 이루는 밤을 보내게 하기 위해서라도 여전히 이 실타래에 답을 합니다.

레이아웃 파일이 모두 하드코딩된 속성을 포함하고 있는 오래된 프로젝트를 리팩토링하고 있었습니다.android:maxLength = 500. 그래서 저는 그것을 제 것에 등록하기로 결정했습니다.res/dimen줄을 지어 을 짓다<dimen name="max_length">500</dimen>.

거의 30개의 레이아웃 파일을 내 리-값으로 리팩토링 완료.그거 알아?다음에 내 프로젝트를 실행했을 때 그것은 똑같이 던지기 시작했습니다.InflateException.

해결책으로는 모든 변경 사항을 다시 수행하고 모든 가치를 이전과 동일하게 유지해야 했습니다.

TLDR;

1단계: 모두 잘 돌아가고 있습니다.

2단계: 유지보수를 강화하기 위해 교체했습니다.android:maxLength = 500와 함께<dimen name="max_length">500</dimen>그리고.android:maxLength = @dimen/max_length, 거기서 모든 게 잘못됐어요InflateException).

3단계: 모두 작동 불량

4단계: 모든 작업을 다시 대체하여 다시 수행android:maxLength = @dimen/max_length와 함께android:maxLength = 500.모든게 다 고쳐졌어요.

5단계: 모두 잘 돌아가고 있습니다.

이미지나 모양만 이동

  • drawable-v24부터 drawable 폴더까지

    enter image description here

예외 부풀리기:

android.view.InflateException: Binary XML file line #32: Error inflating class androidx.appcompat.widget.SearchView
    at android.view.LayoutInflater.createView(LayoutInflater.java:633)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
    at androidx.databinding.DataBindingUtil.inflate(DataBindingUtil.java:126)
    at androidx.databinding.DataBindingUtil.inflate(DataBindingUtil.java:95)
    at com.foamkart.Fragment.SearchFragment.onCreateView(SearchFragment.kt:37)

저도 비슷한 문제에 직면했습니다.누구에게나 이것은 코드의 다양한 나쁜 사용의 문제가 될 수 있습니다.

  1. XML의 레이아웃 태그가 잘못되었습니다.
  2. 무거운 리소스를 ImageView에 직접 로드하면 OOM이 발생
  3. 스타일 사용과 관련된 문제.

가장 무시되는 요소 중 하나는 보기를 부풀리는 동안 올바른 컨텍스트를 사용하는 것일 수 있습니다.활동 컨텍스트가 필요한 ApplicationContext를 사용하지 않는지 확인하십시오.그러나 ApplicationContext는 항상 오류가 발생하지는 않지만 보기 계층에 따라 매우 중요할 수 있습니다.

BAD context로 문제를 해결했습니다(4일 만에 Activity 대신 ApplicationContext 사용!).해결되면 해보세요.해피코딩!!

저는 같은 문제에 직면했습니다. 저는 View 대신에 view tag를 xml에 뷰 태그를 xml로 사용했습니다.View 클래스로 교체하면 문제가 해결되었습니다.

당신에게도 도움이 되길 바랍니다.

API Version을 확인해야 합니다.저는 배경색을 제 것에 주곤 했습니다.LinearLayout맘에 들다

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/as_royalblue"
        android:orientation="vertical"></LinearLayout>

물론 저도 같은 실수를 저질렀지만,as_royalblue.xml안에서.drawable폴더

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient
        android:angle="90"
        android:endColor="@color/royalblue_s"
        android:startColor="@color/royalblue_e" />
</shape>

그리고 제가 어떻게 고쳤는지, 사실은 API 문제인 것 같아서 API 24 이상이면 API 레벨을 확인해야 우리가 원하는 대로 사용할 수 있습니다.그러나 24세 미만이면 사용을 피해야 합니다. 저트는 일반 색상이나 색상 그라데이션 혼합이 아닌 하나의 색상을 줍니다.

fun checkAPI_N(): Boolean {
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N)
            return true
        else
            return false
    }

선형 레이아웃에 ID를 부여하고 괜찮으면 배경을 설정합니다.

 if(UtilKotlin.checkAPI_N()){
            linlay_act_menu_container.setBackgroundResource(R.drawable.a_6)
            linlay_act_menu_logo.setBackgroundResource(R.drawable.as_strain)
        }else {//todo normal color background setting}

저는 같은 레이아웃 파일에서 xml 벡터 그래픽 이미지와 일반 png를 섞으려고 했기 때문에 그렇게 되었습니다.

xml 벡터 그래픽을 pngs로 교체하고 나서야 작동하기 시작했습니다.

같은 오류가 있었습니다.Crashlytics이상한 장치로부터:Motorola One Vision Android 5.1 및 20GB(무료) RAM, 루티드 이 장치는 원래 Android 9.0, 4GB RAM과 함께 제공됩니다.

아마 누군가가 내가 현재 개발 중인 앱을 해킹하려고 하는데 다중 APK를 처리하는 데 문제가 있을 것입니다.그래서 그림을 찾을 수 없고 앱이 충돌을 전달합니다.

언급URL : https://stackoverflow.com/questions/4512981/android-view-inflateexception-binary-xml-file-line-12-error-inflating-class

반응형