-
[안드로이드] Manifest merger failed : Attribute application@appComponentFactory value= {...}에러안드로이드(java)/에러 관련 2019. 6. 23. 15:35
2019년 8월부터는 앱을 출시하려면 target sdk를 28로 올려야 한다고 해서
제가 만든 앱 중에 target이 26으로 되어있는 기존 프로젝트를 target28로 올리는 작업을 했습니다.
근데 이게 그냥 깔끔하게 되지 않고 뭐가 자꾸 안된다고 에러 구문이 나오더군요.
그래서 이것저것 변경하고 올리다보니 아래와 같은 에러가 나타났습니다.
Manifest merger failed : Attribute application@appComponentFactory value= {...}
...은 제가 임의로 넣은겁니다.
병합 실패라고 뜨는데요. 아마도 사용하던 26버전의 패키지명이 28버전으로 올리면서 뭔가 달라지지 않았을까 생각됩니다.
정보를 찾다보니 그동안 com.android.support.* 또는 android.support.*와 Android Architecture Component에서 사용하던 android.arch.*의 패키지 명을 안드로이드 라이브러리 28.0.0부터 새로운 androidx.* 패키지 명으로 교체한다고 합니다.
androidx에 관해서는 https://android-developers.googleblog.com/2018/05/hello-world-androidx.html 여기에서 확인하실 수 있습니다.
두 가지 방법으로 해결할 수 있는거 같습니다.
< 첫 번째 방법 >
gradle.properties에서 아래 내용을 추가하고 sync now 를 했습니다.
android.useAndroidX=true
android.enableJetifier=true< 두 번째 방법 >
메뉴 항목의 refactor -> migrate to androidx 를 선택해줍니다.
이렇게 하면 자동으로 마이그레이트 해주는데 백업을 하라는 경고가 나옵니다.
혹시라도 이상이 있을것에 대한 대비정보 되는거 같아요.
권장하는데로 백업을 하고 마이그레이트를 진행합니다.
마이그레이트 하고나니까 app 수준의 gradle의 dependencies 의 내용이 일부 변경 되어 적용 되었습니다.
저는 이 두가지를 다 했는데요. 마이그레이트만 하니까 제대로 되지 않았습니다. 혹시라도 제대로 되지 않는 분은 두 가지 방법을 다 사용해보시는게 어떨까 하네요.
그래도 안되면 다시 백업을 복원 시킨다음에 다른 방법이 있는지 찾아보셔야 할 것 같습니다.
'안드로이드(java) > 에러 관련' 카테고리의 다른 글