إنشاء عدة ملفات APK

الإعلانات

إنشاء عدة ملفات APK لمستويات مختلفة من واجهة برمجة التطبيقات

 

 

 

إنشاء عدة ملفات APK

عندما تطور تطبيق الأندرويد للإستفادة من ملفات APK المتعددة على قوقل بلاي، من المهم إعتماد بعض الممارسات الجيدة منذ البدايه..

ومنع حدوث المزيد من وجع الرأس الغير ضروري أثناء عملية التطوير.

يوضح لك هذا الدرس كيفية إنشاء ملفات APK متعددة لتطبيقك..

حيث يغطي كل قسم من أقسامه، نطاقاً مختلفاً بعض الشيء من مستويات واجهة برمجة التطبيقات.

ستحصل أيضاً على بعض الأدوات اللازمة للحفاظ على الكود الأساسي لملفات APK المتعددة سليماً قدر الإمكان.

 

 

 

أكد أنك بحاجة إلى ملفات APK متعددة


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

دون التضحية بتوافقه مع الإصدارات الأقدم. قد يبدو الأمر في البدايه كما لو أن دعم ملفات APK المتعدده هو الحل الأفضل، ولكن الحال ليس هكذا غالباً.

يحتوي قسم إستخدام ملف APK واحد بدلاً من ذلك، في دليل مطوّري ملفات APK المتعدده على بعض المعلومات المفيدة حول كيفية..

تحقيق ذلك بإستخدام ملف APK واحد، بما في ذلك إستخدام مكتبة الدعم التابعة لنا.

يمكنك أيضاً معرفة كيفية كتابة الكود الذي يتم تشغيله على مستويات معينة من واجهة برمجة التطبيقات في ملف APK واحد..

دون اللجوء إلى تقنيات مكلفة حسابياً مثلما تذكر هذه المقالة.

 

إذا نجحت في ذلك، فإن حصر تطبيقك على ملف APK واحد له العديد من المزايا، بما في ذلك:

  • يكون النشر والإختبار أسهل.
  • لا يوجد سوى كود أساسي واحد للإحتفاظ به.
  • يمكن للتطبيق التكيف مع تغييرات تكوين الجهاز.
  • استعادة التطبيق تعمل عبر الأجهزة فقط.
  • لن يكون هناك داعي للقلق بشأن تفضيل المتجر، أو سلوك “الترقيات” من ملف APK إلى الملف الأحدث، أو تحديد أي ملف APK يتناسب مع فئة الأجهزة.

يفترض الجزء المتبقي من هذا الدرس أنك بحثت عن الموضوع، وأستوعبت جيداً المواد في المصادر المرتبطه، وحددت أن ملفات APK المتعددة هي المسار الصحيح لتطبيقك.

 

 

 

إنشاء مخطط لمتطلباتك


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

للحصول على مرجع مفيد، توفر صفحة إصدارات النظام، من موقع مطوري برامج الأندرويد بيانات حول العدد التقريبي للأجهزة النشطة التي تشغل إصداراً معيناً من نظام الأندرويد.

أيضاً، على الرغم من أن الأمر قد يبدو سهلاً في البدايه، إلا أن عملية تتبع أي مجموعة من مستويات واجهة برمجة التطبيقات..

التي يستهدفها كل ملف APK تصبح صعبة إلى حدٍ ما، خاصة إذا كان هناك بعض التداخل (وغالباً ما يكون هناك تداخل).

لحسن الحظ، من السهل التخطيط لمتطلباتك بسرعة وسهولة والحصول على مرجع سهل لاحقاً.

لإنشاء مخطط لملفات APK المتعدده، ابدأ بإستخدام صف من الخلايا يمثل مختلف مستويات واجهة برمجة التطبيقات لنظام الأندرويد.

ضع خلية إضافية في النهاية لتمثيل الإصدارات المستقبلية من الأندرويد.

الآن فقط لون الرسم البياني بحيث يمثل كل لون ملف APK.

إليك مثال عن كيفية تطبيق كل ملف APK على مدى معين من مستويات واجهة برمجة التطبيقات.

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

حيث إنه بدلاً من السؤال عن “كيف يمكن لملف APK للمستوى الثالث إلى المستوى السادس من واجهة برمجة التطبيقات..

