얼굴 인증, 제스처 인식 등의 기능이 포함된 Flutter 프로젝트입니다.
- Flutter SDK 3.0 이상
- Dart SDK 2.17 이상
- Xcode 14.0 이상 (iOS 빌드)
- CocoaPods (iOS 의존성 관리)
Flutter 설치 확인:
flutter doctorgit clone https://github.com/AWS-AI-team3/sigma-FE.git
cd gesture_browserflutter pub getcd ios
pod install
cd ..sudo gem install cocoapods다른 Apple Developer 계정으로 개발할 때는 반드시 Xcode에서 팀을 설정해야 합니다:
# Xcode에서 프로젝트 열기
open ios/Runner.xcworkspaceXcode에서:
- 왼쪽 네비게이터에서
Runner프로젝트 선택 TARGETS→Runner선택Signing & Capabilities탭 클릭- Team 드롭다운에서 자신의 Apple Developer 팀 선택
- 팀이 없다면: Xcode → Settings → Accounts에서 Apple ID 추가
- (선택사항) Bundle Identifier를 고유한 값으로 변경
- 기본값:
com.gesture.gestureBrowser - 예시:
com.yourcompany.gestureBrowser
- 기본값:
- 이 설정은 각 개발자가 로컬에서만 수정해야 합니다
project.pbxproj파일의 Team 설정은 커밋하지 마세요- Bundle Identifier가 이미 사용 중이면 변경 필요
# 사용 가능한 디바이스 확인
flutter devices
# iOS 시뮬레이터에서 실행
flutter run
# 특정 디바이스에서 실행
flutter run -d <device-id>- 📸 얼굴 인증: 카메라를 이용한 실시간 얼굴 인증
- 🖐️ 제스처 인식: Hand Landmarker를 이용한 제스처 컨트롤
- 🌐 웹 브라우저: 내장 웹뷰 브라우저
- 🎤 음성 녹음: 오디오 녹음 및 전송 기능
flutter clean
flutter pub get
cd ios && pod install && cd ..
flutter run- iOS:
ios/Runner/Info.plist에 카메라 권한이 설정되어 있는지 확인<key>NSCameraUsageDescription</key> <string>얼굴 인증을 위해 카메라 접근이 필요합니다</string>
cd ios
pod repo update
pod install --repo-update
cd ..❌ Signing for "Runner" requires a development team.
❌ No profiles for 'com.gesture.gestureBrowser' were found
해결 방법:
- Xcode에서
ios/Runner.xcworkspace열기 (⚠️ .xcodeproj가 아닌.xcworkspace) - Runner 프로젝트 → TARGETS → Runner 선택
- Signing & Capabilities 탭에서:
- Team: 자신의 Apple Developer 계정 선택
- Bundle Identifier: 충돌 시 변경 (예:
com.yourname.gestureBrowser)
- 시뮬레이터는 무료 계정으로도 가능, 실기기는 유료 계정 필요
- Xcode → Settings (⌘ + ,) → Accounts
- 왼쪽 하단
+버튼 → Apple ID 추가 - 로그인하면 자동으로 Personal Team 생성됨 (무료)
- 시뮬레이터 개발은 무료 계정으로 가능
camera: 카메라 기능http: REST API 통신google_sign_in: Google 소셜 로그인flutter_inappwebview: 내장 웹뷰 브라우저permission_handler: 권한 관리record: 오디오 녹음
전체 의존성 목록은 pubspec.yaml을 참조하세요.
lib/
├── main.dart # 앱 진입점
├── constants/ # 상수 정의
├── screens/ # 화면 UI
│ ├── face_auth_screen.dart
│ ├── home_screen.dart
│ └── login_screen.dart
├── services/ # 비즈니스 로직
│ ├── face_auth_service.dart
│ ├── api_client.dart
│ └── audio_recording_service.dart
└── widgets/ # 재사용 가능한 위젯
민감한 정보(API 키 등)는 별도 파일로 관리하는 것을 권장합니다.
lib/config/api_keys.dart 파일 생성:
class ApiKeys {
static const String baseUrl = 'YOUR_API_BASE_URL';
static const String apiKey = 'YOUR_API_KEY';
}- main 브랜치: 프로덕션 코드
- ios 브랜치: iOS 관련 개발
- develop 브랜치: 개발 중인 기능
각 개발자는 자신의 Apple Developer 계정을 사용해야 합니다:
-
Git에 커밋하지 말아야 할 파일:
❌ ios/Runner.xcodeproj/project.pbxproj (Team ID 변경 시) ❌ ios/Runner.xcodeproj/xcuserdata/ ✅ 위 파일들은 .gitignore에 이미 설정됨 -
로컬에서만 수정:
- Xcode Signing & Capabilities → Team 설정
- Bundle Identifier (충돌 시)
-
협업 워크플로우:
# 클론 후 git clone <repo> cd gesture_browser # Xcode에서 Team만 설정 (커밋 X) open ios/Runner.xcworkspace # → Signing & Capabilities → Team 선택 # 개발 시작 flutter run
-
Pull Request 전에:
# Team 설정이 변경되었다면 되돌리기 git checkout ios/Runner.xcodeproj/project.pbxproj
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
이 프로젝트는 AWS AI Team3에서 관리합니다.