728x90
Manifest merger failed : Attribute application@appComponentFactory value=(android.support.v4.app.CoreComponentFactory) from [com.android.support:support-compat:28.0.0-alpha3] AndroidManifest.xml:22:18-91
is also present at [androidx.core:core:1.0.0-alpha3] AndroidManifest.xml:22:18-86 value=(androidx.core.app.CoreComponentFactory).
Suggestion: add 'tools:replace="android:appComponentFactory"' to <application> element at AndroidManifest.xml:5:5-19:19 to override.
이 문제는 androidx와 관련된 문제이다
아무 문제 없이 빌드하다가 어느 순간 나타난 오류로 발생 이유를 추측하기 어렵다
구글링을 통해 여러 자료들을 본 후 결론은 앞으로 안드로이드 프로그래밍에 androidx를 표준으로 만들려 하는 것으로 추측된다
안드로이드가 업데이트를 하면서 androidx로 바꿔야 할 것 같아 미리 대부분의 것들을 androidx로 바꾸었다
바꾸는 과정은 안드로이드 스튜디오에서 지원하여 생각보다 간단하게 진행했다
Refactor - Migrate to AndroidX... 를 통해 자동으로 변환이 가능하다
이후에도 오류가 사라지지 않아 코드를 전부 확인해봤더니 아직 v7 또는 v4의 Widget들이 import되어 있었다
이러한 것들을 모두 지운 후 androidx로 import를 다시 했다
하지만 그럼에도 사라지지 않는 오류..
안드로이드 레퍼런스를 찾아봤더니 xml 파일의 태그가 androidx 버전은 달라진 것을 확인할 수 있었다
대표적으로 ConstraintLayout이 어떻게 바뀌었는지 보면
androidx.constraintlayout.widget.ConstraintLayout
으로 바뀌었다
이렇게 바뀐 태그들을 모두 수정하고 실행했더니 오류가 사라지고 잘 빌드되는 것을 확인할 수 있었다
추가로 gradle.properties에 두 줄의 코드를 추가한다
android.useAndroidX=true
android.enableJetifier=true
728x90
'개발 > Adroid' 카테고리의 다른 글
[android studio] RecyclerView (0) | 2019.08.16 |
---|---|
[android studio] Fragment (0) | 2019.08.16 |
[android] Google Maps Android API 사용 방법 및 예제 (1) | 2019.08.09 |
android 타이틀 or 상태 바 없애기 / 전체화면 (0) | 2019.07.30 |
[Android] 설치 앱 아이콘 바꾸기 (0) | 2019.07.30 |
댓글