أي، إصدار الأندرويد 1.x الأول. كيف يعمل هذا؟” يمكنك ببساطة قول “كيف يعمل ملف APK الأزرق؟”

 

 

 

ضع كل الأكواد والمصادر الشائعة في مكتبة المشروع


سواء كنت تقوم بتعديل تطبيق أندرويد موجود أو تبدأ بإنشاء تطبيق من الصفر، فهذا هو أول شيء يجب أن تفعله في الكود الأساسي، والأكثر أهمية.

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

مما يحسن من وقت التطوير، ويقلل من إحتمالية حدوث الأخطاء، التي كان من الممكن تجنبها بسهولة.

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

 

إذا كنت تقوم بتحويل تطبيق موجود ليقوم بدعم ملفات APK المتعددة، فقم بتنظيف كودك الأساسي لكلٍ من…

ملف سلسلة ترجمة، قائمة القيم، ألوان الثيمات، رموز القائمة، والمخطط و التي لن تتغير عبر ملفات APK، وقم بوضعها كلها في مكتبة المشروع.

الكود الذي لن يتغير كثيراً يجب أن يذهب أيضاً إلى مكتبة المشروع.

من المحتمل أنك ستجد نفسك تقوم بتوسيع هذه الفئات، لإضافة دالة أو أثنتين من ملف APK إلى ملف APK آخر.

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

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

 

 

إنشاء عدة ملفات APK

إنشاء مشاريع APK جديدة


يجب أن يكون هناك مشروع أندرويد منفصل لكل ملف APK ستقوم بإطلاقه. لتنظيم أسهل، ضع مشروع المكتبة وجميع مشاريع APK ذات الصلة ضمن نفس المجلد الرئيسي.

تذكر أيضاً أن كل ملف APK يحتاج إلى أن يكون له نفس اسم الحزمة، على الرغم من أنه لا يلزمهم بالضرورة مشاركة اسم الحزمة مع المكتبة.

إذا كان لديك 3 ملفات APK تتبع نظام التخطيط الموضح أعلاه، فإن دليلك الرئيسي قد يبدو كما يلي:

alexlucas:~/code/multi-apks-root$ ls
foo-blue
foo-green
foo-lib
foo-red

 

 

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

وقم بمد هذا النشاط إلى مشروع APK. وجود نشاط بدايه محدد في مشروع المكتبة يمنحك فرصة لوضع جميع عمليات تهيئة تطبيقك في مكان واحد..

بحيث لا يضطر كل ملف من ملفات APK إلى إعادة تنفيذ المهام “العامة” مثل تهيئة التحليل، تشغيل عمليات التحقق من التراخيص وأي إجراءات تهيئة أخرى لا تتغير كثيراً من ملف APK إلى آخر.

 

 

 

إنشاء عدة ملفات APK

ضبط ملفات الإيضاح


عند تنزيل أحد المستخدمين لتطبيق يستخدم ملفات APK متعددة من خلال قوقل بلي، يتم إختيار ملف APK الصحيح وفقاً لقاعدتين بسيطتين:

  • يجب أن يوضح ملف الإيضاح أن ملف APK المحدد، مؤهل
  • من ملفات APK المؤهلة، يفوز الملف الذي يحوي رقم الإصدار الأعلى

مثال، لنأخذ مجموعة من عدة ملفات APK والتي تم وصفها سابقاً، ولنفترض بأننا لم نقم بتعيين مستوى أقصى لواجهة برمجة التطبيقات لأي من ملفات APK.

عند أخذها بشكلٍ فردي، فإن المدى المحتمل لكل ملف APK سيبدو كما يلي:

ولأنه مطلوب أن يحتوي ملف APK الذي يحتوي على النسخة الأعلى من minSdkVersion أيضاً على رمز إصدار أعلى..

فإننا نعلم أنه فيما يتعلق بقيم رمز الإصدار، فإن اللون الأحمر أكبر أو يساوي الأخضر أكبر أو يساوي الأزرق.

لذلك يمكننا أن نطوي المخطط بشكلٍ فعال ليبدو هكذا:

الآن، لنفترض أيضاً أن ملف APK الأحمر يتطلب بعض المتطلبات التي لا يتطلبها الملفين الآخرين.

