구 시스템 대신 Gradle을 사용하여 Android 프로젝트를 익스포트하도록 한 경우 빌드 오류가 생길 수 있으며, 이는 특히 추가 Android 라이브러리를 사용하거나 커스텀 AndroidManifest.xml 을 추가한 경우 발생할 수 있습니다.
Android Gradle 플러그인은 이전 ADT/Ant 시스템보다 훨씬 더 까다롭습니다. 심볼 중복, 존재하지 않는 리소스 참조, 또는 주 애플리케이션과 동일한 속성을 설정한 라이브러리 프로젝트와 같이 오류로 간주되는 상황을 수용하지 않습니다.
대부분의 경우 문제를 해결하려면 주 파일이든, 프로젝트가 사용하는 라이브러리 파일이든, AndroidManifest.xml 파일을 수정해야 합니다.
단순하지 않은 프로젝트이거나, 아래의 문제 해결 섹션에서 설명된 오류 외의 문제가 발생한 프로젝트의 경우, 프로젝트를 Gradle 프로젝트로 Build Settings에서 익스포트한 후 커맨드 라인에서 빌드합니다. 커맨드 라인에서 빌드하면 자세한 오류 메시지가 출력되며, 변경 시 더 빨리 적용할 수 있게 합니다.
주 파일 또는 라이브러리 내에 있는 AndroidManifest.xml 파일이 존재하지 않는 리소스를 참조하는 경우입니다. 간혹 라이브러리가 설정한 애플리케이션 아이콘이나 레이블 문자열이 원인인 경우가 있습니다. 이 문제는 이러한 참조를 제거하지 않은 상태에서 주 매니페스트 파일을 라이브러리 프로젝트에 복사한 경우 발생합니다.
이들 속성을 Android Manifests에서 제거합니다. 보통 라이브러리의 속성을 제거하면 됩니다.
android:minSdkVersion
속성은 AndroidManifest.xml
파일에 지정되어 있습니다. 메인 매니페스트 파일에 있거나, Unity가 Android 라이브러리로 취급하는 디렉토리 중 하나의 파일에 있을 수 있습니다. .aar 플러그인은 이 문제를 유발하지 않아야 합니다.
해결 방법은 메인 매니페스트 및/또는 라이브러리 디렉토리의 매니페스트에서 uses-sdk android:minSdkVersion
요소를 제거하는 것입니다. 대신 build.gradle
파일에 최소 SDK 버전을 지정해야 합니다. 커스텀 Gradle 템플릿이 없으면 Unity가 이 작업을 자동으로 처리합니다. 커스텀 Gradle 템플릿이 있으면 minSDK가 템플릿의 defaultConfig
섹션에 지정되어 있는지 확인하십시오.
주 애플리케이션과 라이브러리 프로젝트, 또는 라이브러리 프로젝트 간 파일 이름 충돌이 발생한 경우입니다. 모든 파일이 동일한 APK 패키지에 복사된다는 점을 기억하십시오.
중복된 파일 중 하나를 제거해야 합니다.
라이브러리는 동일한 Java 패키지를 주 애플리케이션이나 다른 라이브러리에 사용할 수 없습니다.
일반적으로 라이브러리의 패키지 이름을 다르게 변경해야 합니다. 라이브러리에 다수의 코드가 포함되어 있으면 주 패키지 이름을 변경하는 것이 쉬울 수도 있습니다(Player 설정에서).
라이브러리가 주 파일(AndroidManifest.xml
)의 속성을 자유롭게 오버라이드할 수 없는 경우입니다. 이 오류는 위의 Resource not found 오류와 비슷하게, 라이브러리에 애플리케이션 아이콘이나 레이블 스트링 설정으로 인해 자주 발생합니다.
해당 속성을 라이브러리에서 제거하거나, application 태그에 tools:replace 속성을 추가하여, 병합 충돌이 해결되는 방식을 표시합니다.