CI/CD والنشر على متاجر التطبيقات

تجهيز تطبيقك لرفعه على متجر Google Play

16 دقيقة الدرس 8 من 12

تجهيز تطبيقك لرفعه على متجر Google Play

إطلاق تطبيق Flutter على متجر Google Play يتطلب أكثر بكثير من تشغيل أمر بناء واحد. يجب عليك إنشاء حساب مطور، وإعداد قائمة متجر متكاملة، وتوليد حزمة تطبيق Android (AAB) موقّعة للإنتاج، والتنقل عبر مسارات مراجعة Google متعددة المستويات قبل أن يتمكن ملايين المستخدمين من تثبيت تطبيقك. يشرح هذا الدرس كل خطوة بالترتيب الصحيح.

الخطوة الأولى — إنشاء حساب مطور في Play Console

قبل أن تتمكن من نشر أي شيء، تحتاج إلى حساب Google Play Console. انتقل إلى play.google.com/console، سجّل الدخول بحساب Google، وادفع رسوم التسجيل لمرة واحدة بقيمة 25 دولار. بمجرد تفعيل حسابك يمكنك إنشاء تطبيق بالنقر على Create app، واختيار لغة افتراضية، والإفصاح عما إذا كان تطبيقاً أو لعبة وما إذا كان مجانياً أو مدفوعاً.

ملاحظة: حسابات المطورين الفردية مرتبطة بشخص واحد. إذا كنت تبني لصالح شركة، اختر نوع حساب Organization حتى يتمكن أعضاء الفريق المتعددون من مشاركة الوصول مع أذونات مبنية على الأدوار.

الخطوة الثانية — إعداد قائمة المتجر

قائمة متجر كاملة مطلوبة قبل أن تراجع Google تطبيقك. تحتوي القائمة على عدة أقسام فرعية:

  • تفاصيل التطبيق — وصف قصير (80 حرفاً)، ووصف كامل (4,000 حرف)، واسم التطبيق (30 حرفاً) بكل لغة مدعومة.
  • الرسومات — أيقونة بحجم 512 × 512 بكسل، ورسوم مميزة بحجم 1,024 × 500 بكسل، وصورتان على الأقل من الهاتف (الحد الأدنى 320 بكسل على الجانب القصير، والحد الأقصى 3,840 بكسل على الجانب الطويل).
  • تصنيف المحتوى — املأ استبيان IARC؛ تُعيّن Google تصنيفات عمرية مناسبة (مثل للجميع، للمراهقين، للبالغين 17+) لكل دولة تلقائياً.
  • سلامة البيانات — أعلن عن كل نوع من البيانات التي يجمعها تطبيقك أو يشاركها (الموقع، جهات الاتصال، المعلومات المالية، إلخ) وما إذا كانت مشفرة أثناء النقل. هذا القسم إلزامي ويُعرض بشكل بارز للمستخدمين في صفحة متجرك.
  • فئة التطبيق ومعلومات الاتصال — اختر الفئة الأدق وقدّم رابط سياسة الخصوصية (مطلوب لجميع التطبيقات).
نصيحة: اكتب نص قائمة متجرك بالكلمات المفتاحية التي يبحث عنها المستخدمون فعلاً. يظهر الوصف القصير في نتائج البحث؛ ويُفهرس الوصف الكامل بواسطة خوارزمية بحث Google Play. قائمة محسّنة جيداً يمكنها مضاعفة عمليات التثبيت العضوية.

الخطوة الثالثة — توليد حزمة AAB موقّعة للإنتاج

يتطلب Google Play حزمة Android App Bundle بامتداد .aab بدلاً من APK خام للتطبيقات الجديدة. تتيح AAB لـ Play توليد APKات محسّنة لكل جهاز، مما يقلل أحجام التنزيل بنسبة تصل إلى 65%. يجب توقيع الحزمة بمخزن مفاتيح تتحكم فيه. تتكون عملية التوقيع من جزأين:

الجزء أ — إنشاء مخزن المفاتيح (مرة واحدة فقط):

توليد مخزن مفاتيح الإصدار

# شغّل من الطرفية (ليس داخل مشروع Flutter)
keytool -genkey -v \
  -keystore ~/keys/my-release-key.jks \
  -keyalg RSA \
  -keysize 2048 \
  -validity 10000 \
  -alias upload

# ستُطلب منك:
#   - كلمة مرور مخزن المفاتيح
#   - كلمة مرور مفتاح الاسم المستعار
#   - الاسم المميز (الاسم الأول/الأخير، المؤسسة، المدينة، البلد)
#
# تحذير: احتفظ بنسخة احتياطية آمنة من هذا الملف.
# فقدانه يعني عدم تمكنك من تحديث تطبيقك على Play أبداً.

