Today
-
Yesterday
-
Total
-
  • 💡[문제 상황 - 해결] 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와 androidx의 차이점

    그동안 안드로이드는 android 지원 라이브러리에서 기작성된 다양한 클래스 및 메서드들을 제공해왔다. 다만, v4, v7... 등 버전이 혼잡해질수록 호환성 문제가 발생하면서, 다양한 버전을 통합하고

    meoru-tech.tistory.com

     

sangilyoon.dev@gmail.com