تحديد الإصدارات هو عنصر مهم في ترقية التطبيقات وصيانتها الاستراتيجية. وتعود أهمية تحديد الإصدارات إلى الأسباب التالية:
- يجب أن تتوفّر للمستخدمين معلومات محدّدة عن إصدار التطبيق التطبيق على أجهزتهم وإصدارات الترقية المتاحة التثبيت.
- التطبيقات الأخرى، بما في ذلك التطبيقات الأخرى التي تنشرها مجموعة — تحتاج إلى الاستعلام عن إصدار التطبيق في النظام وتحديد التوافق وتحديد التبعيات.
- قد تحتاج أيضًا الخدمات التي تنشر تطبيقاتك إليها إلى الاستعلام عن إصدار التطبيق الخاص بك حتى يتمكنوا من عرض الإصدار المستخدمين. وقد تحتاج خدمة النشر أيضًا إلى التحقّق من إصدار التطبيق تحديد التوافق وإنشاء علاقات ترقية/الرجوع إلى إصدار سابق.
يستخدم نظام Android معلومات إصدار تطبيقك لحمايته. مقابل خفض مستوى العضوية. تشير رسالة الأشكال البيانية لا يستخدم النظام معلومات إصدار التطبيق لفرض قيود على ترقيات التطبيقات التابعة لجهات خارجية أو توافقها يجب أن يفرض تطبيقك أيًّا من قيود الإصدار وإخبار المستخدمين عنها.
يفرض نظام Android توافق إصدار النظام، على النحو الموضح
من خلال الإعداد minSdk
في ملفات الإصدار. هذا الإعداد
يسمح للتطبيق بتحديد الحد الأدنى لواجهة برمجة تطبيقات النظام التي تتوافق معها.
لمزيد من المعلومات حول متطلبات واجهة برمجة التطبيقات،
راجع تحديد متطلبات مستوى واجهة برمجة التطبيقات.
تختلف متطلبات تحديد الإصدارات بين المشروعات المختلفة. مع ذلك، يرى العديد من المطوّرين تحديد إصدارات دلالية كأساس جيد استراتيجية تحديد الإصدارات.
ضبط معلومات إصدار التطبيق
لتحديد معلومات إصدار تطبيقك، عليك ضبط قيم الإصدار. الإعدادات في ملفات إصدار Gradle:
Groovy
android { namespace 'com.example.testapp' compileSdk 33 defaultConfig { applicationId "com.example.testapp" minSdk 24 targetSdk 33 versionCode 1 versionName "1.0" ... } ... } ...
Kotlin
android { namespace = "com.example.testapp" compileSdk = 33 defaultConfig { applicationId = "com.example.testapp" minSdk = 24 targetSdk = 33 versionCode = 1 versionName = "1.0" ... } ... } ...
إعدادات الإصدار
حدِّد قيمًا لكلّ من إعدادَي الإصدار المتوفّرَين: versionCode
و
versionName
versionCode
- عدد صحيح موجب مستخدَم كرقم إصدار داخلي.
يساعد هذا الرقم في تحديد ما إذا كان أحد الإصدارات أحدث.
مقارنةً بغيرها، حيث تشير الأرقام الأعلى إلى الإصدارات الأحدث. هذا هو
وليس رقم الإصدار المعروض للمستخدمين؛ يتم تعيين هذا الرقم على
الإعداد:
versionName
ويستخدم نظام Android قيمةversionCode
للحماية من الرجوع إلى إصدار سابق من خلال منع من المستخدمين من تثبيت حزمة APK بحجمversionCode
أقل من الإصدار المثبّت حاليًا على أجهزتهم.القيمة هي عدد صحيح موجب حتى تتمكّن التطبيقات الأخرى من تقييمها آليًا. — للتحقق من علاقة الترقية أو الرجوع إلى إصدار سابق مثلاً. يمكنك اضبط القيمة على أي عدد صحيح موجب. ومع ذلك، تأكد من كل إصدار متعاقب من تطبيقك يستخدم قيمة أكبر.
ملاحظة: أعلى قيمة يتيحها Google Play قيمة
versionCode
هي 2100000000.لا يمكنك تحميل حزمة APK إلى "متجر Play" باستخدام
versionCode
لديك. مستخدم بالفعل لإصدار سابق.ملاحظة: في بعض الحالات، قد تحتاج إلى يجب تحميل إصدار من تطبيقك يتضمّن
versionCode
أقل من أعلى إصدار. النسخة الحديثة. على سبيل المثال، إذا كنت تنشر حِزم APK متعددة، قد يكون لديك نطاقاتversionCode
المُعدّة مسبقًا لحِزم APK معيّنة. لمزيد من المعلومات حول تعيينversionCode
قيمة لملفات APK متعددة، راجع تعيين رموز الإصدارات.عادةً ما تطرح الإصدار الأول من تطبيقك يتم ضبط
versionCode
على 1، ثم زيادة القيمة بشكل رتيب مع كل إصدار، بغض النظر عما إذا كان الإصدار يمثل مشروعًا إصدار ثانوي. هذا يعني أن قيمةversionCode
لا تشبه بالضرورة إصدار إصدار التطبيق الذي مرئية للمستخدم. يجب ألّا تعرض التطبيقات وخدمات النشر هذا الإصدار. قيمة للمستخدمين. versionName
سلسلة تُستخدم كرقم الإصدار المعروض المستخدمين. يمكن تحديد هذا الإعداد كسلسلة أولية أو كمرجع مورد السلسلة.
القيمة هي سلسلة بحيث يمكنك وصف إصدار التطبيق <major>.<minor>.<point> سلسلة أو أي نوع آخر من بمعرف الإصدار المطلق أو النسبي.
versionName
هي القيمة الوحيدة عرضها للمستخدمين.
تحديد قيم الإصدار
يمكنك تحديد القيم التلقائية لهذه الإعدادات من خلال تضمينها في
كتلة "defaultConfig {}
" مدمجة في android {}
من الملف build.gradle
أو build.gradle.kts
في الوحدة. يمكنك
ثم إلغاء هذه القيم التلقائية لإصدارات مختلفة من تطبيقك من خلال تحديد
الأساسية لأنواع التصميم الفردية أو نكهات المنتجات. يعرض الملف التالي ملف
إعدادات versionCode
وversionName
في
defaultConfig {}
وكذلك جزء productFlavors {}
.
وبعد ذلك، يتم دمج هذه القيم في ملف بيان تطبيقك أثناء عملية التصميم.
Groovy
android { ... defaultConfig { ... versionCode 2 versionName "1.1" } productFlavors { demo { ... versionName "1.1-demo" } full { ... } } }
Kotlin
android { ... defaultConfig { ... versionCode = 2 versionName = "1.1" } productFlavors { create("demo") { ... versionName = "1.1-demo" } create("full") { ... } } }
في كتلة defaultConfig {}
من هذا المثال، تشير
تشير قيمة versionCode
إلى أنّ حزمة APK الحالية تحتوي على
الإصدار الثاني من التطبيق، وتحدِّد سلسلة versionName
سيظهر للمستخدمين على شكل الإصدار 1.1. يحدد هذا الملف أيضًا نكهتين للمنتج،
"عرض توضيحي" و"كامل". منذ "العرض التوضيحي" تعرف نكهة المنتج versionName
على أنها
"1.1-demo" و"العرض التوضيحي" تستخدم الإصدار versionName
بدلاً من القيمة التلقائية.
فيلم "الكامل" لا تحدّد كتلة نكهة المنتج versionName
، لذا
تستخدم القيمة الافتراضية "1.1".
ملاحظة: إذا كان تطبيقك يحدِّد إصدار التطبيق مباشرةً من خلال
<manifest>
، أي قيم الإصدار في إصدار Gradle
ملف تجاوز الإعدادات في البيان. بالإضافة إلى ذلك، فإن تحديد هذه
المحددة في ملفات إصدار Gradle لك تحديد قيم مختلفة
وإصدارات مختلفة من تطبيقك. لمزيد من المرونة ولتجنب
يمكن استبداله بعد دمج البيان، يُرجى إزالة هذه
من العنصر <manifest>
وتحديد
إعدادات الإصدار في ملفات إصدار Gradle بدلاً من ذلك.
يوفّر إطار عمل Android واجهة برمجة تطبيقات تتيح لك طلب بيانات من النظام.
للحصول على معلومات حول إصدار تطبيقك للحصول على معلومات الإصدار،
استخدام
طريقة
PackageManager.getPackageInfo(java.lang.String, int)
.
تحديد متطلبات مستوى واجهة برمجة التطبيقات
إذا كان تطبيقك يتطلب إصدارًا معيّنًا من نظام التشغيل Android
يمكنك تحديد متطلبات الإصدار كإعدادات على مستوى واجهة برمجة التطبيقات
في ملف build.gradle
أو build.gradle.kts
الخاص بالتطبيق. أثناء عملية الإنشاء
سيتم دمج هذه الإعدادات في ملف البيان لتطبيقك. تحديد مستوى واجهة برمجة التطبيقات
متطلبات تضمن عدم إمكانية تثبيت تطبيقك إلا على الأجهزة ذات
تشغيل إصدار متوافق من نظام Android الأساسي.
ملاحظة: في حال تحديد متطلبات مستوى واجهة برمجة التطبيقات مباشرةً في
ملف بيان التطبيق، فإن الإعدادات المقابلة في ملفات الإصدار
تجاوز الإعدادات في ملف البيان. بالإضافة إلى ذلك، فإن تحديد هذه
المحددة في ملفات إصدار Gradle لك تحديد قيم مختلفة
وإصدارات مختلفة من تطبيقك. لمزيد من المرونة ولتجنب
يمكن استبداله بعد دمج البيان، يُرجى إزالة هذه
من العنصر <uses-sdk>
وتحديد واجهة برمجة التطبيقات
الجديدة في ملفات إصدار Gradle بدلاً من ذلك.
يتوفّر إعدادان على مستوى واجهة برمجة التطبيقات:
minSdk
— الحد الأدنى للإصدار لنظام Android الأساسي الذي سيتم تشغيل التطبيق عليه، محددة من خلال معرّف مستوى واجهة برمجة التطبيقات للنظام الأساسيtargetSdk
— مستوى واجهة برمجة التطبيقات التي تم تصميم التطبيق للعمل عليها. وفي بعض الحالات، يسمح هذا التطبيق لاستخدام عناصر أو سلوكيات بيان محددة في الهدف مستوى واجهة برمجة التطبيقات، بدلاً من الاقتصار على استخدام التطبيقات المحددة فقط للحد الأدنى من مستوى واجهة برمجة التطبيقات.
لتحديد متطلبات مستوى واجهة برمجة التطبيقات التلقائية في build.gradle
أو
build.gradle.kts
، يمكنك إضافة إعداد واحد أو أكثر من إعدادات مستوى واجهة برمجة التطبيقات إلى
كتلة defaultConfig{}
، مدمجة داخل مجموعة android {}
. يمكنك
أيضًا إلغاء هذه القيم الافتراضية لمختلف
مختلفة من تطبيقك عن طريق إضافة الإعدادات لتصميم أنواع أو نكهات منتجات.
يحدد الملف التالي خيارات
إعدادات minSdk
وtargetSdk
في
حظر "defaultConfig {}
" وإلغاء "minSdk
"
لنكهة منتج واحدة:
Groovy
android { ... defaultConfig { ... minSdk 21 targetSdk 33 } productFlavors { main { ... } afterNougat { ... minSdk 24 } } }
Kotlin
android { ... defaultConfig { ... minSdk = 21 targetSdk = 33 } productFlavors { create("main") { ... } create("afterNougat") { ... minSdk = 24 } } }
عند الاستعداد لتثبيت تطبيقك، يتحقق النظام من قيمة
هذه الإعدادات وتقارنها بإصدار النظام. إذا كانت
minSdk
أكبر من إصدار النظام،
نظام منع تثبيت التطبيق.
إذا لم تحدِّد هذه الإعدادات، سيفترض النظام أنّ تطبيقك
متوافقة مع جميع إصدارات الأنظمة الأساسية. يعادل ذلك ضبط minSdk
على
1
لمزيد من المعلومات، يُرجى الاطّلاع على مقالة ما هو مستوى واجهة برمجة التطبيقات؟. للاطّلاع على إعدادات إصدار Gradle، يُرجى الاطّلاع على ضبط صيغ الإصدار.