Build, flavor və release
Flutter üç build rejimi verir və onları qarışdırmaq tipik səhvdir:
- debug — hot reload, assertion-lar, optimallaşdırma yoxdur. Ölçmə üçün yararsızdır
- profile — optimallaşdırılmış, amma profiling alətləri açıqdır. Performans ölçməsi məhz burada aparılır
- release — tam optimallaşdırılmış, debug alətləri bağlı. Store-a bu gedir
Flavor-lar eyni koddan fərqli məhsul variantları qurmağa imkan verir: dev, staging, production. Hər flavor öz tətbiq adı, ikonu, bundle id-si və API ünvanı ilə gəlir — nəticədə üçü eyni cihazda yanaşı qurula bilir, bu isə test üçün vacibdir.
| Mövzu | Android | iOS |
|---|---|---|
| Buraxılış artefaktı | App Bundle (`.aab`) — store üçün tövsiyə olunan | IPA arxivi |
| İmzalama | Keystore + `key.properties`, repo-dan kənarda | Sertifikat + provisioning profile |
| Konfiqurasiya | `build.gradle` product flavors | Xcode schemes + configurations |
| Ölçünün azaldılması | `--split-per-abi` və ya App Bundle | App Store özü nazikləşdirir (app thinning) |
Interview ipucu. Buraxılışla bağlı sualda təhlükəsizlik nöqtəsini özün qaldır: imzalama açarları və API sirləri repo-da saxlanmamalıdır. Android-də key.properties .gitignore-a düşür və CI-da secret kimi verilir; API açarları isə --dart-define ilə build zamanı ötürülür. Vacib nüans: --dart-define ilə verilən dəyər də tətbiq binary-sində olur — o, konfiqurasiya üçün uyğundur, həqiqi sirr üçün yox; həqiqi sirr backend-də qalmalıdır.
📚 Mənbələr və sənədlər
- Build rejimlərirəsmidocs.flutter.dev
Debug, profile və release rejimlərinin fərqi və hansının nə üçün olduğu rəsmi sənəddə.
- Android-ə buraxılışrəsmidocs.flutter.dev
- iOS-ə buraxılışrəsmidocs.flutter.dev
- Flavor-larrəsmidocs.flutter.dev