Watch
1
0
Fork
You've already forked Seyyed_arc
0
forked from hesabix/arc
Seyyed_arc/docs/ANDROID_AUTO_UPDATE.md

4.7 KiB
Raw Permalink Blame History

به‌روزرسانی خودکار اندروید (Forgejo Releases)

هدف

کاربران APK خارج از مارکت، هنگام انتشار نسخهٔ جدید در ریلیزهای مخزن اعلان بگیرند، APK را دانلود کنند و نصب را آغاز کنند. وب تحت تأثیر قرار نمی‌گیرد (مسیر version.json / web/index.html دست‌نخورده می‌ماند).

معیار نسخه (قرارداد الزامی از این پس)

مورد مقدار
منبع حقیقت تگ ریلیز Forgejo (tag_name)
قالب MAJOR.MINOR.PATCH — سه عدد صحیح نامنفی، مثلاً 70.9.911
versionName در APK همان تگ ریلیز
versionCode پیشنهادی MAJOR * 1_000_000 + MINOR * 1_000 + PATCH (مثلاً 70009911)
مقایسه تاپل (MAJOR, MINOR, PATCH)؛ نسخهٔ جدیدتر = بزرگ‌تر بودن تاپل
ریلیز معتبر draft=false و prerelease=false
فایل APK اولین asset با پسوند .apk؛ در صورت چندتایی، اولویت با نام شامل app-release

در pubspec.yaml باید همان نسخه تنظیم شود، مثلاً:

version: 70.9.911+70009911

یا هنگام بیلد:

flutter build apk --build-name=70.9.911 --build-number=70009911

سناریوی کاربر

  1. اپ اندروید پس از اتمام splash (با تأخیر کوتاه) آخرین ریلیز را از API Forgejo می‌خواند.
  2. اگر نسخهٔ ریموت از نسخهٔ نصب‌شده بزرگ‌تر باشد و کاربر آن را «بعداً» نزده باشد:
    • اعلان درون‌برنامه‌ای (دیالوگ) با changelog نمایش داده می‌شود.
    • در صورت فعال بودن دانلود خودکار، دانلود APK شروع می‌شود.
  3. پس از اتمام دانلود، نصب‌کنندهٔ سیستم باز می‌شود (تأیید کاربر الزامی است؛ محدودیت اندروید).
  4. در تنظیمات حساب کاربری → به‌روزرسانی برنامه:
    • نمایش نسخهٔ فعلی / آخرین نسخه
    • بررسی دستی
    • دانلود و نصب
    • تنظیمات: بررسی خودکار هنگام شروع، دانلود خودکار
    • در صورت نیاز، هدایت به تنظیمات «نصب از منابع ناشناس»

فازهای اجرایی

فاز شرح وضعیت
۱ هسته: پارس نسخه، کلاینت Forgejo، گیت پلتفرم پیاده‌سازی‌شده
۲ نیتیو: FileProvider + MethodChannel نصب APK پیاده‌سازی‌شده
۳ سرویس: چک / دانلود با progress / نصب پیاده‌سازی‌شده
۴ اعلان استارت‌آپ + صفحه تنظیمات حساب پیاده‌سازی‌شده
۵ l10n و ایزوله‌سازی از وب پیاده‌سازی‌شده

API مصرف‌شده

  • GET https://source.hesabix.ir/api/v1/repos/hesabix/arc/releases/latest
  • دانلود از assets[].browser_download_url

نکات امنیتی / عملیاتی

  • APK باید با همان keystore قبلی امضا شود.
  • مخزن ریلیز عمومی است؛ کلاینت اپ برای خواندن releases/latest توکن لازم ندارد.
  • حجم APK حدود ۱۳۰MB+ است؛ progress در UI و اعلان سیستم نمایش داده می‌شود و دانلود در پس‌زمینه ادامه می‌یابد.
  • وب و دسکتاپ این ماژول را اجرا نمی‌کنند (supportsAndroidApkUpdate).
  • ریلیزهای مشترک می‌توانند هم‌زمان asset اندروید و ویندوز داشته باشند؛ کلاینت اندروید فقط .apk را برمی‌دارد. جزئیات ویندوز: WINDOWS_AUTO_UPDATE.md.

انتشار خودکار ریلیز اندروید

پس از بیلد APK، از ریشهٔ مخزن:

# ترجیحاً با توکن API
FORGEJO_TOKEN='...' ./release_android_forgejo.sh

# یا با یوزر/پسورد
FORGEJO_USER='...' FORGEJO_PASSWORD='...' ./release_android_forgejo.sh

# پیش‌نمایش بدون آپلود
./release_android_forgejo.sh --dry-run

# جایگزینی ریلیز هم‌تگ
FORGEJO_TOKEN='...' ./release_android_forgejo.sh --force

اسکریپت نسخه را از pubspec.yaml می‌خواند، ریلیز با تگ MAJOR.MINOR.PATCH می‌سازد و app-release.<version>.apk را آپلود می‌کند. جزئیات: ./release_android_forgejo.sh --help