إنشاء واستخدام حزمة تطوير برامج (SDK) يتم تفعيلها في وقت التشغيل

1
Key concepts
2
Set up your development environment
3
Build an RE SDK
4
Consume the RE SDK
5
Testing, and building for distribution

المفاهيم الرئيسية

يوضّح هذا القسم بنية SDK Runtime وكيفية تثبيت حِزم SDK التي يتم تفعيلها في وقت التشغيل والتوافق مع الإصدارات القديمة وكيفية نقل حِزم SDK الحالية إلى SDK Runtime.

مسرد المصطلحات

  • حزمة SDK يتم تفعيلها في وقت التشغيل (RE SDK): هي حزمة SDK مصمَّمة للعمل في بيئة SDK Runtime والتواصل مع التطبيق عبر عملية الاتصال بين العمليات (IPC).
  • حزمة تطوير برامج (SDK) متوافقة مع وقت التشغيل: هي حزمة تطوير برامج (SDK) غير متوافقة مع وقت التشغيل، ويتم ربطها بالتطبيق بشكل ثابت، وقد تحتوي على رمز حزمة تطوير البرامج (SDK) الحالي بالإضافة إلى رمز جديد لاستدعاء حزمة تطوير البرامج (SDK) المتوافقة مع وقت التشغيل.
    • يُشار إلى هذا النوع من حِزم SDK أحيانًا باسم حِزم SDK المرتبطة بشكل ثابت أو حِزم SDK الثابتة.
  • Shim: هي مكتبة Jetpack تساعد في تجريد عملية التواصل بين العمليات أو التواصل بين العمليات (IPC)، والحفاظ على واجهة التطبيق وحزمة SDK نفسها.

بنية SDK Runtime

يستخدم وقت تشغيل حزمة تطوير البرامج (SDK) نموذجًا من نوع العميل والخادم.

ويكمن الاختلاف الرئيسي في أنّ "العميل" (التطبيق) و "الخادم" (حِزم SDK المفعَّلة في وقت التشغيل) يعملان على الجهاز نفسه، ويتم التواصل بينهما عبر العمليات.

للمساعدة في التغلّب على هذه التحديات، أنشأنا مكتبات وأدوات Jetpack التالية لتبسيط عملية دمج حِزم SDK في التطبيقات ضمن بيئة SDK Runtime:

  • مكتبة التوافق: تساعد مكتبة التغليف (أو shim) في تجريد عملية التواصل بين العمليات أو التواصل بين العمليات (IPC). ويساعد أيضًا في الحفاظ على واجهة التطبيق وحزمة SDK نفسها.
  • مكتبة التوافق مع الأنظمة القديمة: تعالج هذه المكتبة التوافق مع الأنظمة القديمة، ما يضمن توافق حزمة SDK بغض النظر عمّا إذا كان وقت تشغيل حزمة SDK متاحًا أم لا.
  • مكتبة واجهة المستخدم: نوفّر أيضًا مكتبات للتعامل مع العرض عن بُعد، مثل استرداد واجهة المستخدم من حزمة SDK المفعَّلة في وقت التشغيل أو تغيير حجم العروض وإعادة تصميمها.
نظرة عامة على بنية "وقت تشغيل حزمة تطوير البرامج (SDK)"
مخطّط يوضّح تفاعل تطبيق مع حزمة SDK يتم تفعيلها في وقت التشغيل من خلال مكتبات مختلفة

التغييرات التي طرأت على عملية التثبيت

عند إنشاء حزمة SDK التي يتم تفعيلها في وقت التشغيل في "استوديو Android" أو أدوات أخرى، يمكنك إنشاء حزمة تطوير البرامج (SDK) لنظام التشغيل Android (ASB)، وهي تنسيق نشر لحِزم SDK التي يتم تفعيلها في وقت التشغيل.

تعالج أداة bundletool حزمة ASB لإنشاء حزمة APK خاصة بحزمة SDK المفعَّلة في وقت التشغيل: تحتوي حزمة APK المنفصلة هذه على رمز حزمة SDK بدون رمز التطبيق.

يحدّد ملف البيان للتطبيق تبعية لاسم حزمة SDK التي يتم تفعيلها في وقت التشغيل وإصدارها، ويتم حلّ هذه التبعية من خلال تطبيق المثبِّت.

