333 lines
7.2 KiB
Markdown
333 lines
7.2 KiB
Markdown
|
|
# 배포 가이드
|
||
|
|
|
||
|
|
## 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)
|
||
|
|
|