마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

Phase 에 대한 궁금증 문의 드립니다. (local, production) 설정값

0 추천
안녕하세요 선배님들
크리스마스 연휴 잘 보내고 계신지요

오늘은 Phase 에 대해서 궁금한 점이 있어서 문의 드립니다.
아무래도 서버 개발을 하는지라 과연 Phase라는 용어가 맞는지 부터 궁금하구요

Local (개발자 PC or 노트북)
Develop (개발서버)
Sandbox (샌박 서버)
Stage (Production DB 와 연결된 서버)
Production (실 서비스)

회사마다 다르겠지만 서버의 경우 저런식으로 Phase를 구분하곤 하는데요
저렇게 구분하는 이유는 테스트의 이유도 있겠지만 설정값이 달라지는 부분도 있겠지요

그런데 안드에서는 저렇게 구분하는 방법이 어떻게 될지 문의 드립니다.
예를 들면 retrofit 을 이용해서 서버와 REST API 통신을 할때에 로컬에서는 localhost:8080으로 연결해도 되겠지만
구글 스토어에 올릴때는 http://xxx.com/api/ 와 같은 식으로 해서 올려야 할것 같은데요

Production 에 올릴때는 주소를 일일히 바꿔서 올리는건지 궁금합니다.

분명히 방법이 있을텐데 어떻게 하는건지 궁금합니다.
우라말라깽이 (250 포인트) 님이 2020년 12월 27일 질문

1개의 답변

+1 추천
안드로이드에서는 약간 다른 개념을 사용해야 할 것 같습니다. 대개는 Gradle 을 빌드시스템으로 사용하기 때문에, Gradle 을 기준으로 말씀드리면,

Build Type과 Flavour를 가지고 조합해서 사용할 수 있습니다. Build Type은 보통은 debug 와  release로 구분해서 많이 쓰고, flavour은 앱의 목적에 맞게 정의해서 사용합니다. 님의 예처럼, 서버 환경에 따라 구분할 수도 있구요, 사용자의 결제상태에 따라 free, paid를 정의해서 사용할 수도 있구요. 각각 소스코드와 리소스, 빌드설정등을 다르게 가져갈 수 있습니다.

에를 들어,

Build Type: debug, release
Flavour: local, dev, prod

을 정의했다면, 풀빌드를 하게 되면,  localDebug, localRelease, devDebug, devRelease, prodDebug, prodRelease 등의 빌드파일이 생성됩니다.

저같은 경우는 서버 BaseURL을 flavour에 따라서 빌드설정 파일에 정의해서 사용합니다. 그리고 flavour 에 따라 서버와 통신 시에  BaseUrl 을 가로채는 interceptor를 구현해서 사용합니다. 그리고 devDebu빌드 일때는 서버의 BaseURL을 바꿀 수 있는 개발자용 옵션을 별도로 제공하고 있습니다. local 빌드의 경우는 Automation 시에 사용하고 있구요, 실제 사용자에게는 prodRelease 빌드만 배포됩니다.

Gradle build config를 찾아보시구요, 개발자 페이지에 관련 내용이 나와 있습니다. 정독해 보시기 바랍니다.
https://developer.android.com/studio/build/gradle-tips
https://bignerdranch.tistory.com/manage/posts/
spark (226,420 포인트) 님이 2020년 12월 27일 답변
...