بعد أن يحصل برنامج التثبيت على حزمة APK الخاصة بحزمة SDK، يبدأ التثبيت من خلال تثبيت حزمة APK الخاصة بحزمة SDK. في حال نجاح عملية التثبيت، يتم تثبيت حزمة APK الخاصة بالتطبيق.

يختلف مسار العمل إذا كان التطبيق مثبَّتًا على الإصدار 13 من نظام التشغيل Android أو إصدار أقدم، وفي الأجهزة التي لا تتوافق مع "وقت تشغيل حزمة SDK". في هذا السيناريو، يثبّت المتجر حِزمة APK واحدة تحتوي على كلّ من حزمة تطوير البرامج (SDK) التي يتم تفعيلها في وقت التشغيل ورمز التطبيق. يمكنك الاطّلاع على قسم التوزيع لمعرفة المزيد.

عندما يعتمد تطبيق على حزمة SDK هذه في مرحلة الإنتاج، ينشئ متجر التطبيقات حزمة APK الصحيحة لحزمة SDK من حزمة ASB هذه، ثم يثبّتها.

التوافق مع الأنظمة القديمة

بما أنّه تم طرح "وقت تشغيل حزمة تطوير البرامج" في نظام التشغيل Android 14، كان علينا توفير الدعم للإصدارات الأقدم بدون فرض تكاليف إضافية على مطوّري حِزم تطوير البرامج أو التطبيقات.

للتعامل مع التوافق مع الإصدارات القديمة على Android 13 والإصدارات الأقدم، قدّمنا مكتبة Jetpack يمكنها تشغيل حزمة SDK التي يتم تفعيلها في وقت التشغيل بسلاسة بغض النظر عن توافق الجهاز مع "وقت تشغيل SDK".

سيؤدي اتّباع هذا الدليل إلى جعل حزمة تطوير البرامج (SDK) التي يتم تفعيلها في وقت التشغيل متوافقة مع الإصدارات القديمة تلقائيًا، ولن تحتاج إلى اتّخاذ أي خطوات أخرى.

نوضّح الإجراءات المرتبطة بالتوافق مع الإصدارات القديمة في المراحل ذات الصلة، ولكن بشكل عام، عليك التأكّد من أنّك حدّدت التبعيات الصحيحة وأنّك تستخدم فئات *Compat كلما كان ذلك منطبقًا.

نقل حِزم SDK الحالية

إذا كانت لديك حزمة SDK حالية تريد نقلها إلى بيئة التشغيل، ليس عليك إعادة تصميم قاعدة الرموز البرمجية بالكامل دفعة واحدة، بل يمكنك اختيار نقل منطق حزمة SDK الحالية بشكل تدريجي إلى حزمة SDK الجديدة المتوافقة مع بيئة التشغيل.

ننصحك باتّباع المراحل الثلاث التالية لنقل حزمة SDK حالية إلى SDK Runtime:

  1. إنشاء حزمة تطوير برامج (SDK) لفترة انتقالية يتم تفعيلها في وقت التشغيل، بالإضافة إلى حزمة تطوير برامج (SDK) سميكة مقابلة يمكنها التعرّف على وقت التشغيل يتيح لك ذلك نقل منطق النشاط التجاري بشكل تدريجي من حزمة SDK الحالية، كما يوفّر لك منصة اختبار لإجراء اختبارات A/B.
  2. نقل جميع منطق الأنشطة التجارية الحالي لحزمة SDK إلى حالة ثابتة مع حزمة SDK صغيرة الحجم ومناظرة ومدرِكة لوقت التشغيل لتسهيل نقل التطبيقات
  3. توفير عملية نقل بيانات كاملة للتطبيقات المهتمة من أجل استخدام حزمة SDK التي يتم تفعيلها في وقت التشغيل مباشرةً بدون حزمة SDK بسيطة يمكن تفعيلها في وقت التشغيل

المرحلة 1 - الفترة الانتقالية: حزمة تطوير برامج (SDK) شاملة ومدرِكة لبيئة التشغيل

يمكنك البدء باختيار الاحتفاظ ببعض منطق النشاط التجاري في حزمة SDK المتوافقة مع وقت التشغيل. نسمّي ذلك حزمة SDK سميكة متوافقة مع وقت التشغيل أو برنامج تضمين داخل التطبيق.

