توسعه محلی اپلیکیشن 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 هدف نیاز دارد.