일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- UiState
- 클린아키텍처
- 알고리즘
- DiffUtil
- XML
- 안드로이드
- 파이어베이스
- Kotlin
- 리사이클러뷰
- 플레이스토어
- sharedFlow
- NavController
- 로그인
- coroutine
- 컴포즈
- 회원가입
- Flow
- MVVM
- cleanarchitecture
- Compose
- ListAdapter
- Android
- 코틀린
- 뷰
- NavHost
- Authentication
- 코딩테스트
- Build variants
- Jetpack
- 커스텀뷰
- Today
- Total
Grusie 안드로이드 개발 기술 블로그
[Android] Build Variants로 개발단계에서 release 버전 테스트 하기 본문
회사 프로젝트에서는 release와 debug버전의 몇 가지 차이들이 존재했다. 예를 들어, proguard-rules를 활용한 난독화 차이가 있으며, 지난번에 발생했던, Json 난독화 오류에 대응하기 위해, proguard-rules를 수정한 경험이 있었다.
하지만 이런 에러가 발생한다는 것은 플레이스토어 내부 테스트 버전을 배포하기 전까지 알지 못 하였고, 그 대로 배포를 했더라면 대참사가 날 뻔 했었다.
그렇기에, 개발단계에서 release버전을 테스트 해볼 수 있는 방법이 없을까? 하는 고민을 하며 찾던 중, Build Variants라는 것을 알게 되었고 실제로 빌드를 실행해보는 과정을 설명해보려고 한다.
Build Variants는 기본적으로 이렇게 생겼다.
프로젝트에 존재하는 모듈들을 띄워주며, 해당 모듈의 빌드 타입(debug/release)이 나와있다.
빌드 타입 뿐 아니라 productFlavors(유료/무료)에 해당하는 값들도 나온다고 한다.
빌드 타입의 경우, 모듈 수준의 build.gradle에서 확인할 수 있는데,
빌드 타입은 이렇게 구현 되어 있다.
하나씩 살펴보자
- minifyEnabled : 사용하지 않는 코드의 제거 및 코드 난독화
- shrinkResources : 사용하지 않는 리소스 제거
이렇게 두 개는 앱의 크기를 줄이기 위해 사용되는 코드이다.
- applicationIdSuffix : 패키지명 마지막에 해당 이름을 추가
앱의 패키지명을 다르게 하여, debug/release 모드별 앱이 설치 될 수 있도록 하는 코드이다.
*주의 release에 이 코드를 넣고 배포하면 패키지명이 달라질 수 있다.
이제 release버전과 debug버전 세팅을 완료했으니, Build Variants에서 타입을 release로 변경한 뒤 실행을 하려고 하면,
모듈에는 X 모양이 보이며
Run버튼을 누르면 이렇게 화면이 나온다.
이유는 release버전으로 빌드를 하기 위해선, 사인된 키를 등록해주어야 하기 때문이다.
그렇기에 이 양식에 맞춰 signingConfigs에 작성을 한 뒤 sync를 해주면, 정상적으로 실행되는 것을 볼 수 있다.
이렇게 release버전과, debug버전 두 가지를 기기에 설치하여 바로 비교할 수 있도록 해보았다.
참고
https://thinkerodeng.tistory.com/218
후기
릴리즈버전에서만 에러가 나는 경우는 많지 않지만, 만약 배포 이후에 그랬을 경우, 큰 위험이 따른다.
심하면 강제 업데이트까지 진행해야 할 정도로 사용자에게 불편함을 안겨 줄 수도 있기 때문에, 미리 이런 걸 확인할 수 있는 수단을 만들어두는 것이 좋다.
Build Variants라는 것을 처음 알게되고 사용해보면서, 내가 아직 많이 부족했구나 싶으면서도 이런 걸 스스로 공부해서 실제로 사용한다는 것에 뿌듯함을 느꼈다.
미리 알려줄 사람이 있었더라면 더 좋았을텐데 하는 생각이 많이 들었다.
'안드로이드 개발' 카테고리의 다른 글
[Android] aab파일 apk로 변환하여 테스트하기 (2) | 2024.09.02 |
---|---|
[Android] Debug / Release 분리해서 작업하기 (0) | 2024.07.10 |
[Android] 뷰모델에 런타임 오브젝트 의존성 주입하기(@AssistedInject) (1) | 2024.06.26 |
[Android] 이미지 저장 및 삭제 로직 공유 (1) | 2024.06.14 |
[Android] 커스텀 갤러리 만들기(이미지 불러오기, 다중 이미지 선택) (0) | 2024.05.27 |