업무 때문에 안드로이드 탭에 앱을 구동할 일이 생겼다.
그런데 3년 된 안드로이드 폰에서도 구동되는 앱이 최근 매입한
안드로이드 탭에서 아무 에러도 나오지 않고 검은색 화면만 구동되었다.
무엇인 문제인가 한참 삽질하다가 생각지도 못한 곳에서 문제점을 찾았다.
3년된 안드로이드 버전이 13(sdk33)인데 최근 매입한 탭 버전이 11(sdk30) ㅡ.ㅡ
앱 소스를 보니 targetSdk = 33을 빌드되어 sdk30에서 앱이 실행되지 않았다.
그래서 targetSdk을 30으로 낮추고 빌드를 했더니 빌드 에러가 발생했다.
에러는 아래와 같았다.
Lint found fatal errors while assembling a release target. Fix the issues identified by lint, or create a baseline to see only new errors. To create a baseline, run gradlew updateLintBaseline after adding the following to the module's build.gradle file: android { lint { baseline = file("lint-baseline.xml") } } For more details, see https://developer.android.com/studio/write/lint#snapshot ~~~~~ 중략 ~~~~~ Explanation for issues of type "ExpiredTargetSdkVersion": Configuring your app or sdk to target a recent API level ensures that users benefit from significant security and performance improvements, while still allowing your app to run on older Android versions (down to the minSdkVersion). To update your targetSdkVersion, follow the steps from "Meeting Google Play requirements for target API level", https://developer.android.com/distribute/best-practices/develop/target-sdk. html https://support.google.com/googleplay/android-developer/answer/113469#targetsdk https://developer.android.com/distribute/best-practices/develop/target-sdk.html
대략 원인은 Play store는 targetSdkVersion 33 이상을 요구하기 때문에 targetSdk = 30으로 낮추면 빌드 에러가 발생했다.
해결방법은 play store에 배포하려면 방법이 없다. 그냥 구버전 안드로이드 기기는 포기…
다행히 나는 로컬 테스트라서 build.gradle.kts에 아래 내용을 추가했다.
android { lint { checkReleaseBuilds = false abortOnError = false } }
만약 테스트는 디버그는 30, 릴리스는 33으로 하고 싶다면 아래 내용을 추가하면 된다.
buildTypes { debug { targetSdk = 30 // 디버그 빌드에서만 낮춘 API 적용 } release { targetSdk = 33 // Play Store용 릴리스 빌드는 33 유지 } }
댓글