يتيح لك هذا الأسلوب الاحتفاظ بكل أو بعض إمكانات حزمة SDK في مكتبة التطبيقات الثابتة، إلى جانب حزمة SDK جديدة يتم تفعيلها في وقت التشغيل.

يتيح لك ذلك نقل حالات الاستخدام بشكل تدريجي إلى حزمة SDK التي يتم تفعيلها في وقت التشغيل، واختبار حزمة SDK التي يتم تفعيلها في وقت التشغيل مقابل حزمة SDK الحالية.

في هذه المرحلة، لا يحتاج مطوّر التطبيق إلى تغيير أي شيء في طريقة استخدام حزمة SDK، لأنّ مكتبة التطبيق الثابتة (حزمة SDK المتوافقة مع وقت التشغيل) هي التي تنفّذ العمل اللازم لاستخدام حزمة SDK المتوافقة مع وقت التشغيل.

يستدعي التطبيق حزمة تطوير برامج (SDK) ثابتة ومدرِكة لوقت التشغيل ضمنه، ويمكن أن تحتوي على طبقة ترجمة لاستدعاء حزمة تطوير البرامج (SDK) المفعَّلة في وقت التشغيل بالإضافة إلى منطق النشاط التجاري الآخر بداخلها.
يستدعي التطبيق حزمة SDK ثابتة ومفعَّلة في وقت التشغيل ضمنه، ويمكن أن تحتوي على طبقة ترجمة لاستدعاء حزمة SDK المفعَّلة في وقت التشغيل بالإضافة إلى منطق الأنشطة التجارية الأخرى بداخلها.

المرحلة 2 - الحالة الثابتة: حزمة SDK بسيطة تتوافق مع وقت التشغيل

على عكس حزمة تطوير البرامج (SDK) المتوافقة مع وقت التشغيل، لا يحتوي برنامج التغليف البسيط أو حزمة تطوير البرامج (SDK) البسيطة المتوافقة مع وقت التشغيل (thin RA_SDK) إلا على رمز برمجي لترجمة واجهة برمجة التطبيقات واستدعاء حزمة تطوير البرامج (SDK) المفعَّلة في وقت التشغيل في حزمة تطوير البرامج (SDK) للمكتبة المرتبطة بشكل ثابت.

في هذه المرحلة، يجب أن تكون قد نقلت كل رموز حزمة SDK الخاصة بمكتبة التطبيقات الثابتة إلى حزمة SDK التي يتم تفعيلها في وقت التشغيل.

لا يحتاج مطوّرو التطبيقات إلى إجراء أي تغييرات من المرحلة 1 لأنّ حزمة SDK الخفيفة التي تتوافق مع وقت التشغيل داخل التطبيق تتولّى عملية استدعاء حزمة SDK التي يتم تفعيلها في وقت التشغيل داخل "وقت تشغيل حزمة تطوير البرامج".

يستدعي التطبيق حزمة تطوير برامج (SDK) ثابتة بداخله تحتوي فقط على طبقة ترجمة.
يستدعي التطبيق حزمة تطوير برامج (SDK) ثابتة بداخله تحتوي فقط على طبقة ترجمة.

المرحلة 3: نقل البيانات بالكامل

في هذه المرحلة النهائية، تكون قد نقلت جميع إمكانات حزمة SDK إلى حزمة SDK المفعَّلة في وقت التشغيل، وأزلت جميع المكتبات الثابتة من التطبيق.

في هذه المرحلة، لن يحتاج عملاء تطبيقك إلى تضمين مكتباتك في عمليات الإنشاء، بل عليهم فقط إدراج البرامج الاعتمادية لحزمة SDK في ملف البيان وتضمين طلبات حزمة SDK في الرمز البرمجي لتطبيقهم.

يوجّه النظام طلبات حزمة تطوير البرامج (SDK) إلى "وقت تشغيل حزمة تطوير البرامج (SDK)"، حيث يتم تحميل حزمة تطوير البرامج (SDK) التي يتم تفعيلها في وقت التشغيل تلقائيًا.

بنية مرحلة النقل الكامل، حيث يستدعي الرمز الإعلاني للتطبيق حزمة SDK التي يتم تفعيلها في وقت التشغيل مباشرةً
بنية مرحلة النقل الكامل، حيث يستدعي رمز الإعلان في التطبيق حزمة SDK التي يتم تفعيلها في وقت التشغيل مباشرةً


مقدمة

الخطوة 2: إعداد بيئة التطوير