[Android] compileSdkVersion, targetSdkVersion 다르게 지정하는 이유

[Android] compileSdkVersion, targetSdkVersion 다르게 지정하는 이유

안드로이드 프로젝트의 버전을 하나로 통일할 경우 문제가 발생하는 경우가 있었다.

필수적으로 넣어야 하는 권한처리 코드가 버전 23 (M, Marshmallow) 이상에서만 유효했다.

그런데 프로젝트에 포함된 라이브러리 중 하나가 버전 21 (L, Lollipop) 을 초과한 버전에서는 오류가 발생했다.

해당 라이브러리는 타 업체에서 개발한 것으로, 이것을 바꾸는 것은 현실적으로 무리였다.

그렇다고 SDK 버전을 21로 낮추자니, 권한처리 쪽 코드가 빨간색으로 표시되며 빌드 실패하였다.

결론은 compile SDK 버전과 target SDK 버전을 다르게 지정하여 해결하였다.

1. build.gradle 파일 수정
(1) compileSdkVersion 을 23 으로 지정 (권한처리 코드가 빌드 오류나지 않도록 지정)
(2) minSdkVersion 을 14 로 지정
(3) targetSdkVersion 을 21 로 지정 (특정 라이브러리를 동작시키기 위해 지정)

2. AndroidManifest.xml 파일 수정
(1) android:minSdkVersion 을 14 로 지정
(2) android:targetSdkVersion 을 21 로 지정 (특정 라이브러리를 동작시키기 위해 지정)