EduFlow

الوحدة 5 · الإطلاق

البناء والإرسال إلى المتاجر عبر EAS

18 دقراءة 4 درتّب الخطوات

الدرس في لمحة

اضبط هوية Trailhead وإصداراته، وأنشئ builds للتطوير والمعاينة والإنتاج باستخدام EAS Build، وأرسلها إلى TestFlight وGoogle Play باستخدام EAS Submit، واستعدّ لمراجعة المتاجر.

  1. 1الهوية والإصدارات في app.json
  2. 2الـ build profiles
  3. 3بيانات الاعتماد
  4. 4الإرسال إلى المتاجر
  5. 5اجتياز المراجعة

لا فيديو هنا، بل الشيء الحقيقي: درس مكتوب وأمثلة قابلة للتشغيل واختبار وتدريب.

حتى الآن عمل Trailhead عبر Expo Go والـ development builds، مع حاسوبك المحمول يقدّم كود JavaScript. أما المستخدمون الحقيقيون فيحتاجون إلى شيء آخر: تطبيق يُثبَّت من متجر، ويبدأ دون خادم تطوير، وموقَّع بحيث يثق به هاتفهم. يصنع EAS Build هذه الـ builds في السحابة، فلا تحتاج إلى Mac من أجل iOS، ويرفعها EAS Submit إلى المتاجر.

الهوية والإصدارات في app.json

قبل أول build، احسم بضعة حقول:

app.json
{
  "expo": {
    "name": "Trailhead",
    "slug": "trailhead",
    "version": "1.0.0",
    "scheme": "trailhead",
    "icon": "./assets/images/icon.png",
    "ios": { "bundleIdentifier": "com.example.trailhead" },
    "android": { "package": "com.example.trailhead" }
  }
}

معرّف الحزمة (bundle identifier في iOS) واسم الحزمة (package name في Android) هما الهوية الدائمة لتطبيقك في المتاجر. غيّرهما بعد النشر فيرى المتجر تطبيقًا مختلفًا: لا تحديثات للمستخدمين الحاليين، ولا انتقال للمراجعات. استخدم نطاقًا معكوسًا تملكه.

هناك نوعان من الإصدارات. version هو ما يراه المستخدمون (“1.0.0”)؛ وترفعه مع كل إصدار عام. وكل رفع يحتاج أيضًا إلى رقم داخلي فريد ومتزايد (رقم البناء في iOS، ورمز الإصدار في Android). دع EAS يدير هذه الأرقام نيابةً عنك، كما سترى أدناه.

الـ build profiles

ثبّت الـ CLI، وسجّل الدخول إلى حساب Expo، وولّد ملف الإعدادات:

Terminal
npm install -g eas-cli
eas login
eas build:configure

هذا ينشئ eas.json بثلاثة profiles:

eas.json
{
  "cli": { "appVersionSource": "remote" },
  "build": {
    "development": { "developmentClient": true, "distribution": "internal" },
    "preview": { "distribution": "internal" },
    "production": { "autoIncrement": true }
  },
  "submit": { "production": {} }
}
  • development يبني عميل التطوير الخاص بك (الـ development build من القسم 1)، مع قائمة التطوير، ويحمّل JavaScript من Metro.
  • preview يبني تطبيقًا مستقلًا للمختبِرين، يُثبَّت من رابط أو رمز QR (توزيع داخلي). وعلى iOS يجب أولًا تسجيل أجهزة المختبِرين باستخدام eas device:create، لأن هذه builds من نوع ad hoc.
  • production يبني للمتاجر. ومع appVersionSource: "remote" وautoIncrement، يخزّن EAS رقم البناء ويرفعه مع كل production build.

ثم ابنِ:

Terminal
eas build --platform android --profile preview
eas build --platform all --profile production

يعمل البناء على خوادم EAS؛ ويطبع الـ CLI رابطًا إلى السجلّات، وفي النهاية رابطًا إلى الـ build نفسه.

يمرّ الكود المصدري عبر eas build ليصبح ملفًا تنفيذيًا موقّعًا. تذهب builds المعاينة إلى المختبِرين عبر رابط. وتمرّ builds الإنتاج عبر eas submit إلى TestFlight أو مسار اختبار في Google Play، ثم مراجعة المتجر، ثم الإطلاق. الكود eas build preview للمختبِرين eas submit TestFlight / track المراجعة ثم الإطلاق
من الكود المصدري إلى المتاجر

بيانات الاعتماد

