فلاتر, فلاتر / 2025-11-26

أداه Shorebird لتحديث تطبيقات Flutter بدون رفع نسخة جديدة؟

أداه Shorebird لتحديث تطبيقات Flutter بدون رفع نسخة جديدة؟

2025-11-26 وقت القراءه : 2 دقائق

كم مرة واجهت هذا الموقف: أطلقت تطبيقك على Google Play أو App Store، وبعد ساعات فقط اكتشفت خطأ صغير — ربما سطر واحد في الكود — لكنه كفيل بإرباك المستخدمين؟

تبدأ رحلة الإصدار من جديد: بناء نسخة جديدة، رفعها للمتجر، انتظار المراجعة (التي قد تُرفض لأسباب غير منطقية أحياناً)، ثم انتظار المستخدمين لتحديث التطبيق يدويًا.

لكن تخيّل لو كان بإمكانك إصلاح الخطأ فوراً — بدون انتظار، وبدون رفع نسخة جديدة؟

هنا يأتي دور Shorebird.


ما هي Shorebird؟

Shorebird هي أداة مفتوحة المصدر من فريق سابق في Flutter تسمح بتحديث كود Dart لتطبيقك بعد نشره على المتجر، بدون رفع إصدار جديد.

تُعرف هذه التقنية باسم Code Push أو Over-The-Air Updates (OTA)، أي إرسال التحديثات “عبر الهواء” مباشرة إلى المستخدمين.

ببساطة، يمكنك:

  • إصلاح bug أو تعديل logic داخلي.
  • رفع التحديث فورًا من جهازك.

يرى المستخدم التغيير عند إعادة تشغيل التطبيق، دون الحاجة إلى تحميل نسخة جديدة من المتجر.


 الموقع الرسمي: https://shorebird.dev

الوثائق التفصيلية: https://docs.shorebird.dev


كيف تعمل Shorebird من الداخل؟

Shorebird تعتمد على فكرة بسيطة:

  • عندما تُصدر تطبيقك لأول مرة باستخدام Shorebird، يتم تضمين “مُحدّد نسخة (Release ID)” داخل التطبيق.
  • Shorebird تُخزّن نسخة AOT (الكود المحوّل من Dart إلى Native ) على خوادمها.
  • لاحقًا، عندما تُصدر patch جديد، تُرسل فقط الفروقات (diff) بين الكود القديم والجديد.
  • التطبيق عند تشغيله يتحقق من وجود patch جديد، ويقوم بتحميله وتفعيله تلقائيًا في المرة التالية التي يُفتح فيها.

بهذا الشكل، لا تحتاج إلى رفع APK أو IPA جديد، فقط ترسل التغيير عبر Shorebird.


خطوات استخدام Shorebird عملياً

1. التثبيت

افتح Terminal وشغّل:

dart pub global activate shorebird_cli

أو باستخدام brew (على macOS):

brew install shorebird

ثم سجّل الدخول:

shorebird login


2. تهيئة المشروع

داخل مجلد مشروع Flutter:

shorebird init

سيُنشئ هذا ملف shorebird.yaml يربط تطبيقك بخدمة Shorebird.


3. إصدار النسخة الأولى (Release)

قبل رفع التطبيق إلى Play Store أو App Store:

shorebird release android

# أو

shorebird release ios

هذا الأمر يبني نسخة الإنتاج ويرفعها إلى Shorebird مع رقم release خاص.


4. رفع Patch لاحق (تحديث فوري)

بعد اكتشاف bug أو تعديل بسيط، نفّذ:

shorebird patch android

# أو

shorebird patch ios

سيقوم Shorebird بمقارنة الكود الحالي مع الكود السابق ورفع التغيير مباشرةً.

خلال ثوانٍ… سيحصل المستخدمون على التحديث فور إعادة فتح التطبيق ✨


5. تضمين مكتبة Shorebird في التطبيق

أضف حزمة shorebird_code_push في pubspec.yaml:

dependencies:
  shorebird_code_push: ^1.0.0

ثم استدعها في main.dart:

import 'package:shorebird_code_push/shorebird_code_push.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await ShorebirdCodePush().checkForUpdate();
  runApp(MyApp());
}

بهذا يتحقق التطبيق عند التشغيل من وجود تحديث ويقوم بتنزيله في الخلفية.


مثال عملي واقعي

افترض أن لديك تطبيقاً يحتوي على رسالة ترحيب:

Text('Welcome to my app!');

بعد الإصدار اكتشفت خطأ مطبعي وتريد تصحيحه إلى:

Text('Welcome to my awesome app!');

بدلاً من رفع إصدار جديد للمتجر، يمكنك ببساطة تنفيذ:

shorebird patch android

خلال لحظات، كل المستخدمين سيشاهدون الرسالة الجديدة بعد إعادة فتح التطبيق 🔥


ميزات Shorebird الرئيسية

  • تحديث فوري: إصلاح الأخطاء الصغيرة خلال دقائق.
  • متوافقة مع Flutter كليًا: تعمل مع Dart و AOT.
  • آمنة ومتوافقة مع سياسات المتاجر.
  • دعم rollback: يمكنك التراجع عن patch متى شئت.
  • إحصائيات وتحكم بالإصدارات عبر CLI.


القيود والملاحظات

  • لا يمكن تحديث plugins أو الكود native (Java / Swift).
  • لا تستخدمها لتغييرات جذرية أو تعديلات في قاعدة البيانات.
  • استخدمها فقط للأخطاء البسيطة والتحسينات السريعة.
  • راقب دائمًا Crashlytics أو Sentry بعد كل patch للتأكد من الاستقرار.


تكاملها مع سير عملك (CI/CD)

يمكنك دمج Shorebird مع خطوط CI مثل GitHub Actions:

- name: Release with Shorebird
  run: |
    shorebird release android
- name: Patch hotfix
  run: |
    shorebird patch android

بهذا يصبح نشر bug fix تلقائياً فور الدمج إلى main branch.

إضافة تعليق
Loading...