-
💡[문제 상황 - 해결] Task :app:processDebugMainManifest FAILED (Gradle Build Failed)| 프로그래밍 분야/안드로이드 2021. 6. 3. 18:29
[개발 환경]
- OS : Windows 10
- IDE : Android Studio
- JDK : JAVA SE 16.0.1
- Dependencies : 라이브러리 하나 추가 (com.android.support.design 28.0.0)
- 상황 : 간단한 Fragment 예제를 연습하던 중 빌드 오류
- Error Output
AGPBI: {"kind":"warning","text":"Please remove usages of `jcenter()` Maven repository from your build scripts and migrate your build to other Maven repositories.\nThis repository is deprecated and it will be shut down in the future.\nSee http://developer.android.com/r/tools/jcenter-end-of-service for more information.\nCurrently detected usages in: root project 'TabPractice2', project ':app'","sources":[{}]} > Task :app:preBuild UP-TO-DATE > Task :app:preDebugBuild UP-TO-DATE > Task :app:compileDebugAidl NO-SOURCE > Task :app:compileDebugRenderscript NO-SOURCE > Task :app:generateDebugBuildConfig > Task :app:javaPreCompileDebug > Task :app:generateDebugResValues > Task :app:generateDebugResources > Task :app:checkDebugAarMetadata > Task :app:createDebugCompatibleScreenManifests > Task :app:extractDeepLinksDebug > Task :app:processDebugMainManifest FAILED [com.android.support:animated-vector-drawable:28.0.0] C:\Users\tkddl\.gradle\caches\transforms-3\230305e0db02ffa6e11689345889f8aa\transformed\animated-vector-drawable-28.0.0\AndroidManifest.xml Warning: Package name 'android.support.graphics.drawable' used in: com.android.support:animated-vector-drawable:28.0.0, com.android.support:support-vector-drawable:28.0.0. [androidx.versionedparcelable:versionedparcelable:1.1.1] C:\Users\tkddl\.gradle\caches\transforms-3\fdb118e41e35a3b4514f477a814ea13e\transformed\versionedparcelable-1.1.1\AndroidManifest.xml Warning: Package name 'androidx.versionedparcelable' used in: androidx.versionedparcelable:versionedparcelable:1.1.1, com.android.support:versionedparcelable:28.0.0. C:\Users\tkddl\Desktop\Android\TabPractice2\app\src\main\AndroidManifest.xml:24:18-86 Error: Attribute application@appComponentFactory value=(androidx.core.app.CoreComponentFactory) from [androidx.core:core:1.5.0] AndroidManifest.xml:24:18-86 is also present at [com.android.support:support-compat:28.0.0] AndroidManifest.xml:22:18-91 value=(android.support.v4.app.CoreComponentFactory). Suggestion: add 'tools:replace="android:appComponentFactory"' to <application> element at AndroidManifest.xml:5:5-19:19 to override. See http://g.co/androidstudio/manifest-merger for more information about the manifest merger. > Task :app:mergeDebugResources FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':app:processDebugMainManifest'. > Manifest merger failed with multiple errors, see logs * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. * Get more help at https://help.gradle.org Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0. Use '--warning-mode all' to show the individual deprecation warnings. See https://docs.gradle.org/7.0.2/userguide/command_line_interface.html#sec:command_line_warnings BUILD FAILED in 36s 8 actionable tasks: 8 executed
[조치 사항]
- 1차로 출력 메세지에서 요구하는대로 Menifest에 뭘 추가하고... Build.Gradle에서 jcenter() 부분 주석처리도 해보고...
- Gradle 버전 문제인가 싶어서 Project Structure에서 Gradle Version을 최신 버전인 7.0.2로 업그레이드함
- 그러나 또 다른 에러로 연결됨. Gradle 버전만 놔두고 나머지는 원상복구시킴.
- React-Native 에서 비슷한 오류가 발생하고 이를 JDK Downgrade로 해결했다는 사람이 있어서 JDK 11로 다운그레이드하여 재시도하였으나 실패.
[해결]
- 이런저런 글 다 찾아보고.. 실험과정 끝에 해결방법 발견
- com.android.support.v7(혹은 v4 등등).app 과 같이 구버전 라이브러리를 import하여 사용할 시 생기는 duplicated Error
(android.support 라이브러리에서 지원하던 클래스 및 메서드들이 이제는 androidx로 통합되어 업데이트 및 기본제공되는데, 옛날 support 라이브러리를 import하면 중복 선언되어 참조를 찾아가지 못하므로 생기는 에러...)
- 따라서, 다음과 같이 해결해주었다.
1) dependencies에서 design과 같은 com.android.support 계열 라이브러리를 해제
2) 거기에 포함되었던 클래스 및 메서드들이 선언된 androidx 계열 라이브러리를 import하여 사용해주면 해결 (자동 import 설정을 해놓았다면 위 1번 수행과 동시에 해결)
- Migrate androidx라는 자동 정정 기능이 있지만, 예기치 못한 에러가 생길 수 있고 프로그램 규모도 크지 않기때문에 수동으로 수정해주었음
android와 androidx의 차이점
그동안 안드로이드는 android 지원 라이브러리에서 기작성된 다양한 클래스 및 메서드들을 제공해왔다. 다만, v4, v7... 등 버전이 혼잡해질수록 호환성 문제가 발생하면서, 다양한 버전을 통합하고
meoru-tech.tistory.com