كل build قابل للتثبيت يكون موقَّعًا. يحتاج iOS إلى شهادة توزيع (distribution certificate) وملف تجهيز (provisioning profile)؛ ويحتاج Android إلى upload keystore. يستطيع EAS توليدها وتخزينها وإعادة استخدامها مع كل build؛ ويسألك الـ CLI في المرة الأولى. ولـ iOS تحتاج إلى عضوية مدفوعة في Apple Developer Program؛ ولـ Google Play إلى رسم تسجيل مطوّر يُدفع مرة واحدة. وتعامل مع الـ keystore الخاص بـ Android بحرص: EAS يحتفظ به لك، لكن إن أدرته بنفسك وأضعته، يصبح تحديث التطبيق مؤلمًا.

الإرسال إلى المتاجر

أنشئ أولًا سجلّ التطبيق في App Store Connect وفي Google Play Console. ثم ارفع آخر production build:

Terminal
eas submit --platform ios
eas submit --platform android

على iOS يذهب الـ build إلى App Store Connect، حيث يصبح متاحًا في TestFlight للمختبِرين بعد المعالجة. وعلى Android يصل إلى مسار اختبار (الداخلي افتراضيًا)؛ ويحتاج EAS إلى مفتاح حساب خدمة (service account) من Google ليرفعه نيابةً عنك. ويمكنك الجمع بين الخطوتين باستخدام eas build --auto-submit.

اجتياز المراجعة

يراجع المتجران التطبيقات، وApple أكثر صرامة. ستملأ صفحة المتجر (الاسم، والوصف، ولقطات الشاشة لأحجام الأجهزة المطلوبة)، ورابط سياسة الخصوصية، وتفاصيل الخصوصية: قسم App Privacy لدى Apple ونموذج Data safety لدى Google Play، ويجب أن يطابقا ما يجمعه Trailhead فعلًا، مثل الموقع والصور.

تستغرق المراجعات عادةً من بضع ساعات إلى يومين. وبعد الموافقة، تختار أنت متى تطلق. ثم تتكرّر الدورة مع كل تغيير أصلي: إصدار جديد، ثم build، ثم إرسال، ثم مراجعة. أما الإصلاحات التي تقتصر على JavaScript فلها طريق أسرع، وهو موضوع الدرس الأخير.

أهم النقاط

  • يترجم build الإصدار التطبيق الأصلي، ويجمّع كود JavaScript ويصغّره، ويوقّعه ببيانات اعتماد تثق بها المتاجر.
  • معرّف الحزمة (bundle identifier) في iOS واسم الحزمة (package name) في Android دائمان بعد النشر؛ فاخترهما بتأنٍّ.
  • تصف الـ profiles في eas.json أنواع الـ builds: development لعميل التطوير الخاص بك، وpreview للمختبِرين، وproduction للمتاجر.
  • يرفع eas submit الـ build الإنتاجي إلى App Store Connect أو Google Play؛ ويحصل عليه المختبِرون عبر TestFlight أو مسار اختبار (testing track) قبل المراجعة.
  • معظم حالات الرفض الأولى تأتي من الانهيارات، أو نصوص أذونات مبهمة، أو تفاصيل خصوصية ناقصة، أو غياب حساب تجريبي في تطبيق يتطلّب تسجيل الدخول.

قراءات إضافية

تحقّق من فهمك

3 أسئلة

السؤال 1 من 3

بعد أن أصبح Trailhead على الـ App Store، يريد زميل تغيير معرّف الحزمة في iOS ليطابق اسم شركة جديد. ماذا يحدث إن فعلت؟

السؤال 2 من 3

تريد أن يجرّب خمسة متنزّهين من ناديك Trailhead قبل أن يصل إلى المتاجر، مثبّتين إياه من رابط. أيّ build يناسب؟

السؤال 3 من 3

ما الذي يتولّاه autoIncrement في الـ production profile؟

تدريب

رتّب الخطوات

رتّب الإصدار الأول من Trailhead

اكتملت ميزات Trailhead 1.0.0 واختُبرت. رتّب خطوات إصداره الأول على الـ App Store وGoogle Play بالترتيب الذي ستنفّذها به.

استخدم أزرار الأسهم لإعادة الترتيب.

  1. 1اضبط ios.bundleIdentifier وandroid.package وversion في app.json
  2. 2ثبّت builds من TestFlight والمسار الداخلي على هواتف حقيقية وامشِ عبر المسارات الرئيسية
  3. 3اصنع build من نوع preview وشاركه مع بضعة متنزّهين عبر التوزيع الداخلي
  4. 4شغّل eas build:configure لإنشاء eas.json مع الـ build profiles
  5. 5أطلق الإصدار الموافق عليه للمستخدمين
  6. 6أكمل صفحة المتجر وتفاصيل الخصوصية والحساب التجريبي، ثم أرسل للمراجعة
  7. 7شغّل eas submit لرفع الـ builds إلى App Store Connect وGoogle Play
  8. 8شغّل eas build --platform all --profile production