الجزء ب — ربط مخزن المفاتيح بـ Flutter:

android/app/build.gradle (إعداد التوقيع)

// android/key.properties  (لا تلتزم هذا الملف مطلقاً!)
// storePassword=my-store-password
// keyPassword=my-key-password
// keyAlias=upload
// storeFile=/Users/me/keys/my-release-key.jks

// android/app/build.gradle
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
    keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}

android {
    signingConfigs {
        release {
            keyAlias        keystoreProperties['keyAlias']
            keyPassword     keystoreProperties['keyPassword']
            storeFile       keystoreProperties['storeFile'] ?
                            file(keystoreProperties['storeFile']) : null
            storePassword   keystoreProperties['storePassword']
        }
    }
    buildTypes {
        release {
            signingConfig signingConfigs.release
            minifyEnabled true
            shrinkResources true
        }
    }
}

بعد إعداد التوقيع، ابنِ حزمة AAB:

بناء حزمة AAB للإصدار

# نظّف أولاً لتجنب القطع الأثرية القديمة
flutter clean

# ابنِ حزمة AAB للإصدار
flutter build appbundle --release

# المخرج: build/app/outputs/bundle/release/app-release.aab
# ارفع هذا الملف إلى Play Console
تحذير: لا تلتزم key.properties أو ملف مخزن المفاتيح .jks في نظام التحكم بالإصدار أبداً. أضفهما على الفور إلى .gitignore. إذا تسرّب مفتاح التوقيع الخاص بك، يمكن لجهة خبيثة نشر تحديثات ضارة تحت هوية تطبيقك.

الخطوة الرابعة — فهم مسارات المراجعة

يستخدم Google Play نظام إصدار تدريجي يضم أربعة مسارات. يجب المضي قُدُماً بينها بالترتيب، ولكل مسار جماهير مختلفة ومتطلبات مراجعة مختلفة:

  • الاختبار الداخلي — ما يصل إلى 100 مختبر تدعوهم بالبريد الإلكتروني. عادةً ما تُوافَق المراجعة في غضون دقائق. مثالي لاختبارات الدخان الفوري للفريق بعد البناء.
  • الاختبار المغلق (ألفا) — مختبرون بدعوة فقط (غير محدود عبر المجموعات أو قوائم البريد الإلكتروني). يتطلب مراجعة سياسة كاملة في المرة الأولى. استخدمه لمختبري النسخة التجريبية والمتبنين المبكرين قبل الطرح الأوسع.
  • الاختبار المفتوح (بيتا) — يمكن لأي صاحب حساب Google الانضمام عبر رابط النسخة التجريبية العامة. لا يزال يتطلب اجتياز مراجعة محتوى Google. يولّد مراجعات مستخدمين مصنّفة "وصول مبكر" على قائمتك.
  • الإنتاج — مباشر لجميع المستخدمين. يمكنك إجراء طرح تدريجي — ابدأ بنسبة 1%، ثم 5%، ثم 20%، ثم 100% — للكشف عن الانحدارات قبل التعرض الكامل. عادةً ما تستغرق عمليات تقديم الإنتاج 1–3 أيام لمراجعة Google عند أول تقديم.
نصيحة: دائماً أطلق عبر المسار: داخلي ← مغلق ← مفتوح ← إنتاج. تخطي مباشرة إلى الإنتاج لبناء غير مختبر هو سبب شائع لمعدلات أعطال عالية في أول يوم إطلاق. حتى طرح تدريجي بنسبة 1% يعرض تطبيقك لمئات الآلاف من الأجهزة الحقيقية.

الخطوة الخامسة — توقيع التطبيق بواسطة Google Play (موصى به)

عند رفع أول AAB، ستعرض Play Console التسجيل في Play App Signing. تحتفظ Google بأمان بمفتاح توقيع تطبيقك وتُعيد توقيع حزمتك عند التسليم. يصبح مخزن مفاتيحك مفتاح رفع فقط — حتى لو سرق أحدهم مفتاح الرفع، لا يمكنه النشر بدون مفتاح التوقيع من جانب خادم Play. هذا هو النهج الموصى به بشدة للتطبيقات الجديدة.

الخلاصة

النشر على Google Play هو عملية متعددة الخطوات: أعدّ حساب Play Console الخاص بك، وأكمل قائمة المتجر (البيانات الوصفية، الرسومات، تصنيف المحتوى، سلامة البيانات)، وولّد حزمة AAB موقّعة للإنتاج باستخدام مخزن مفاتيح محفوظ بأمان، وانشر عبر مسارات المراجعة الأربعة من الداخلي إلى الإنتاج. اتخاذ كل خطوة بعناية — خاصةً إدارة مفاتيح التوقيع والطرح التدريجي — يقلل بشكل كبير من مخاطر إطلاق أول مؤلم.