Android

안드로이드 빌드시 unexpected element found in 오류가 발생할 때 처리방법

안드로이드 스튜디오에서 프로젝트 빌드하는 과정에 발생한 오류입니다. 

error:unexpected element <queries> found in <manifest>

이 오류가 발생한 이유는 manifest에서 queries 엘리먼트가 보이지 않지만 빌드하는 과정에 생성되었기 때문입니다.

Gradle버전에 따라 나타나는 오류입니다. Android 11 에서 <queries>가 매니페스트 요소로 도입 되었으며 Android Gradle 플러그인의 이전 버전은 해당 요소에 대해 알지 못합니다. 그럼으로 오류가 발생합니다.

 

다음은 구글 개발자 블로그에 실린 내용입니다.

Android Studio 및 Gradle 지원
Android Gradle 플러그인 4.1 이상을 사용하는 경우 도구가 새 <queries> 선언 과 함께 작동해야합니다.
그러나 이전 버전의 Android Gradle 플러그인은이 새로운 요소를 인식하지 못합니다. 
<queries>요소 를 추가 하거나 Android 11 타겟팅을 지원하는 라이브러리 
또는 SDK에 의존하기 시작하면 매니페스트 병합 오류가 발생할 수 있습니다. 

예를 들어 앱을 빌드 할 때 빌드 출력 창에 다음 오류가 표시 될 수 있습니다.
Android resource linking failed /Users/sample
/AndroidStudioProjects/MyApp/app/build/intermediates
/merged_manifests/debug/AndroidManifest.xml:18: 

error: unexpected element <queries> found in <manifest>
또는 매니페스트 병합 로그로 이동하는 빌드 출력 창에 오류가 표시 될 수 있습니다

Manifest merger failed with multiple errors, see logs

병합 된 매니페스트보기 를 확장하면 다음이 표시됩니다. 추가 오류 :
Error: Missing 'package' key attribute on element package

병합된 매니페스트보기

 

“Google은이 문제를 해결하기 위해 일련의 Android Gradle 플러그인 패치 버전을 출시했습니다.

Android Gradle 플러그인 수정

이러한 오류를 처리하는 가장 좋은 방법은 Android Gradle 플러그인 4.1 베타 로 업그레이드하는 것 입니다.
하지만 모든 사람이 최신 버전으로 업그레이드 할 준비가되어 있지는 않으며 이전 버전의 Gradle 또는 4.1과 호환되지 않는 라이브러리에 의존하고있을 수 있습니다.
따라서 오늘 우리 는 다음과 호환되는 Android Gradle 플러그인 용 도트 릴리스 세트를 발표 했습니다 <queries>.

 

해결방법

프로젝트 build.gradle 파일에서 Gradle버전을 업데이트해야합니다.

버전별로 업데이트 버전이 다르니 아래 도표를 참고하세요.


source: 구글 개발자 블로그

 buildscript {

    repositories {
        google()
        jcenter()
    }

    dependencies {
        // classpath 'com.android.tools.build:gradle:4.0.0'
        classpath 'com.android.tools.build:gradle:4.0.1'
    }
}

 

Leave a Reply

error: Content is protected !!