The minCompileSdk (31) specified in a dependency's AAR metadata (META-INF/com/android/build/gradle/aar-metadata.properties) is greater than this module's compileSdkVersion (android-30). Dependency: androidx.core:core:1.7.0.
새 프로젝트를 만들어 빌드를 하는데 위와 같은 오류가 났다. 며칠 전까지 작성하던 프로젝트와 비교해보니 build.gradle(:app)의 implementation 'androidx.core:core-ktx:1.7.0' 부분이 1.6.0에서 1.7.0으로 바뀌어 있었다.
인터넷에서 많이 쓴다던 CSS Reset code(CSS 초기화 코드)를 복붙 할 때, 리스트 스타일을 없애는 코드를 빼도 리스트 스타일이 사라진다.
왜 그럴까?
일단 리스트 스타일이 제대로 적용된 화면을 보자.
그리고 이건 li { list-style: none; }을 써서 리스트 스타일을 없앤 모습이다. ol, ul { list-style: none; }을 써도 된다.
그리고 많이들 쓰는 Eric Meyer's Reset CSS에서 ol, ul { list-style: none; }를 지우고 붙여넣기를 하면 이렇게 나온다.
결과를 놓고 비교하니 답이 나온다.
'공백'이 문제다.
<ol>과 <ul>은 기본적으로 리스트의 위아래로 16px의 margin을 갖고, 왼쪽으로는 40px의 패딩을 갖는다. 그리고 이 padding값 안에 리스트 스타일이 포함된다.
그런데 CSS 초기화 코드를 보면 보통 전체 태그의 margin과 padding을 0으로 설정한다.
* { margin: 0; padding: 0;} 을 쓰는 경우, 또는 Eric Meyer's Reset CSS에서처럼 ol, ul { margin: 0; padding:0; }을 적용하면 <ol>과 <ul> 이 갖는 숫자와 점 같은 리스트 스타일뿐만 아니라 여백까지 사라진다. margin과 padding을 없애니 리스트 스타일이 함께 사라지는 것이다.
크롬의 검사 기능으로 쉽게 확인할 수 있다.
참고로 리스트 스타일은 padding에 포함되므로 margin만 0으로 초기화하면 리스트 스타일은 적용되고 위아래 여백만 사라진다.
반대로 margin은 그대로 두고 padding만 초기화하면 <ol> 리스트 앞에는 .dummy 와 같이 점이 붙어있는 이상한 모양이 된다.
별 쓸데 없는 내용으로 한 시간 넘게 버렸다. 하지만 원인을 알고 나니 뿌듯하다. 이런 게 개발의 재미인가?