APK ملفات بعدة أبعاد

الإعلانات

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

 

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

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

حيث يدعم كل منها فئة مختلفة من حجم الشاشة.

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

 

 

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


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

تريد الإستفادة من مساحة الشاشات الكبيرة، ومع ذلك العمل بشكلٍ جيد على الشاشات الصغيرة..

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

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

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

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

 

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

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

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

في المصادر المرتبطه، وحددت أن ملفات APK المتعددة هي المسار الصحيح لتطبيقك.

 

 

 

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


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

لحسن الحظ، من السهل التخطيط لمتطلباتك بسرعة وسهولة مما يسهل عملية الإشارة إليهم في وقتٍ لاحق.

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

قم بإنشاء جدول بصف وعمود لكل زوجٍ من القيم الممكنة، ولون بعض “الأقسام”، كل لون يمثل ملف APK واحد.

 

3 4 5 6 7 8 9 10 11 12 +
صغير
عادي
كبير
أكبر

 

المثال أعلاه هو مثال مع أربعة ملفات APK. الملف الأزرق لجميع الأجهزة ذات الشاشات الصغيرة / العادية..

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

يعتبر الملف البنفسجي حالة خاصة، لأنها تناسب جميع أحجام الشاشات، ولكنها مخصصة فقط لواجهة برمجة التطبيقات المستوى 11 وما فوق.

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

للإقلاع، لديك أيضاً أسماء أكواد فاخرة لكل ملف، بما أن قول “هل أختبرنا الملف الأحمر على الـ…؟”..

أسهل كثيراً من سؤال رفاقك “هل أختبرنا الملف الذي يدعم واجهة برمجة التطبيقات من المستوى 3 إلى المستوى 10 من حجم الشاشات الأكبر مقابل الـ Xoom؟”..

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

 

 

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


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

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

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

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

 

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

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

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

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

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

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

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

 

 

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


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

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

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

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

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

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

وأي إجراءات تهيئة أخرى لا تتغير كثيراً من ملف APK إلى آخر.

 

 

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


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

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

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

الأكبر من حجم الشاشة “المستهدفه”. لنلق نظرة على نموذج المخطط السابق:

3 4 5 6 7 8 9 10 11 12 +
صغير
عادي
كبير
أكبر

 

لأنه لا بأس من تغطية التداخل، يمكننا وصف المنطقة التي تغطيها كل حزمة APK على النحو التالي:

  • الملف الأزرق يغطي جميع الشاشات، و النسخة minSDK 3.
  • الملف الأخضر يغطي الشاشات الكبيرة والأعلى منها، والنسخة minSDK 3.
  • الملف الأحمر يغطي الشاشات الأكبر (الأجهزة اللوحية عموماً) و النسخة minSDK 9.
  • الملف البنفسجي يغطي جميع الشاشات، والنسخة minSDK 11.

 

لاحظ أنه يوجد الكثير من التداخل في هذه القواعد. مثال، يمكن لجهاز بالشاشة ذات الحجم الأكبر..

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

ومع ذلك، بإستخدام قاعدة “أعلى رقم إصدار يفوز”، يمكننا تعيين الترتيب حسب الأفضلية كما يلي:

 

البنفسجي أكبر أو يساوي الأحمر أكبر أو يساوي الأخضر أكبر أو يساوي الأزرق

لماذا تسمح بكل التداخلات؟ لنتظاهر بأن ملف APK البنفسجي يحتوي على بعض المتطلبات التي لا يتطلبها الملفان الآخران.

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

مثال، لنفترض أن الملف البنفسجي يتطلب كاميرا أمامية.

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

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

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

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

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

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

ولكن أيضاً لا يهتم ما إذا كانت هناك كاميرا أمامية أم لا!

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

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

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

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

من المفيد قراءة القسم بالكامل..

ولكن البنية الأساسية هي لهذه المجموعة من ملفات APK، سنستخدم رقمين لتمثيل نسخة minSDK..

ورقمين لتمثيل الحد الأدنى / الحد الأقصى من حجم الشاشة، و 3 أرقام لتمثيل رقم البنية.

وهكذا، عندما تتم ترقية الجهاز إلى إصدار جديد من الأندرويد..

(مثال، من المستوى 10 إلى المستوى 11)، فإن أي ملفات APK أصبحت الآن مؤهلة ومفضلة على ملف APK المثبت حالياً سيعتبرها الجهاز كـ “ترقية”.

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

الأزرق: 0304001 ، 0304002 ، 0304003 …
الأخضر: 0334001 ، 0334002 ، 0334003
الأحمر: 0344001 ، 0344002 ، 0344003 …
البنفسجي: 1104001 ، 1104002 ، 1104003 …

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

الأزرق

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    android:versionCode="0304001" android:versionName="1.0" package="com.example.foo">
    <uses-sdk android:minSdkVersion="3" />
    <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="0334001" android:versionName="1.0" package="com.example.foo">
    <uses-sdk android:minSdkVersion="3" />
    <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="0344001" android:versionName="1.0" package="com.example.foo">
    <uses-sdk android:minSdkVersion="3" />
    <supports-screens android:smallScreens="false"
        android:normalScreens="false"
        android:largeScreens="false"
        android:xlargeScreens="true" />
    ...

البنفسجي

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

 

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

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

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

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

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

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

 

 

 

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


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

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

  • يجب أن تحتوي جميع ملفات الـAPK على اسم الحزمة نفسه.
  • يجب توقيع جميع ملفات الـAPK بالشهادة نفسها.
  • في حالة تداخل ملفات الـAPK في إصدار النظام الأساسي، يجب أن يحتوي الملف ذي النسخة الأعلى من minSdkVersion على رمز إصدار أعلى.
  • كل حجم شاشة تريد من ملفك الـ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 تستهدف الأجهزة المقصودة. تهانينا ، لقد انتهيت!

 


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

الإعلانات

اترك رد