
안녕하세요. 주코입니다.
최근, 개인 프로젝트에서 더 많은 사용자를 위해 minSDK를 26에서 24로 다운그레이드하면서, AAPT: error: <adaptive-icon> elements require a sdk version of at least 26. 즉, AAPT 에러를 마주하게 되면서 해결법과 그 이유를 설명하려고 합니다.
아마, 해당 에러를 마주하신 분들께서 해결법을 찾기위해 여러 레퍼런스를 둘러보면 확실한 해결법이 아닌, 그저 "minSDK버전을 26으로 올려라" 라는 글들을 많이 마주쳤을 거라 예상합니다. 저희 방법으로 해당 문제를 원활하게 해결하셨으면 좋겠습니다 :D
에러 원인
해당 에러의 원인은 간단합니다.
AAPT(Android Asset Packaging Tool)는 AndroidStudio 및 Android Gradle 플러그인이 이 앱의 리소스를 컴파일하고 패키징 하는 데 사용하는 빌드 도구입니다. 그런데 에러 내용에 나와있는 <adaptive-icon> 태그는 API 26에서 도입이 됐습니다.
따라서 저는 ic_launcher.xml 파일과 ic_launcher_round.xml 파일에 의해 에러가 발생했기에 해당 파일들이 있는 mimap-anydpi 폴더를 SDK26 이상으로 분리해 놨어야 했습니다.
(만약, 위 이미지의 mimap-anydpi 폴더가 보이지 않는다면 프로젝트 구조를 Project로 설정을 바꾸셔야합니다. Android 아닙니다.)
위 이미지를 보시면 minSDK 26 버전에서 mipmap-anydpi 폴더와 mipmap-anydpi-v26 폴더가 나뉘어 있고
mipmap-anydpi 폴더에 ic_launcher.xml 파일과 ic_launcher_round.xml 파일이 있는것을 확인할 수 있었습니다.
여기서 mipmap-anydpi/ 는 버전 한정자가 없기 때문에 모든 API 레벨 공용 리소스로 간주됩니다.
즉, minSDK 24로 낮춘 지금, AAPT는 모든 API 레벨에서 써야 하는 리소스인데 내부에 API 26에서만 존재하는 <adaptive-icon>가 있어서 컴파일이 거부되는 것이였습니다.
해결 방법
기존 mipmap-anydpi 폴더의 ic_launcher.xml 파일과 ic_launcher_round.xml 파일을 mipmap-anydpi-v26 폴더로 옮기고 mipmap-anydpi 폴더를 삭제합니다.
'Android Studio > - Honey Tip' 카테고리의 다른 글
주코딩의 개발 노트!
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!