Chip을 사용하기 위해 build.gradle - dependencies에 Support Library를 추가하고, XML & 소스코드 파일에 Chip을 추가한 후 빌드하던 중 다음과 같은 오류가 발생했다.
implementation 'com.android.support:design:28.0.0'
먼저 메니페스트 파일에 문제가 생긴 것 같아 메니페스트 파일을 열어보고, 하단의 Merged Manifest를 클릭해서 오류 내용을 확인해봤다.
<application
...
tools:replace="android:appComponentFactory">
...
</application>
처음엔 application 태그 내의 tools:replace 부분을 지우라는건가 싶어서 지우고 다시 빌드했지만 해결되지 않았다. 그래서 다시 build.gradle(module) 파일을 확인해봤는데, chip을 사용하기 위해 추가했던 라이브러리에서 다음과 같이 빨간색으로 밑줄이 그어져 있었다. 해당 라이브러리를 지우고 다시 빌드한 다음,
support library의 chip을 material design의 chip으로 변경하고,
<android.support.design.chip.ChipGroup
android:id="@+id/tagGroup"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
...
/>
<!--다음과 같이 변경!-->
<com.google.android.material.chip.ChipGroup
android:id="@+id/tagGroup"
android:layout_width="0dp"
android:layout_height="wrap_content"
...
/>
chip을 사용했던 소스코드에서 import 했었던 support library의 chip을 삭제했더니 문제가 해결되었다.
문제는 해결되었지만, 이 문제는 chip 라이브러리 자체의 문제가 아니였기 때문에 Manifest Merger failed가 발생한 근본적인 문제가 무엇인지 알아야 했다. 따라서 StackOverFlow에서 여러개의 글을 참고했다. 도움이 되었던 글들의 링크를 첨부해놓겠다 ✔
계속 빌드에 실패했던 이유는 내가 AndroidX 라이브러리와 Android Support 라이브러리를 동시에 사용했기 때문이었다. Support 라이브러리는 2018년 이전에 사용했던 지원 라이브러리로, 개발자들을 혼란스럽게 하는 네이밍과 패키지별 의존성과 같은 단점들을 가지고 있었다. 따라서 이를 보완하기 위해 Jetpack 뿐만 아니라 기존의 Support 라이브러리도 지원하는 새로운 버전의 지원 라이브러리 AndroidX가 등장했다. Android 9.0의 출시와 함께 구글은 28.0.0 버전을 마지막으로 Support 라이브러리에 대한 지원을 중단했고, 모든 프로젝트에 AndroidX 라이브러리를 사용하도록 권고했기 때문에, 가급적이면 AndroidX 라이브러리를 사용하거나, 기존의 Support 라이브러리를 AndroidX로 마이그레이션하여 사용해야한다.
https://www.geeksforgeeks.org/difference-between-androidx-and-android-support-libraries/
https://medium.com/daangn/support-library-androidx-%EA%B7%B8%EB%A6%AC%EA%B3%A0-jetifier-%ED%95%AD%ED%95%B4%EA%B8%B0-2fb558f56be