[Android] 안드로이드 모임 관리 앱 프로젝트 개발기 (1) – 기본 설정 및 아키텍처 환경 구축
Last Updated: 2026년 10월 31일
안녕하세요! 안드로이드 스튜디오를 활용해 특정 회원들만의 모임 관리와 투명한 지출 정산(뿜빠이)을 도와주는 ‘대구대 생물90’ 앱 프로젝트를 진행하고 있습니다.
이번 글에서는 프로젝트의 첫 단계인 기본 설정 및 빌드 환경, 그리고 전역 앱 구조(DI, Manifest)가 어떻게 구성되어 있는지 정리해 보겠습니다.
1. 버전 관리 및 의존성 (libs.versions.toml)
최신 안드로이드 개발 표준인 Version Catalog 방식을 사용하여 라이브러리 버전을 중앙에서 깔끔하게 관리하고 있습니다.
- 핵심 스택: Jetpack Compose, Hilt(의존성 주입), Firebase (Firestore, Auth, Storage), Room DB, Coil (이미지 로딩), Navigation Compose
- AGP 및 Kotlin: 안정적인 빌드를 위해 AGP
9.4.1과 Kotlin 최신 버전을 적용하였습니다.
[versions]
agp = "9.4.1"
kotlin = "2.4.21"
composeBom = "2026.09.00"
hilt = "2.60.1"
firebaseBom = "35.1.0"
...
2. 앱 수준 빌드 설정 (build.gradle.kts)
Compose와 Hilt, KSP(Kotlin Symbol Processing) 컴파일러가 유기적으로 동작할 수 있도록 설정을 완료했습니다.
- Namespace:
kr.narrator.tgubio90 - SDK 버전:
minSdk = 26,compileSdk / targetSdk = 37 - 주요 특징: 현대적인 자바 버전(Java 11) 호환성 및 Hilt/Room을 위한 KSP 플러그인 연동
3. 앱 진입점 및 전역 설정 (Tgubio90Application.kt & MainActivity.kt)
Tgubio90Application:@HiltAndroidApp어노테이션을 선언하여 앱 전역에서 Hilt 의존성 주입 컨테이너가 활성화되도록 구성했습니다.MainActivity:- 최신 안드로이드 가이드인
enableEdgeToEdge()를 적용하여 시원한 UI를 구성했습니다. SettingsViewModel과 연동하여 사용자가 설정한 다크 모드(isDarkMode)가 앱 전체 테마에 실시간으로 반영되도록 구현했습니다. (dynamicColor = false로 지정하여 커스텀 테마 색상 고정)
- 최신 안드로이드 가이드인
@AndroidEntryPoint
class MainActivity : ComponentActivity() {
private val settingsViewModel: SettingsViewModel by viewModels()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContent {
val isDarkMode by settingsViewModel.isDarkMode.collectAsState()
TguBio90Theme(darkTheme = isDarkMode, dynamicColor = false) {
AppNavigation()
}
}
}
}
4. 매니페스트 보안 및 설정 (AndroidManifest.xml)
- 키보드 대응:
windowSoftInputMode="adjustResize"를 적용하여 입력창(지출 추가, 게시판 글 작성 등)에서 키보드가 올라올 때 UI가 가려지지 않도록 처리했습니다. - 파일 공유 (FileProvider): 엑셀 백업(UTF-8 BOM 적용) 파일 공유 및 이미지 처리를 위해 안전한
FileProvider경로를 설정했습니다.
💡 마치며
여기까지 ‘모임총무’ 앱의 가장 기초가 되는 빌드 설정과 앱 진입점 구성을 마쳤습니다. 철저한 환경 설정 덕분에 이후에 구현할 회원 관리, 게시판 투표, 그리고 정산(Expense) 및 엑셀 백업 로직들이 안정적으로 맞물려 돌아갈 수 있는 탄탄한 기반이 마련되었습니다.
다음 포스팅에서는 핵심 비즈니스 로직인 지출 및 정산 패키지(Expense, SettlementUtil) 코드를 깊이 있게 다뤄보겠습니다!