오랜만의 글이다. 취준 중 아버지 앱이 있었는데 에러가 생겨 구글 플레이에 업데이트를 못하는 문제가 생겼다. 그 문제를 파헤치며 생긴 상황, 문제, 해결책을 찾는 과정을 적어보겠다.
24/02/16
일단 문제를 정의해야한다. 지금 내가 가지고 있는 정보는 구글 플레이에 업데이트가 안된다는 문제였다. 그래서 구글 플레이 콘솔에 들어가 에러를 봐보자.
위 메세지를 보니 API 수준이 많이 뒤떨어졌다는 에러 메세지를 확인할 수 있었다. 그러니 앱 프로젝트를 열어봐서 버전을 파악해 업그레이드를 진행해야한다.
이걸 이제 업그레이드 해보자.
안드로이드 스튜디오가 되게 편한 게 프로젝트를 만들거나 있는 프로젝트를 로드할 때 SDK 버전들을 알아서 감지해주고, 이게 지금 안드로이드 권장 레벨과 비교해 SDK 버전 관리를 할 수 있다.
안드로이드 스튜디오를 설치 후 프로젝트를 열면 다음과 같은 화면이 펼쳐진다.
사진을 보면 알겠지만 SDK 버전들이 29에 맞춰져 있다.
targetSdkVersion
에 빨간 줄이 그여져 있어 마우스 오버해 확인해보면, 구글 플레이의 권장 API 레벨이 뒤떨어졌으니 (SDK)API 33 이상으로 업그레이드 하라고 나와있다.
즉, 저 버전들을 이제 최신으로 고쳐야 한다.
위 상단 메뉴의 File => Project Structure로 클릭하거나
Command
+ ;
를 클릭하면 프로젝트 관련 구조들이 나온다.
Project Structure로 들어가면 아래 항목들이 나온다. 내가 건든 항목만 보겠다.
문법, 빌드, 인터페이스 등 Gradle 설정에 최신 버전을 입력하자.
Android Gradle 플러그인은 Gradle을 통해 안드로이드 프로젝트를 빌드하는 데 필요한 도구들을 제공한다. 최신 버전의 Android Gradle 플러그인을 사용하면 최신 빌드 시스템 기능을 사용할 수 있으며, 최신 버전의 Android Studio와의 호환성도 보장된다. 또한, 최신 버전을 사용함으로써 다양한 버그 수정과 성능 개선을 누릴 수 있다.
Android Gradle 플러그인의 최신 버전을 설정하려면 다음과 같은 절차를 따른다
최신 버전 확인: 먼저, Android Gradle 플러그인의 최신 버전을 확인한다. 이를 위해 Android Gradle Plugin Release Notes 페이지를 참고할 수 있다.
프로젝트 수준의 build.gradle 파일 수정: 프로젝트 루트 디렉토리에 있는 build.gradle
파일을 열어, classpath 'com.android.tools.build:gradle:XX.X.X'
라인을 최신 버전으로 수정한다.
gradle
buildscript {
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:8.2.2' // 최신 버전으로 업데이트
}
}
Gradle Wrapper 업데이트: Gradle Wrapper도 최신 버전으로 업데이트해야 한다. 프로젝트 루트 디렉토리의 gradle/wrapper/gradle-wrapper.properties
파일을 열어, distributionUrl
을 최신 Gradle 버전으로 수정한다.
distributionUrl=https\://services.gradle.org/distributions/gradle-8.2.1-all.zip
위와 같이 최신 버전을 입력하면 Gradle 빌드 시스템의 모든 최신 기능과 성능 개선을 누릴 수 있으며, Android Studio와의 호환성도 높아진다.
apply plugin: 'com.android.application'
android {
compileSdk 34
buildToolsVersion '34.0.0'
defaultConfig {
applicationId "homebeleve.CU"
minSdk 24 // 여기서 minSdk를 24로 수정함
targetSdk 34
versionCode 20
versionName "20.1"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
namespace 'homebeleve.CU'
}
dependencies {
...
}
이제 코드를 수정한 후, 프로젝트를 다시 빌드해 보자. 빌드가 정상적으로 완료되면, 수정된 API 레벨이 제대로 적용된 것이다. 만약 빌드 중 오류가 발생한다면 오류 메시지를 잘 확인하고 필요한 부분을 추가로 수정해야 한다.
+ 나는 이후 안드로이드에서 HTML input
태그를 이용한 파일 업로드 기능이 자꾸 무반응이거나 꺼져서 이후 과정을 나중에 서술 하겠다.
그 다음 배포에 관해 쓸려고 했는데, 너무 간단히 개발자 콘솔에 올리고, 승인만 기다리면 되기 때문에 따로 쓰진 않겠다. 알아서 빌드해서 올리면 프로젝트의 버전을 콘솔이 자동으로 인식하고, 배포 가능 API 레벨이 된다면 승인 될 것이다.
자, 이렇게 API 버전을 올리는 과정을 그려봤다.
내 앱의 API 레벨을 최신으로 유지하면 당연하게도 최신 안드로이드 기능들을 사용할 수 있고 보안성도 높아진다. 물론 나는 구글 플레이스토어에서 요구하는 최소 API 레벨을 충족시켜야 앱을 배포할 수 있기 때문에 업그레이드 했지만은 구글은 API 레벨을 올리면서 보안성을 챙기려고 하니까 필수적으로 해야한다.
자바 문법만 알고 오랜만에 하니 간단했지만 조금 어려웠다^^