پرش به محتویات

توسعه محلی اپلیکیشن Mobile

نسخه Flutter پروژه در pubspec.yaml و .fvmrc برابر 3.44.9 است. FVM برای یکسان‌سازی SDK توصیه می‌شود، اما Build Repository به نصب سراسری آن وابسته نیست.

اجرای پایه

flutter doctor -v
flutter pub get
flutter gen-l10n
flutter run

با FVM، flutter در فرمان‌ها با fvm flutter جایگزین می‌شود.

Configuration API

آدرس API هم‌زمان با پیاده‌سازی نخستین Network Feature با Environment روشن اضافه می‌شود. dart-define فقط Configuration عمومی Build است و Secret یا Credential در آن قرار نمی‌گیرد، چون از Binary قابل استخراج است.

برای Android Emulator، Host محلی معمولا از 10.0.2.2 و برای iOS Simulator از 127.0.0.1 قابل دسترسی است. مقدار نهایی باید در Adapter شبکه و بدون Hard-code داخل Feature مدیریت شود.

محدودیت pub.dev در شبکه ایران

منبع Canonical برابر https://pub.dev است و Lockfile باید همین منبع را نگه دارد. Mirror فقط برای Process محلی و موقت استفاده می‌شود:

$env:PUB_HOSTED_URL='https://pub.flutter-io.cn'
$env:FLUTTER_STORAGE_BASE_URL='https://storage.flutter-io.cn'
flutter pub get
Remove-Item Env:PUB_HOSTED_URL
Remove-Item Env:FLUTTER_STORAGE_BASE_URL

Mirror در CI یا فایل Project ثبت نمی‌شود و پس از Resolve باید Lockfile برای URL ناخواسته Review شود.

Android

flutter doctor --android-licenses
flutter build apk --debug

Android Gradle Plugin و Repositoryهای Template Flutter بدون دلیل شبکه Downgrade یا با Mirror ناشناخته جایگزین نمی‌شوند. applicationId و namespace برابر com.iranihosts.tripylon هستند.

iOS

Build و Signing فقط روی macOS دارای Xcode انجام می‌شود:

flutter build ios --no-codesign

Bundle Identifier برابر com.iranihosts.tripylon است. Certificate، Provisioning Profile و Signing Secret وارد Git نمی‌شوند.

کنترل کیفیت

dart format --output=none --set-exit-if-changed lib test
flutter analyze --fatal-infos
flutter test
flutter build apk --debug

تغییر Platform-specific علاوه بر این Gateها به Build همان Platform، بررسی Permission و Test روی Device یا Emulator هدف نیاز دارد.