Files
DTGAPK/DEPLOYMENT.md

333 lines
7.2 KiB
Markdown
Raw Normal View History

# 배포 가이드
## Android APK 빌드 및 배포
### 1. 릴리즈 키스토어 생성
```bash
# 키스토어 생성 (최초 1회만)
keytool -genkeypair -v -storetype PKCS12 -keystore logistream-release.keystore -alias logistream -keyalg RSA -keysize 2048 -validity 10000
# 정보 입력
# - 비밀번호: 안전한 비밀번호 입력
# - 이름, 조직, 도시 등 정보 입력
```
### 2. 키스토어 설정
키스토어 파일을 `android/app/` 디렉토리에 복사한 후, `android/gradle.properties` 파일 생성:
```properties
LOGISTREAM_UPLOAD_STORE_FILE=logistream-release.keystore
LOGISTREAM_UPLOAD_KEY_ALIAS=logistream
LOGISTREAM_UPLOAD_STORE_PASSWORD=your_keystore_password
LOGISTREAM_UPLOAD_KEY_PASSWORD=your_key_password
```
`android/app/build.gradle` 파일 수정:
```gradle
android {
...
signingConfigs {
release {
if (project.hasProperty('LOGISTREAM_UPLOAD_STORE_FILE')) {
storeFile file(LOGISTREAM_UPLOAD_STORE_FILE)
storePassword LOGISTREAM_UPLOAD_STORE_PASSWORD
keyAlias LOGISTREAM_UPLOAD_KEY_ALIAS
keyPassword LOGISTREAM_UPLOAD_KEY_PASSWORD
}
}
}
buildTypes {
release {
signingConfig signingConfigs.release
minifyEnabled true
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
}
}
}
```
### 3. APK 빌드
```bash
# 프로젝트 루트에서
cd android
# Windows
gradlew assembleRelease
# macOS/Linux
./gradlew assembleRelease
# APK 위치: android/app/build/outputs/apk/release/app-release.apk
```
### 4. AAB 빌드 (Google Play 배포용)
```bash
cd android
# Windows
gradlew bundleRelease
# macOS/Linux
./gradlew bundleRelease
# AAB 위치: android/app/build/outputs/bundle/release/app-release.aab
```
### 5. APK 설치 테스트
```bash
# USB로 연결된 디바이스에 설치
adb install android/app/build/outputs/apk/release/app-release.apk
# 또는 APK 파일을 디바이스로 전송하여 직접 설치
```
## iOS IPA 빌드 및 배포
### 1. Apple Developer 계정 설정
1. Apple Developer Program 가입 (연간 $99)
2. Xcode에서 Apple ID 추가
- Xcode > Preferences > Accounts
- '+' 버튼 클릭하여 Apple ID 추가
### 2. 인증서 및 프로비저닝 프로필 생성
1. [Apple Developer Console](https://developer.apple.com) 접속
2. Certificates, Identifiers & Profiles 메뉴
3. App ID 생성
- Identifier: `com.logistream.mobile`
- Capabilities: Location 활성화
4. Distribution Certificate 생성
5. Provisioning Profile 생성 (App Store 또는 Ad Hoc)
### 3. Xcode 프로젝트 설정
```bash
# Pods 설치
cd ios
pod install
cd ..
```
Xcode에서 `ios/LogiStream.xcworkspace` 열기:
1. **Signing & Capabilities**
- Team 선택
- Bundle Identifier 확인: `com.logistream.mobile`
- Automatically manage signing 체크
2. **Background Modes** 추가
- Location updates 체크
- Background fetch 체크
3. **Build Settings**
- Build Configuration: Release
- Code Signing Identity: iOS Distribution
### 4. Archive 생성
1. Xcode 메뉴: Product > Scheme > Edit Scheme
2. Run > Build Configuration을 Release로 변경
3. Product > Archive 선택
4. Archive 완료 대기
### 5. IPA 내보내기
Archive Organizer에서:
1. **App Store Connect** (앱스토어 배포)
- Upload 선택
- App Store Connect에 업로드
2. **Ad Hoc** (테스트 배포)
- Export 선택
- Ad Hoc 선택
- IPA 파일 저장
3. **Development** (개발 테스트)
- Export 선택
- Development 선택
- IPA 파일 저장
### 6. TestFlight 배포 (선택사항)
1. App Store Connect에서 앱 생성
2. TestFlight 탭으로 이동
3. 내부 테스터 또는 외부 테스터 추가
4. 빌드 업로드 후 테스터에게 초대 전송
## 앱 스토어 배포
### Google Play Store
1. [Google Play Console](https://play.google.com/console) 접속
2. 앱 만들기
- 앱 이름: LogiStream 차량추적
- 기본 언어: 한국어
- 앱 유형: 앱
- 무료/유료: 무료
3. **스토어 등록정보**
- 앱 이름
- 간단한 설명 (80자)
- 자세한 설명 (4000자)
- 스크린샷 (최소 2개)
- 아이콘 (512x512px)
4. **앱 콘텐츠**
- 개인정보처리방침 URL
- 앱 카테고리: 비즈니스
- 연락처 정보
5. **프로덕션 트랙**
- AAB 파일 업로드
- 출시 노트 작성
- 검토 제출
### Apple App Store
1. [App Store Connect](https://appstoreconnect.apple.com) 접속
2. 나의 앱 > '+' > 새로운 앱
- 플랫폼: iOS
- 이름: LogiStream 차량추적
- 기본 언어: 한국어
- 번들 ID: com.logistream.mobile
- SKU: logistream-mobile
3. **앱 정보**
- 카테고리: 비즈니스
- 개인정보 처리방침 URL
- 연령 등급
4. **가격 및 사용 가능 여부**
- 가격: 무료
- 사용 가능 국가: 대한민국
5. **버전 정보**
- 스크린샷 (필수)
- 설명
- 키워드
- 지원 URL
- 마케팅 URL (선택)
6. **빌드**
- TestFlight에서 빌드 선택
- 제출
## 업데이트 배포
### 버전 업데이트
1. `package.json` 버전 업데이트
2. Android: `android/app/build.gradle`
```gradle
defaultConfig {
versionCode 2 // 증가
versionName "1.1.0" // 업데이트
}
```
3. iOS: Xcode에서 Version 및 Build 번호 증가
### 변경사항 문서화
`CHANGELOG.md` 파일 생성:
```markdown
# 변경 이력
## [1.1.0] - 2024-01-15
### 추가
- 위치 추적 정확도 개선
- 배터리 최적화
### 수정
- 백그라운드 위치 추적 버그 수정
- 로그인 오류 수정
## [1.0.0] - 2024-01-01
### 추가
- 초기 릴리즈
- 웹뷰 통합
- 위치 추적 기능
```
## 모니터링 및 분석
### Crash Reporting
#### Android - Firebase Crashlytics
```bash
# Firebase 설정
npm install @react-native-firebase/app @react-native-firebase/crashlytics
```
#### iOS - Firebase Crashlytics
Podfile에 추가:
```ruby
pod 'Firebase/Crashlytics'
```
### 분석 도구
1. **Google Analytics for Firebase**
2. **App Store Analytics**
3. **Google Play Console Analytics**
## 보안 체크리스트
- [ ] API 키가 코드에 하드코딩되지 않았는지 확인
- [ ] HTTPS 사용 확인
- [ ] 민감한 데이터 암호화
- [ ] ProGuard/R8 난독화 활성화 (Android)
- [ ] 키스토어 파일 안전하게 보관
- [ ] 개인정보처리방침 작성 및 게시
- [ ] 위치 정보 사용 동의 명확히 표시
## 문제 해결
### Android 빌드 오류
```bash
# Gradle 캐시 삭제
cd android
./gradlew clean
# 빌드 재시도
./gradlew assembleRelease
```
### iOS 빌드 오류
```bash
# Pods 재설치
cd ios
pod deintegrate
pod install
# Xcode 캐시 삭제
rm -rf ~/Library/Developer/Xcode/DerivedData
```
### 서명 오류
- 인증서가 만료되지 않았는지 확인
- Provisioning Profile이 올바른지 확인
- Bundle ID가 일치하는지 확인
## 참고 자료
- [React Native 공식 문서](https://reactnative.dev)
- [Android 개발자 가이드](https://developer.android.com)
- [iOS 개발자 가이드](https://developer.apple.com)
- [Google Play Console 도움말](https://support.google.com/googleplay)
- [App Store Connect 도움말](https://help.apple.com/app-store-connect)