안드로이드 개발 팁 #81 - Android API 타겟 버전 34로 상향 후, 추가 수정할 사항들
Android API 타겟 버전 34로 상향 후, 추가 수정할 사항들
No. 81
2024. 08. 09 (금) | Written by @dorian-mobileapp
시작하며...
구글에서 강제로 Android API 타겟 버전을 34로 올리라는 공지를 받았습니다. 회사의 기존 앱들 중 일부는 내리고 나머지들에 이를 적용하기로 했습니다. 이게 생각보다 쉽지는 않은 작업이었습니다. 추가로 수정해야 할 사항들이 의외로 많았기 때문이지요. 나중에 시행착오를 반복하지 않기 위해 이번 포스트에 내용 정리를 합니다.
참고로 2024년 8월 9일 기준으로 작성했습니다. 수정할 사항들은 시간이 지나면 변경 또는 추가될 수 있습니다.
Android API 타겟 버전 34로 상향 후, 추가 수정할 사항들
- 프로젝트의 build.gradle 파일
- 모듈의 build.gradle 파일
- gradle.properties 파일
- gradle-wrapper.properties 파일
프로젝트의 build.gradle 파일
- dependencies 블록의 gradle 버전을 8.x.x로 올리기
plugins {
id 'com.android.application' version '8.3.2' apply false
id 'com.android.library' version '8.3.2' apply false
// ...
}
또는
buildscript {
// ...
dependencies {
classpath "com.android.tools.build:gradle:8.3.2"
// ...
}
}
- Kotlin 버전 1.8 이상으로 설정
plugins {
// ...
id 'org.jetbrains.kotlin.android' version '1.8.0' apply false
}
또는
buildscript {
// ...
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.0"
// ...
}
}
모듈의 build.gradle 파일
- android 블록에 namespace 추가
- namespace: 앱 패키지와 동일
android {
namespace "(앱 패키지와 동일)"
// ...
}
- 자바 버전 1.8에서 17로 변경
android {
// ...
compileOptions {
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}
kotlinOptions {
freeCompilerArgs = ['-Xjvm-default=enable']
jvmTarget = '17'
}
// ...
}
- androidx에 속하는 라이브러리 버전 업
- 일단 수정하지 않고 빌드 시도해보고, 빌드 오류 확인 후 수정
- 수정시 안드로이드 스튜디오가 자동으로 권장하는 버전으로 설정하면 무난 (2024. 8. 9 기준)
gradle.properties 파일
- android.nonFinalResIds 속성을 false로 설정
- 기존 자바 코드의 switch 문에서 case의 값이 리소스 ID이면, 빌드 오류 발생하기 때문
android.nonFinalResIds = false
gradle-wrapper.properties 파일
- distributionUrl에서 파일 이름 변경
- 이전: gradle-7.x-bin.zip (7.x 이하의 버전)
- 변경: gradle-8.4-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip
지난 안드로이드 개발 팁
- #80 - 액티비티에서 설정 화면 실행 방법 (1)
- #79 - (개념정리) 서비스란?
- #78 - 구글 로그인 적용을 위한 SHA 인증서 등록
- #77 - View 객체의 post 메소드를 실행해야 할 경우
- #76 - Firebase의 Crashlytics 적용 방법
- #75 - n초 뒤 자동으로 다음 화면으로 넘어가는 코드를 코루틴으로 개발시 주의점
- #74 - assets 폴더의 오디오 파일을 재생하는 MediaPlayer 클래스의 확장함수
- #73 - assets 폴더의 오디오 파일 재생 준비하는 MediaPlayer 클래스의 확장함수
- #72 - ConstraintLayout에서 자식 뷰의 z 순서 정하기
- #71 - Serializable 객체를 간단히 읽을 수 있는 Intent 클래스의 확장함수 구현
- #70 - 2가지 조건에 따라 배경색을 다르게 설정하기 위한 selector 리소스 정의 방법
- #69 - ToggleButton 뷰에 적용된 그림자 효과 제거
- #68 - 타겟팅 버전 33 변경 후, 발생하는 SecurityException 해결 방법 (from registerReceiver)
- #67 - 인텐트에 데이터를 읽거나 기록할 때 발생하는 BadParcelableException 예외
- #66 - Deprecated 코드 개선: Intent 클래스의 getSerializableExtra 메소드
- #65 - 화면 전체를 차지한 뷰를 위로 밀어 올리는 애니메이션 리소스
- #64 - android.database.Cursor 클래스의 확장 함수
- #63 - 모서리가 둥근 사각형
- #62 - 키보드 숨김 실행 방법 그리고 이를 실행하는 확장 메소드
- #61 - 타겟 SDK 버전을 34로 설정 후 수정해야 하는 코드
- #60 - (ChatGPT 활용) 아이디에 마스크 적용하기
- #59 - ChatGPT로 간단한 코딩은 질문으로 물어보자
- #58 - TextView 뷰에 스크롤 적용 방법
- #57 - JSON 포맷의 문자열을 GSON 라이브러리 제공 JsonObject 타입으로 변환
- #56 - 앱이 백그라운드 모드에서도 라이브 데이터 관찰 방법
- #55 - 프래그먼트에서 코루틴 플로우 수집 주기 정하기
- #54 - 떠 있는 키보드 숨기는 방법
- #53 - 1줄의 텍스트를 입력받는 EditText 뷰에서 엔터 키 누름 처리 방법
- #52 - 마크다운 텍스트를 웹뷰로 보여주기 위해 추가로 설정해야 할 것
- #51 - 마크다운 텍스트를 HTML 텍스트로 변환한 후 스타일 적용 방법
- #1 ~ #50
Layout provided by Steemit Enhancer hommage by ayogom
Posted through the ECblog app (https://blog.etain.club)
[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.
Thank you, friend!


I'm @steem.history, who is steem witness.
Thank you for witnessvoting for me.
please click it!
(Go to https://steemit.com/~witnesses and type fbslo at the bottom of the page)
The weight is reduced because of the lack of Voting Power. If you vote for me as a witness, you can get my little vote.
Upvoted! Thank you for supporting witness @jswit.