لماذا لا أزال أرى تحذير API المستوى 34؟
في تطوير Flutter، يعد استهداف أحدث مستوى لواجهة برمجة تطبيقات Android أمرًا بالغ الأهمية لضمان توافق التطبيق مع الميزات الجديدة وترقيات الأمان. في الآونة الأخيرة، بعد تغيير targetSdkVersion إلى مستوى واجهة برمجة التطبيقات (API) 34 (Android 14)، أبلغ المطورون أن Play Console لا يزال يحذر من أن التطبيق يجب أن يستهدف Android 14 أو أعلى، على الرغم من نجاح البناء.
قد يتسبب هذا التباين في حدوث ارتباك، خاصة عندما لا تزال حزم التطبيقات السابقة قيد التشغيل على وحدة التحكم. يعد فهم كيفية تأثير الإصدارات السابقة على التحميل الحالي ومعالجة هذا التحذير أمرًا بالغ الأهمية لإصدار تطبيق Flutter بشكل فعال.
يأمر | وصف |
---|---|
compileSdkVersion | يحدد مستوى API المستخدم لتجميع التطبيق. وفي هذه الحالة، تم ضبطه على 34، والذي يستهدف Android 14. |
targetSdkVersion | يحدد مستوى Android API الذي سيتم تشغيل التطبيق عليه. التحديث إلى 34 يضمن التوافق مع Android 14. |
google.auth.default() | يسترد بيانات الاعتماد الافتراضية للوصول إلى Google APIs، والتي تُستخدم عادةً مع الخدمات السحابية. |
build('androidpublisher', 'v3') | تهيئة واجهة برمجة تطبيقات Google Play Developer بحيث يمكن إدارة حزم التطبيقات وإصداراتها برمجيًا. |
service.edits().insert() | يفتح جلسة تعديل جديدة على Google Play Console، وهي جلسة مطلوبة لإجراء تغييرات على البيانات الوصفية للتطبيق أو حزمه. |
bundles = service.edits().bundles().list() | يسرد جميع حزم التطبيقات المرتبطة بإصدار تطبيق محدد. يسمح هذا للبرنامج النصي بتحديد ما إذا كانت الإصدارات الأقدم لا تزال نشطة. |
service.edits().bundles().delete() | إزالة حزمة نشطة من Google Play Console. يعد هذا مفيدًا للتخلص من الإصدارات القديمة أو المتضاربة. |
service.edits().commit() | إجراء التغييرات التي تم إجراؤها أثناء جلسة التحرير، بما في ذلك جميع التغييرات التي تم إجراؤها على تكوين التطبيق وحزمه. |
فهم الحل لاستهداف مستوى واجهة برمجة التطبيقات في Flutter
يقوم البرنامج النصي الأول بتعديل إعداد Android لمشروع Flutter للتأكد من أن التطبيق يستهدف مستوى واجهة برمجة التطبيقات (API) 34 بشكل صحيح. الأوامر الحاسمة هي compileSdkVersion وtargetSdkVersion، والتي تحدد إصدارات Android SDK المستخدمة أثناء التجميع والنشر. يضمن ضبط compileSdkVersion على 34 أن البرنامج مصمم باستخدام Android 14، بينما يحدد targetSdkVersion إصدار Android المقصود لتشغيل التطبيق عليه. تعمل هذه التعديلات على تحديث إعدادات المشروع لتلبية أحدث معايير التقديم في متجر Google Play، وإزالة التحذير المتعلق بمستويات واجهة برمجة التطبيقات غير المدعومة.
يتصل البرنامج النصي الثاني بـ Google Play Console API عبر Python. يقوم بأتمتة عملية اكتشاف وإزالة حزم البرامج القديمة التي قد تسبب مشكلات. google.auth.default() يُرجع بيانات الاعتماد الافتراضية للوصول إلى Play Store API، في حين يقوم build('androidpublisher', 'v3') بتهيئة Google Play Developer API. يستخدم البرنامج النصي بعد ذلك service.edits().bundles().list() للحصول على حزم التطبيقات النشطة، وإذا تم اكتشاف إصدار قديم، service.edits().bundles().delete() يحذفه. أخيرًا، يقوم الأمر service.edits().commit() بحفظ جميع التغييرات وتطبيقها، مما يضمن خلو التطبيق من أي حزم قديمة قد تتسبب في ظهور رسالة الخطأ.
الحل: تأكد من تحديث مستوى SDK المستهدف المناسب لتطبيقات Flutter.
تحديث بيان Flutter (Dart) لنظام Android
android {
compileSdkVersion 34
defaultConfig {
applicationId "com.example.myapp"
minSdkVersion 21
targetSdkVersion 34
versionCode 1
versionName "1.0"
}
}
البرنامج النصي للواجهة الخلفية: التحقق من إصدار الحزمة وإلغاء تنشيط الحزمة القديمة
Google Play Console API (Python) لإدارة حزم التطبيقات النشطة
import google.auth
from googleapiclient.discovery import build
credentials, project = google.auth.default()
service = build('androidpublisher', 'v3', credentials=credentials)
package_name = 'com.example.myapp'
edit_id = service.edits().insert(body={}, packageName=package_name).execute()['id']
bundles = service.edits().bundles().list(packageName=package_name, editId=edit_id).execute()
for bundle in bundles['bundles']:
if bundle['versionCode'] == 1: # First build still active
service.edits().bundles().delete(packageName=package_name, editId=edit_id,
bundleId=bundle['id']).execute()
service.edits().commit(packageName=package_name, editId=edit_id).execute()
حل الحزم المتضاربة في تحديثات تطبيق Flutter.
إحدى المشكلات الشائعة عند تحديث targetSdkVersion لتطبيق Flutter هي وجود حزم التطبيقات القديمة التي لا تزال تظهر على أنها نشطة في Google Play Console. حتى إذا كانت هذه الحزم قديمة، فيمكنها منع التعرف على أحدث إصدار بشكل صحيح، مما يؤدي إلى ظهور تحذيرات مثل "يجب أن يستهدف التطبيق Android 14 (مستوى واجهة برمجة التطبيقات 34) أو أعلى". أثناء تغيير targetSdkVersion إلى 34، يجب على المطورين أيضًا التأكد من أن الإصدارات السابقة لا تعطل عملية التحديث. يمكن أن تساعد إدارة إصدارات التطبيق، وخاصة إزالة الحزم القديمة، في حل هذه المشكلة.
بالإضافة إلى تحديد مستوى واجهة برمجة التطبيقات المستهدف بشكل مناسب في ملف build.gradle، يجب مراجعة الإصدارات النشطة بشكل منتظم في Google Play Console. يجب على المطورين استخدام أدوات مثل Google Play Developer API أو تعطيل الحزم القديمة يدويًا. وهذا يضمن أن متجر Play يعكس بدقة أحدث تكوين للإصدار. نظرًا لأن Google Play يتطلب من التطبيقات اتباع معايير صارمة لإصدار التحديثات، فإن التحكم في كل من التعليمات البرمجية والحزم داخل Play Console يضمن انتقالًا سلسًا ويقلل من احتمالية مواجهة تحذيرات على مستوى واجهة برمجة التطبيقات التي لم يتم حلها.
أسئلة شائعة حول استهداف Android 14 API Level 34 باستخدام Flutter.
- لماذا يستمر تحذير مستوى واجهة برمجة التطبيقات (API) على الرغم من تحديث targetSdkVersion؟
- قد يحدث هذا إذا كانت Play Console لا تزال تحتوي على حزم تطبيقات سابقة تم تصنيفها على أنها نشطة، مما يؤدي إلى حدوث تعارضات.
- كيف يمكنني تعطيل الحزم القديمة في Google Play Console؟
- استخدم Google Play Developer API لإلغاء تنشيط الإصدارات الأقدم، أو قم بذلك يدويًا باستخدام واجهة Play Console.
- ما هي وظيفة targetSdkVersion في Flutter؟
- فهو يحدد مستوى واجهة برمجة التطبيقات (API) الذي سيعمل عليه برنامجك، مما يضمن التوافق مع ميزات Android الأحدث.
- ما الفرق بين compileSdkVersion وtargetSdkVersion؟
- يحدد compileSdkVersion إصدار SDK المستخدم أثناء التجميع، بينما يحدد targetSdkVersion الإصدار الذي سيستهدفه برنامجك في وقت التشغيل.
- كيف يمكنني عرض الحزم النشطة حاليًا في Play Console؟
- يمكنك إدراجها باستخدام service.edits().bundles().list() أو عرضها مباشرة في Play Console.
الوجبات الرئيسية لحل مشكلات استهداف واجهة برمجة التطبيقات.
يعد التأكد من أن تطبيق Flutter يستهدف مستوى واجهة برمجة التطبيقات (API) المناسب أمرًا بالغ الأهمية للامتثال لمتجر Play. يجب أن يتبع تحديث targetSdkVersion إلى 34 تقييمًا شاملاً لحزم التطبيقات النشطة في Play Console. قد تمنع الإصدارات الأقدم والمتضاربة التعرف على الإصدار الأحدث بشكل صحيح. باستخدام تقنيات مثل Google Play Developer API، يمكن للمطورين إلغاء تنشيط الحزم القديمة، وإصلاح مشكلة شائعة وضمان التوزيع السريع للتطبيقات دون تحذيرات.