일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- NavController
- MVVM
- 커스텀뷰
- 안드로이드
- 회원가입
- 클린아키텍처
- 코틀린
- cleanarchitecture
- XML
- NavHost
- Android
- 플레이스토어
- 코딩테스트
- UiState
- coroutine
- 파이어베이스
- 로그인
- ListAdapter
- sharedFlow
- Kotlin
- Build variants
- DiffUtil
- 컴포즈
- Authentication
- Flow
- 알고리즘
- Jetpack
- 뷰
- 리사이클러뷰
- Compose
- Today
- Total
Grusie 안드로이드 개발 기술 블로그
[Android] Debug / Release 분리해서 작업하기 본문
지난 번에 추가로, Build Variants에 대한 얘기이다.
Release 버전을 테스트 할 수 있다는 것은 지난 번에 사용해보았으며, 주의해야 하는 추가 사항들이 좀 있어서 이번에는 Debug버전과 Release버전 앱이 따로 설치되도록 하면서 발생했던 문제점과, 처리과정에 대해 말해보겠다.
1. 파이어베이스의 google-services.json 처리
2. File - Provider 사용 시 중복 처리
3. 앱 이름 중복 처리
기본 세팅
- 지난 번과 다를 거 없으나 설명을 하자면,
debug / release를 구분하고 applicationIdSuffix를 사용하여 debug일 경우 패키지명이 변경되도록 수정하였다.
1. google-services.json
파이어베이스의 기능들을 사용하기 위해서는 google-services.json이 필수일 것이다.
google-services에는 각 기능별로 해당하는 패키지명이 들어있는데, 기본 세팅처럼 debug모드에 suffix를 붙혔다면, 이게 동작을 하지 않기 때문에, 빌드 과정에서 에러가 발생한다.
그렇다고, 같은 파일에 package_name을 두 개를 만들어야 하는가? 그건 아니다.
안드로이드 스튜디오에서, 프로젝트로 보기 방식을 변경하고
app -> src 하위에 debug(buildTypes에 맞춰서) / release 폴더를 생성한 뒤 각각 관리하면 된다.
app에 있던 google-services.json을 복사해서, debug / relase 폴더에 넣고, 각각의 package명을 입력하면 된다.
(기존에 사용하던 app에 있던 것은 삭제해주자)
2. File-Provider
File-Provider를 사용하는 앱일 경우, Manifest에 등록을 해두어야 하는데, 이것도 같은 앱에서 중복 참고를 할 수 없기에 에러를 뱉어낸다.
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
android:exported="false"
android:grantUriPermissions="true" >
authorities에 기존에는 패키지명이 들어있었으나, 각 어플리케이션 아이디에 따라 다르게 처리하기 위해
${applicationId}.fileprovider로 변경해준다.
추가로 facebook등 다른 SDK를 사용할 때 Provider를 사용하는 경우에도 처리를 해주어야 한다.
<provider
android:name="com.facebook.FacebookContentProvider"
android:authorities="com.facebook.app.FacebookContentProvider${applicationId}"
android:exported="true" />
여기까지 진행하면, release / debug 각각 두 앱이 설치가 될 것이다.
3. 앱 이름 중복 처리
이제 같은 앱을 release / debug 버전으로 뽑아봤는데, 앱 이름이 동일해서 구분할 수가 없다.
매 번 기억을 해서 키는 것은 귀찮으니, 앱 이름 자체에서 표현을 해주면 좋을 것 같다.
우선 회사 앱의 이름은 현재 폰이 한글일 경우와, 영어일 경우에 따라 앱 이름이 변경된다.
매니페스트의 label을 @{label}로 지정한 뒤, build.gradle에서 라벨에 값을 replace해서 변경이 가능하나, ko, en에 따라 앱 이름을 변경하기 위해서는 기존 방식대로 @strings/app_name 형태로 가는 것이 좋다고 판단하였다.
google-services.json 처리를 위해 debug / release 폴더를 만들어뒀으니, 거기에 res폴더를 생성 후, values의 strings 파일을 만들어, app_name 값을 입력해두면 처리할 수 있다.
debug 버전일 때와, release 버전 ko - en 버전을 전부 작성해서 넣어두면 매니페스트 수정 없이 앱 이름이 변경된다.
main에 있는 strings에서는 app_name을 빼두자
여기까지 전부 진행하면 프로젝트 구조는 이런식으로 처리가 될 것이다.
이 후에 debug / release 각각 빌드하면, 앱이 두개가 설치되는 것을 볼 수 있다.
이제 각 버전들을 씹고 뜯으면서 테스트 할 수 있게 되었다.ㅎ
참고
https://yongyi1587.tistory.com/42
후기
build쪽을 건드리는 것은 굉장히 무서웠으나, 이해를 바탕으로 작업을 하게 되니 생각보다 수월했던 것 같다. 개발을 하면서 계속해서 새로운 것들을 알게 되는 것은 정말 뿌듯했다. 나는 처음 알게 되었으나, 연차가 높은 분들은 이런 내용들을 전부 알고 있을거라는 생각을 하면, 사수가 꼭 있는 게 좋겠다는 생각을 계속 하게된다.
'안드로이드 개발' 카테고리의 다른 글
[Android] aab파일 apk로 변환하여 테스트하기 (2) | 2024.09.02 |
---|---|
[Android] Build Variants로 개발단계에서 release 버전 테스트 하기 (0) | 2024.07.04 |
[Android] 뷰모델에 런타임 오브젝트 의존성 주입하기(@AssistedInject) (1) | 2024.06.26 |
[Android] 이미지 저장 및 삭제 로직 공유 (1) | 2024.06.14 |
[Android] 커스텀 갤러리 만들기(이미지 불러오기, 다중 이미지 선택) (0) | 2024.05.27 |