تحتوي المرشحات على صفحة قوقل بلي لدليل مطوري الأندرويد على قائمة كاملة بالمخالفات المحتملة.

مثال، لنفترض أن الملف الأحمر يتطلب كاميرا أمامية. في الواقع، فإن هدف الملف APK الأحمر هو دمج الكاميرا الأمامية مع وظائف جديدة رائعة تمت إضافتها في مستوى واجهة برمجة التطبيقات 11.

 

ولكن، كما تبين، ليست كل الأجهزة التي تدعم واجهة برمجة التطبيقات 11 تحتوي على كاميرا أمامية! أمر فظيع!

 

لحسن الحظ، إذا كان أحد المستخدمين يتصفح قوقل بلي من جهاز مماثل، فسينظر قوقل بلي في ملف الإيضاح..

ويرى أن الملف الأحمر يدرج الكاميرا الأمامية كمتطلب، ويتجاهله بهدوء، بعد أن قرر أن الملف الأحمر وهذا الجهاز غير متوافقين في السماء الرقمية.

عندئذ سيرى أن الملف الأخضر ليس متوافق فحسب مع الأجهزة المزودة بمستوى واجهة برمجة التطبيقات 11 (بما أنه لم يتم تعريف الحد الأقصى لـ maxSdkVersion)..

ولكن أيضاً لا يهتم ما إذا كانت هناك كاميرا أمامية أم لا! لا يزال بإمكان المستخدم تنزيل التطبيق من قوقل بلي..

لأنه على الرغم من حادثة الكاميرا الأماميه بأكملها، لا يزال هناك ملف APK يدعم مستوى واجهة برمجة التطبيقات هذه.

من أجل الحفاظ على جميع ملفاتك APK في “مسارات” منفصلة، من المهم أن يكون لديك نظام تخطيط جيد لرمز الإصدار.

يمكن العثور على المخطط الموصى به في مكان رموز الإصدار في دليل المطورين.

لأن مجموعة الأمثلة لملفات APK تتعامل فقط مع بعد واحد من الثلاثة أبعاد الممكنة..

فسيكون كافياً فصل كل ملف APK بمقدار 1000، قم بتعيين أول رقمين لنسخة minSdkVersion لملف الـ APK هذا..

وقم بزيادتها من هناك. قد يبدو هذا كالتالي:

الأزرق: 03001 ، 03002 ، 03003 ، 03004 …
الأخضر: 07001 ، 07002 ، 07003 ، 07004 …
الأحمر: 11001 ، 11002 ، 11003 ، 11004 …

مع وضع كل هذا معاً، من المرجح أن تظهر ملفات إيضاح أندرويد على النحو التالي:

الأزرق

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    android:versionCode="03001" android:versionName="1.0" package="com.example.foo">
    <uses-sdk android:minSdkVersion="3" />
    ...

الأخضر

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    android:versionCode="07001" android:versionName="1.0" package="com.example.foo">
    <uses-sdk android:minSdkVersion="7" />
    ...

الأحمر

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    android:versionCode="11001" android:versionName="1.0" package="com.example.foo">
    <uses-sdk android:minSdkVersion="11" />
    ...

 

 

إنشاء عدة ملفات APK

 

راجع قائمة التحقق الخاصة بك قبل الإطلاق


قبل الرفع إلى قوقل بلي، تحقق مجدداً من العناصر التالية. تذكر أن هذه العناصر مرتبطة بملفات APK المتعددة تحديداً..

ولا تمثل بأي حال من الأحوال، قائمة تحقق كاملة لجميع التطبيقات التي يتم رفعها إلى قوقل بلاي.

  • يجب أن تحتوي جميع ملفات APK على اسم الحزمة نفسه.
  • يجب توقيع جميع ملفات APK بالشهادة نفسها.
  • في حالة تداخل ملفات APK في إصدار النظام، يجب أن يحتوي رمز الإصدار الأعلى من minSdkVersion على رمز إصدار أعلى.
  • تحقق مرة أخرى من مرشحات ملف إيضاحك فيما لو كانت هناك معلومات متضاربة (ملفات APK التي تدعم فقط..

نسخة كب كيك على الشاشات الكبيرة لن يتمكن أي شخص من رؤيتها).

  • يجب أن يكون كل ملف إيضاح لملف APK فريداً على الأقل في واحدة من الميزات المدعومة..

إما الشاشات أو بنية openGL أو إصدار النظام الأساسي.

  • حاول إختبار كل ملف APK على جهاز واحد على الأقل. فيما عدا ذلك..

لديك واحد من أكثر محاكيات الجهاز قابلية للتخصيص في جلسة العمل على جهازك. احظى ببعض المرح

من المفيد أيضاً فحص ملف APK الذي تم تجميعه قبل إرساله إلى المتجر، للتأكد من عدم وجود أي أمور يمكن أن تخفي تطبيقك على قوقل بلي.

هذا في الواقع بسيط جداً، بإستخدام أداة “aapt”. تعد أداة Aapt (أداة حزم مواد الأندرويد)..

جزءاً من عملية البناء، لإنشاء تطبيقات الأندرويد وحزمها، وهي أيضاً أداة مفيدة جداً لفحصهم.

>aapt dump badging
package: name='com.example.hello' versionCode='1' versionName='1.0'
sdkVersion:'11'
uses-permission:'android.permission.SEND_SMS'
application-label:'Hello'
application-icon-120:'res/drawable-ldpi/icon.png'
application-icon-160:'res/drawable-mdpi/icon.png'
application-icon-240:'res/drawable-hdpi/icon.png'
application: label='Hello' icon='res/drawable-mdpi/icon.png'
launchable-activity: name='com.example.hello.HelloActivity'  label='Hello' icon=''
uses-feature:'android.hardware.telephony'
uses-feature:'android.hardware.touchscreen'
main
supports-screens: 'small' 'normal' 'large' 'xlarge'
supports-any-density: 'true'
locales: '--_--'
densities: '120' '160' '240'

 

 

عندما تقوم بفحص مخرجات أداة aapt، تأكد من أنك لا تملك قيماً متعارضة للشاشات المدعومه والشاشات المتوافقة..

وأنك لا تملك قيم “إستخدام-خاصية” غير مقصودة تمت إضافتها كنتيجة لأذوناتك المحدده في ملف الإيضاح.

في المثال أعلاه، لن يكون ملف APK مرئياً للعديد من الأجهزة.

لماذا؟ بإضافة الإذن المطلوبه، إرسال رسالة قصيرة SEND_SMS، تم إضافة متطلبات خاصية الإتصال الهاتفي android.hardware.telephony ضمنياً.

لأن واجهة برمجة التطبيقات 11 والتي هي نسخة أندرويد هوني كمب “خلية النحل” (إصدار أندرويد محسّن خصيصاً للأجهزة اللوحية)..

ولا توجد أجهزة بنسخة خلية النحل تحتوي على خاصية الإتصال الهاتفي، سيعمل قوقل بلي على تصفية ملف APK هذا في جميع الحالات..

إلى أن تأتي أجهزة مستقبلية و التي تكون أعلى في مستوى API وتمتلك خاصية الإتصال الهاتفي.

لحسن الحظ يمكن إصلاح هذا بسهولة عن طريق إضافة ما يلي إلى ملف إيضاحك:

<uses-feature android:name="android.hardware.telephony" android:required="false" />

 

كما تتم إضافة متطلب خاصية شاشة اللمس android.hardware.touchscreen ضمنياً. إذا أردت أن يكون ملف APK التابع لك..

مرئياً على أجهزة التلفاز التي لا تحتوي على شاشة لمس، فيجب عليك إضافة ما يلي إلى ملف إيضاحك:

<uses-feature android:name="android.hardware.touchscreen" android:required="false" />

 

 

حالما تكمل قائمة التحقق قبل الإطلاق، حمّل ملفاتك الـ APK إلى قوقل بلي. قد يستغرق الأمر بعض الوقت حتى يظهر التطبيق عند تصفح قوقل بلي..

ولكن عندما يظهر، يمكنك إجراء فحص أخير. يمكنك تنزيل التطبيق على أي أجهزة إختبار تملكها للتأكد من أن ملفات APK تستهدف الأجهزة المقصودة. تهانينا، لقد أنتهيت!

 


للإطلاع على المقال باللغة الإنجليزية أضغط هنا.

الإعلانات