5.6 KiB
Executable file
5.6 KiB
Executable file
مدیریت نسخه سراسری
این پروژه از یک سیستم مدیریت نسخه سراسری استفاده میکند که نسخه را در یک مکان مرکزی (pubspec.yaml) نگهداری میکند و Flutter به طور خودکار آن را به تمام پلتفرمها منتقل میکند.
نحوه کار
نسخه در فایل hesabixUI/hesabix_ui/pubspec.yaml به صورت زیر تعریف میشود:
version: 1.0.23+23
فرمت: MAJOR.MINOR.PATCH+BUILD
- MAJOR: نسخه اصلی (تغییرات بزرگ و ناسازگار)
- MINOR: نسخه فرعی (ویژگیهای جدید، سازگار با قبل)
- PATCH: نسخه اصلاحی (رفع باگها)
- BUILD: شماره بیلد (برای هر بیلد افزایش مییابد)
Flutter به طور خودکار این نسخه را به پلتفرمهای زیر منتقل میکند:
- Android:
versionName(MAJOR.MINOR.PATCH) وversionCode(BUILD) - iOS:
CFBundleShortVersionString(MAJOR.MINOR.PATCH) وCFBundleVersion(BUILD) - Windows:
FLUTTER_VERSION_MAJOR,MINOR,PATCH,BUILD - Linux: از
pubspec.yamlخوانده میشود - macOS:
CFBundleShortVersionStringوCFBundleVersion - Web: از
pubspec.yamlخوانده میشود
همترازی با ریلیز اندروید (Forgejo)
از این پس برای APKهای منتشرشده در ریلیزهای مخزن:
versionName/ تگ ریلیز باید یکسان باشد:MAJOR.MINOR.PATCH(مثلاً70.9.911)versionCodeپیشنهادی:MAJOR * 1000000 + MINOR * 1000 + PATCH- جزئیات بهروزرسانی خودکار:
docs/ANDROID_AUTO_UPDATE.md - بهروزرسانی خودکار ویندوز (همان تگ ریلیز، asset جدا):
docs/WINDOWS_AUTO_UPDATE.md
مثال در pubspec.yaml:
version: 70.9.911+70009911
استفاده از اسکریپتهای مدیریت نسخه
Linux/macOS (Bash)
# نمایش نسخه فعلی
./update_version.sh --show
# تنظیم نسخه به 1.0.24 (شماره بیلد تغییر نمیکند)
./update_version.sh --set 1.0.24
# تنظیم شماره بیلد به 24
./update_version.sh --build 24
# تنظیم نسخه کامل
./update_version.sh --set-full 1.0.24+24
# افزایش نسخه patch (1.0.23 -> 1.0.24)
./update_version.sh --increment patch
# افزایش نسخه minor (1.0.23 -> 1.1.0)
./update_version.sh --increment minor
# افزایش نسخه major (1.0.23 -> 2.0.0)
./update_version.sh --increment major
# افزایش شماره بیلد (23 -> 24)
./update_version.sh --increment build
Windows (PowerShell)
# نمایش نسخه فعلی
.\update_version.ps1 -Show
# تنظیم نسخه به 1.0.24
.\update_version.ps1 -Set 1.0.24
# تنظیم شماره بیلد به 24
.\update_version.ps1 -Build 24
# تنظیم نسخه کامل
.\update_version.ps1 -SetFull 1.0.24+24
# افزایش نسخه patch
.\update_version.ps1 -Increment patch
# افزایش نسخه minor
.\update_version.ps1 -Increment minor
# افزایش نسخه major
.\update_version.ps1 -Increment major
# افزایش شماره بیلد
.\update_version.ps1 -Increment build
مثالهای عملی
سناریو 1: انتشار نسخه جدید با رفع باگ
# افزایش patch و build
./update_version.sh --increment patch
./update_version.sh --increment build
یا به صورت یکجا:
# افزایش patch (build هم باید افزایش یابد)
./update_version.sh --increment patch
./update_version.sh --increment build
سناریو 2: افزودن ویژگی جدید
# افزایش minor (patch و build به 0 برمیگردند)
./update_version.sh --increment minor
./update_version.sh --increment build
سناریو 3: تغییرات بزرگ
# افزایش major (minor, patch و build به 0 برمیگردند)
./update_version.sh --increment major
./update_version.sh --increment build
سناریو 4: تنظیم دستی نسخه
# تنظیم نسخه کامل
./update_version.sh --set-full 2.0.0+50
نکات مهم
- همیشه قبل از بیلد، نسخه را بررسی کنید: از
--showاستفاده کنید - شماره بیلد باید همیشه افزایش یابد: برای هر بیلد جدید، build number را افزایش دهید
- نسخهگذاری معنادار: از semantic versioning پیروی کنید
- پس از تغییر نسخه، بیلد کنید: تغییرات در
pubspec.yamlفقط در بیلدهای بعدی اعمال میشوند
بررسی نسخه در خروجیهای بیلد
Android
# بررسی APK
aapt dump badging app-release.apk | grep version
iOS
نسخه در Info.plist و project.pbxproj تنظیم میشود.
Windows
نسخه در Runner.rc و خواص فایل EXE قابل مشاهده است.
عیبیابی
اگر نسخه در پلتفرم خاصی اعمال نشد:
- مطمئن شوید که
pubspec.yamlبه درستی بهروزرسانی شده است - پروژه را clean کنید:
flutter clean - دوباره بیلد کنید:
flutter build <platform> - بررسی کنید که فایلهای native (مثل
build.gradle.ktsبرای Android) از متغیرهای Flutter استفاده میکنند