ملفات APK لشاشات مختلفة

الإعلانات

إنشاء ملفات APK متعددة لأحجام مختلفة من الشاشة 

 

 

 

ملفات APK لشاشات مختلفة

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

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

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

 

 

 

 

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


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

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

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

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

يجب عليك أيضاً قراءة الدليل دعم العديد من الشاشات..

وهناك أيضاً مكتبة دعم يمكنك تنزيلها بإستخدام أندرويد SDK، والتي تتيح لك إستخدام أجزاء على أجهزة ما قبل النسخة..

هوني كمب Honeycomb (مما يجعل دعم الشاشات المتعددة في ملف APK واحد أسهل بكثير).

 

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

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

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

 

 

 

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


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

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

ابدأ بإستخدام صف من الخلايا يمثل مختلف أحجام الشاشات المتوفرة على نظام الأندرويد الأساسي.

 

الآن فقط لون في الرسم البياني بحيث يمثل كل لون ملف APK. في ما يلي مثال على كيفية تطبيق كل ملف APK على نطاق معين من أحجام الشاشات.

بناءً على إحتياجاتك، يمكنك أيضاً الحصول على ملفي 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 سيبدو كما يلي:

ومع ذلك، بإستخدام القاعدة “أعلى رقم إصدار يفوز”، إذا قمنا بتعيين سمة رمز الإصدار versionCode في كل ملف من ملفات APK هكذا..

الأحمر أكبر أو يساوي الأخضر أكبر أو يساوي الأزرق، لذلك يمكننا أن نطوي المخطط بشكل فعال ليبدو هكذا:

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

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

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

لتنفيذ أشياء رائعه مع تلك الكاميرا الأمامية. ولكن، كما تبين، ليست كل الأجهزة التي تدعم الحجم الأكبر تحتوي على كاميرات أمامية! أمر فظيع!

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

ويرى أن الملف الأحمر يدرج الكاميرا الأمامية كمتطلب، ويتجاهله بهدوء..

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

عندئذ سيرى أن الملف الأخضر ليس متوافق فحسب مع الأجهزة ذات الحجم الأكبر، ولكن أيضاً لا يهتم ما إذا كانت هناك كاميرا أمامية أم لا!

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

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

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

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

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

قد يبدو هذا كالتالي:

الأزرق: 1001 ، 1002 ، 1003 ، 1004 …
الأخضر: 2001 و 2002 و 2003 و 2004 …
الأحمر: 3001 و 3002 و 3003 و 3004 …

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

الأزرق

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    android:versionCode="1001" android:versionName="1.0" package="com.example.foo">
    <supports-screens android:smallScreens="true"
        android:normalScreens="true"
        android:largeScreens="true"
        android:xlargeScreens="true" />
    ...

الأخضر

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    android:versionCode="2001" android:versionName="1.0" package="com.example.foo">
    <supports-screens android:smallScreens="false"
        android:normalScreens="false"
        android:largeScreens="true"
        android:xlargeScreens="true" />
    ...

الأحمر

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    android:versionCode="3001" android:versionName="1.0" package="com.example.foo">
    <supports-screens android:smallScreens="false"
        android:normalScreens="false"
        android:largeScreens="false"
        android:xlargeScreens="true" />
    ...

 

لاحظ أنه من الناحية التقنيه، ستعمل ملفات APK المتعدده مع وسم الشاشات المدعومه، أو وسم الشاشات المتوافقة.

بشكلٍ عام يُفضل إستخدام وسم الشاشات المدعومه، وعادةً ما تكون فكرة سيئة إستخدام كلا الوسمين في نفس ملف الإيضاح.

مما يجعل الأمور معقدة بدون داعٍ، ويزيد من فرصة حدوث الأخطاء. لاحظ أيضاً أنه..

بدلاً من الإستفادة من القيم الإفتراضية (الصغيرة والعادية تأخذان دائماً القيمة “صحيح” إفتراضياً)..

تقوم ملفات الإيضاح بتعيين القيم لكل حجم شاشة بشكلٍ صريح. يمكن لهذا أن يحميك من وجع الرأس مستقبلاً.

مثال، ملف الإيضاح الذي يحتوي على SDK المستهدف بنسخة أقل من <9 سيظهر على الشاشات الأكبر، معين تلقائياً إلى القيمة “خطأ”.. وبما أن هذا الحجم ليس موجوداً إلى الآن. كن واضحاً!

 

 

 

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


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

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

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

و كل حجم شاشة تريد تجنبه، يتم تعيينه على القيمة “خطأ”.

  • تحقق مرة أخرى من مرشحات ملف إيضاحك فيما لو كانت هناك معلومات متضاربة (ملفات 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: 'xlarge'
supports-any-density: 'true'
locales: '--_--'
densities: '120' '160' '240'

 

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

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

 

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

 

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

لأن معظم الأجهزة ذات الشاشة الأكبر (إن لم تكن كلها) عبارة عن أجهزة لوحية لا تحتوي على خاصية الإتصال الهاتفي..

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

و التي يكون حجمها كبيراً بما يكفي للإبلاغ عنه كحجم شاشة أكبر، وتمتلك خاصية الإتصال الهاتفي.

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

<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 تستهدف الأجهزة المقصودة.

لمزيد من المعلومات حول نشر عدة ملفات APK على قوقل بلي، اقرأ دعم ملفات APK المتعددة.

 


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

الإعلانات

اترك رد