Skip to content

[개발 시작] Git/Firebase 환경 설정 및 DB 접근 가이드 #2

Description

@TPRPT

빌드 및 환경 설정을 마침내 완료했습니다! 🎉
현재 develop 브랜치에는 모든 팀원이 안전하게 코딩할 수 있는 기본 환경이 커밋되었습니다.
이 가이드를 따라 로컬 개발 환경을 설정하고, 각자 맡은 기능 구현을 시작해 주세요.


1. ⚙️ 개발 환경 설정 및 시작 (필수)

A. Git 최신화 및 브랜치 생성

  1. Develop 브랜치 최신화:
    git checkout develop
    git pull origin develop
  2. 개인 브랜치 생성: 각자 역할에 맞는 브랜치를 파고 코딩을 시작합니다.
    git checkout -b feature/[모듈 이름] 

B. Firebase 에뮬레이터 실행 (매 작업 시작 시 필수)

팀원들은 코딩을 시작하기 전에 반드시 로컬 개발 서버를 켜야 합니다.

  1. 터미널에서 명령어 실행: (프로젝트 루트 폴더에서)
    firebase emulators:start
  2. 확인: 브라우저에서 http://127.0.0.1:4000에 접속하여 Emulator UI가 정상적으로 뜨는지 확인합니다.

C. Kotlin 코드 내 연결 설정

MainActivity.kt 파일에는 이미 다음 코드가 onCreate()에서 호출되어 있습니다. 이 코드가 여러분의 앱을 로컬 에뮬레이터에 연결해 줍니다. (이 코드를 임의로 수정하거나 삭제하지 마세요.)

// MainActivity.kt 파일 내
private fun initializeEmulators() {
    // ... useEmulator() 호출 로직 ...
} 

2. 🛡️ Firestore DB 접근 가이드 및 규칙

DB 구조는 이미 확정되었으며, 코딩 시 다음 규칙을 반드시 준수해야 합니다.

A. 인스턴스 접근 (모든 클래스)

Firebase 모듈 접근 시 반드시 getInstance()를 사용합니다. 이 인스턴스는 로컬 에뮬레이터에 연결되어 있습니다.

// 모든 Repository 또는 ViewModel에서 사용
private val db = FirebaseFirestore.getInstance()
private val auth = FirebaseAuth.getInstance()

B. 확정된 DB 접근 경로 (Kotlin 코드 참조용)

모든 팀원은 다음 경로와 메서드를 사용하여 Firestore에 접근해야 합니다.

// 모든 Repository 또는 ViewModel에서 사용
private val db = FirebaseFirestore.getInstance()
private val auth = FirebaseAuth.getInstance()

3. 🚨 SDK 및 보안 관리 지침 (운영)

팀원들은 다음 보안 지침을 숙지하고 개발을 진행해야 합니다.

Image

Firebase Console에서 해당 섹션의 'SDK 안내 보기'를 참고하세요!

A. 구성 파일 및 키 관리

  • SHA-1 지문 추가: Google 로그인(인증)을 테스트하려면, 각자의 컴퓨터에서 획득한 SHA-1 지문을 Firebase 프로젝트 설정에 등록해야 합니다. 미등록 시 로그인이 실패합니다.

  • google-services.json 업데이트: 앱 설정 변경 시 (예: 새 서비스 추가) [Firebase Console의 앱 설정]에서 google-services.json 파일을 다시 다운로드하여 app/ 폴더에 복사하고 사용해야 합니다.

참고: 이 파일은 .gitignore에 등록되어 있으므로 Git에 커밋하면 안됩니다!

B. 데이터 쓰기 규칙

  • 투표 배열(voterUids) 업데이트 시: FieldValue.arrayUnion() 또는 FieldValue.arrayRemove() 메서드를 반드시 사용합니다.

  • 모든 DB 작업은 addOnFailureListener를 포함하여 오류에 대비해야 합니다.

Metadata

Metadata

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions