레이아웃의 레이아웃 <layout>에 기본 레이아웃 폴더에 선언이 없습니다. [error] 한정자와 일치하지

Android Studio 3.2, API 28로 마이그레이션 한 후 앱 레이아웃에 다음 오류가 표시됩니다.

레이아웃의 레이아웃은 기본 레이아웃 폴더에 선언이 없습니다. 이 한정자와 일치하지 않는 구성에서 리소스를 쿼리하면 충돌이 발생할 수 있습니다.

이 오류가 발생하는 레이아웃 중 하나는 다음과 같습니다.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:background="@null" >

      <FrameLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="top|center_horizontal"
            android:adjustViewBounds="true"
            android:contentDescription="@string/hello_world"
            android:src="@drawable/loading_top" />

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|center_horizontal"
            android:adjustViewBounds="true"
            android:contentDescription="@string/hello_world"
            android:src="@drawable/loading_bottom" />

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:contentDescription="@string/hello_world"
            android:background="@color/white"
            android:layout_marginBottom="5dp"
            android:paddingTop="10dp"
            android:paddingBottom="10dp"
            android:src="@drawable/loading_logo" />

        <ImageView
            android:id="@+id/loading"
            android:layout_width="fill_parent"
            android:layout_height="match_parent"
            android:layout_gravity="center|center_vertical"
            android:layout_marginBottom="0dp"
            android:layout_marginTop="0dp"
            android:contentDescription="@string/hello_world"
            android:scaleType="fitXY"
            android:src="@null" />
    </FrameLayout>
</LinearLayout>

첫 번째 LinearLayout의 첫 번째 줄에 오류가 발생합니다.

누구든지이 오류를 해결하는 방법을 알고 있습니까?

감사합니다

업데이트 : 무엇이 문제를 해결했는지 내 질문에 대답했습니다.



답변

제 경우에는 Android 스튜디오를 닫고 다시 열면 문제가 해결되었습니다. 프로젝트를 다시 빌드하거나 캐시를 지우는 것은 도움이되지 않았습니다.


답변

다음을 시도해 볼 수도 있습니다.

파일 => 캐시 무효화 / 재시작 => 무효화 및 재시작.


답변

제 경우에는 파일 이름에 대문자를 사용했습니다. 나는 모든 것을 소문자로 남겨두고 수정되었습니다.


답변

레이아웃을 고안하는 경우 : layout-sw320dp layout-sw480dp layout-sw600dp layout-sw720dp ….

기본적으로 다음과 같이 레이아웃을 추가해야합니다.


답변

Gradle 모듈간에 레이아웃 파일을 이동할 때이 오류가 발생했습니다 . 프로젝트를 다시 시작 하고 정리할 때 자체적으로 해결 되므로 캐시무효화 할 때 까지 갈 필요가 없었습니다 . IDE 버그 인 것 같습니다 .Android Studio


답변

제 경우에는 다음 과 같이 해결했습니다 .

안드로이드는이 id-error : MissingDefaultResource 를 문서로 말합니다.

리소스가 -land 또는 -en과 같은 한정자가있는 폴더에만 정의되고 기본 폴더 (레이아웃 또는 값 등)에 기본 선언이없는 경우 해당 리소스가 디바이스가있는 디바이스에서 액세스되면 앱이 충돌합니다. 주어진 한정자가없는 구성에 있습니다.

특수한 경우 드로어 블을 기본 폴더에 지정할 필요가 없습니다. 밀도 폴더 (예 : drawable-mdpi)에 일치하는 항목이 있으면 해당 이미지가 사용되고 크기가 조정됩니다. 그러나 drawable-en-hdpi와 같은 폴더에 드로어 블 만 지정하면 영어가 아닌 로케일에서 앱이 중단됩니다.

동일한 한정자 (예 : -fr 스타일)를 가진 다른 리소스에서만 참조되는 -fr 드로어 블과 같은 리소스가 있고 자체적으로 안전한 폴 백이있는 시나리오가있을 수 있습니다. 그러나 이렇게하면 누군가가 실수로 드로어 블을 참조하고 충돌 할 수 있으므로 기본 폴더에 기본 더미 폴백을 만드는 것이 더 안전합니다. 또는 요소에 tools : ignore = “MissingDefaultResource”를 추가하여 문제를 억제 할 수 있습니다.

(이 시나리오는 코드와 해당 리소스를 삭제할 수 있지만 번역을 삭제하는 것을 잊어 버릴 수있는 문자열 번역에서 자주 발생합니다. 해당 시나리오에 대한 전용 이슈 ID와 ID ExtraTranslation이 있습니다.)

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:tools="http://schemas.android.com/tools"
      tools:ignore="MissingDefaultResource" <!--this-->
      android:layout_width="match_parent"
      android:layout_height="match_parent">

그러나 이것은 쉬운 해결책입니다. 왜냐하면 당신은 안드로이드에서 자원을 놓치기 때문입니다.

파일 시스템 옵션 으로이 문제를 해결합니다 . 경우 안드로이드가 어떤 것을 의미 RESOURSE 실종에 대해 말씀이 없습니다 당신은 그것을 보충해야한다.

\ app \ src \ main \ res로 이동해야합니다.

아마도 : 파일의 누락 된 폴더를 마우스 오른쪽 버튼으로 클릭하고 Exporer에 표시 한 다음 \ app \ src \ main \ res로 돌아갑니다.

당신은 찾아야합니다

/layout

/layout-normal

/layout-large

/some more folders

파일이 누락 된 위치를 찾아야합니다. 내 경우에는 / layout에 누락되었습니다.