Flutter ํด๋ผ์ด์ธํธ์ ๋๋ค.
- ๋์ ํ๋ซํผ: Android, iOS (๋ฐ์คํฌํฑ/์น ํ๋ซํผ ํด๋๋ ์ฌ์ฉํ์ง ์์ ์ ๊ฑฐํ์ต๋๋ค)
- ๊ฐ๋ฐ ํ๊ฒฝ: Flutter 3.47.6 (stable), Dart 3.13.5
- CI: frontend-ci.yml (
flutter analyze,flutter test)
cd frontend
flutter pub get
flutter run # ์ฐ๊ฒฐ๋ ๊ธฐ๊ธฐ/์๋ฎฌ๋ ์ดํฐ์์ ์คํ- Android: Android Studio์ ์๋ฎฌ๋ ์ดํฐ ๋๋ USB ๋๋ฒ๊น ์ด ์ผ์ง ๊ธฐ๊ธฐ
- iOS: macOS + Xcode ํ์ (์๋ฎฌ๋ ์ดํฐ ๋๋ ์ค๊ธฐ๊ธฐ)
API ์ฃผ์๋ lib/core/config/api_config.dart์ ApiConfig.baseUrl๋ก ์ฌ์ฉํฉ๋๋ค.
์คํํ ๋ --dart-define=API_BASE_URL=...๋ก ๋ฐ๊ฟ ์ ์๊ณ , ๋๊ธฐ์ง ์์ผ๋ฉด ๋ด PC์์ ์คํ ์ค์ธ ๋ฐฑ์๋(8080 ํฌํธ) ๋ก ์ ์ํฉ๋๋ค.
| ์คํ ํ๊ฒฝ | ๋ช ๋ น |
|---|---|
| Android ์๋ฎฌ๋ ์ดํฐ | flutter run (๊ธฐ๋ณธ๊ฐ http://10.0.2.2:8080) |
| iOS ์๋ฎฌ๋ ์ดํฐ | flutter run (๊ธฐ๋ณธ๊ฐ http://localhost:8080) |
| Android ์ค๊ธฐ๊ธฐ (USB) | adb reverse tcp:8080 tcp:8080 ํ flutter run --dart-define=API_BASE_URL=http://localhost:8080 |
| ์ค๊ธฐ๊ธฐ (์์ดํ์ด) | flutter run --dart-define=API_BASE_URL=http://<๋ฐฑ์๋ PC์ IP>:8080 |
- ์์ดํ์ด๋ก ์ ์ํ ๋๋ ํฐ๊ณผ PC๊ฐ ๊ฐ์ ๋คํธ์ํฌ์ ์์ด์ผ ํ๊ณ , PC ๋ฐฉํ๋ฒฝ์์ 8080 ํฌํธ๋ฅผ ํ์ฉํด์ผ ํฉ๋๋ค.
adb reverse๋ USB๋ฅผ ๋ค์ ์ฐ๊ฒฐํ๋ฉด ๋ค์ ์คํํด์ผ ํฉ๋๋ค.- ๊ฐ๋ฐ์ฉ
http://์ ์ ํ์ฉ ๋ฒ์- Android: debug ๋น๋์์๋ง ํ์ฉ (
android/app/src/debug/AndroidManifest.xml) - iOS: ๋ก์ปฌ ๋คํธ์ํฌ(localhost, ๋ด๋ถ IP,
.local)๋ง ํ์ฉ (Info.plist์NSAllowsLocalNetworking) - ๋ฐฐํฌ ์๋ฒ๋
https://๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- Android: debug ๋น๋์์๋ง ํ์ฉ (
๋ก๋ฉ์ฐฝยทํ์๊ฐ์ ๋ถํฐ ๋งค๋ฒ ๊ฑฐ์น์ง ์๊ณ ์ํ๋ ํ๋ฉด์์ ๋ฐ๋ก ์์ํ ์ ์์ต๋๋ค. debug ๋น๋์์๋ง ๋์ํ๊ณ , release ๋น๋๋ ํญ์ ๋ก๋ฉ์ฐฝ๋ถํฐ ์์ํฉ๋๋ค.
flutter run --dart-define=INITIAL_ROUTE=/onboarding/codef-consent- ๊ฒฝ๋ก ๋์ ํ๋ฉด ์ด๋ฆ(
codefConsent)์ ๋ฃ์ด๋ ๋ฉ๋๋ค. - ์๋ ๊ฒฝ๋ก๋ฅผ ๋ฃ์ผ๋ฉด ๋ก๊ทธ์ ๊ฒฝ๊ณ ๋ฅผ ๋จ๊ธฐ๊ณ ๋ก๋ฉ์ฐฝ๋ถํฐ ์์ํฉ๋๋ค.
- Android Studio: ์คํ ์ค์ (Run โ Edit Configurations)์ Additional run args์
--dart-define=INITIAL_ROUTE=...๋ฅผ ๋ฃ๊ณ , ํ๋ฉด๋ณ๋ก ์ค์ ์ ๋ณต์ฌํด ๋๋ฉด ํธํฉ๋๋ค.
| ํ๋ฉด ID | ํ๋ฉด | ๊ฒฝ๋ก | ํ๋ฉด ์ด๋ฆ |
|---|---|---|---|
| - | ๋ก๋ฉ์ฐฝ | / |
splash |
| - | ๋ก๊ทธ์ธ | /login |
login |
| AUTH-01 | ํ์๊ฐ์ | /signup |
signup |
| ONB-01 | ์๋น์ค ์๋ด | /onboarding/intro |
serviceIntro |
| ONB-02 | CODEF ์ฐ๊ฒฐ ์๋ด | /onboarding/codef-consent |
codefConsent |
| ONB-02A | ์ฐ๊ฒฐํ ์นด๋์ฌ ์ ํ | /onboarding/card-companies |
cardCompanySelect |
| ONB-03A | ์นด๋ ์ฐ๊ฒฐ ์งํ | /onboarding/connecting |
connecting |
| ONB-03B | ์นด๋ ์ฐ๊ฒฐ ์๋ฃ | /onboarding/connect-complete |
connectComplete |
| ONB-03C | ์ผ๋ถ ์ฐ๊ฒฐ ์คํจ | /onboarding/connect-partial-failure |
connectPartialFailure |
| ONB-04 | ๋ถ์ ๋์ ์นด๋ ํ์ธ | /onboarding/cards |
cardSelect |
| ONB-05 | ๊ฑฐ๋๋ด์ญ ์ฐ๊ฒฐยทํ์ธ | /onboarding/transactions |
transactions |
| ONB-06 | ์๋นํจํดยท์๊ฐ ์์ฐ | /onboarding/budget |
budget |
| ONB-07A | ์ต์ด ํ๋ ์์ฑ ์ค | /onboarding/plan-generating |
planGenerating |
| ONB-07B | ์ต์ด ํ๋ ์์ฑ ์๋ฃ | /onboarding/plan-ready |
planReady |
- ONB-02B ์นด๋์ฌ ๊ณ์ ์ธ์ฆ์ ํ๋ฉด์ด ์๋๋ผ ONB-02A์์ ๋์ฐ๋ ํ์ ์ด๋ผ ๊ฒฝ๋ก๊ฐ ์์ต๋๋ค. ์นด๋์ฌ๋ฅผ ์ ํํ๊ณ ์ฐ๊ฒฐํ๊ธฐ๋ฅผ ๋๋ฅด๋ฉด ๋ํ๋ฉ๋๋ค.
์นด๋ ์ฐ๊ฒฐ API๊ฐ ๋์ค๊ธฐ ์ ๊น์ง๋ ๊ฐ์ง ์ฐ๊ฒฐ์ ์๋๋ค. ๊ธฐ๋ณธ์ ๋ชจ๋ ์นด๋์ฌ๊ฐ ์ฑ๊ณตํ๊ณ , ์๋์ฒ๋ผ ์คํํ๋ฉด ์ง์ ํ ์นด๋์ฌ๋ฅผ ์คํจ์์ผ ์ผ๋ถ ์คํจ ํ๋ฉด(ONB-03C)์ ํ์ธํ ์ ์์ต๋๋ค.
flutter run --dart-define=INITIAL_ROUTE=cardCompanySelect --dart-define=FAKE_FAIL_COMPANIES=WOORI- ์นด๋์ฌ ์ฝ๋:
KB,HYUNDAI,NH,CITI,WOORI,BC,SHINHAN(์ผํ๋ก ์ฌ๋ฌ ๊ฐ ์ง์ ) - ์ ํ๋ฉด์ ๋ฐ์ดํฐ๊ฐ ํ์ํ ํ๋ฉด(์ฐ๊ฒฐ ๊ฒฐ๊ณผ, ์นด๋ ํ์ธ, ๊ฑฐ๋๋ด์ญ, ์์ฐ, ํ๋ ์๋ฃ ๋ฑ)์ ์์ ํ๋ฉด์ผ๋ก ๋ฐ๋ก ์ด๋ฉด debug ๋น๋์์๋ ์์ ๋ฐ์ดํฐ(KBยท์ฐ๋ฆฌยท์ ํ ์นด๋, ์์ฐ 820,000์)๋ฅผ ๋ณด์ฌ์ค๋๋ค.
CI์ ๊ฐ์ ๊ฒ์ฌ๋ฅผ ๋ก์ปฌ์์ ์คํํฉ๋๋ค.
flutter analyze
flutter test- ๋ค๋ฅธ ํ๋ซํผ์ด ํ์ํด์ง๋ฉด
flutter create --platforms=<ํ๋ซํผ> .์ผ๋ก ๋ค์ ์ถ๊ฐํ ์ ์์ต๋๋ค.