Google Play Services هي طبقة من خدمات Google النظامية على أندرويد التي تشغل جميع تطبيقات وواجهات برمجة تطبيقات Google: من Google Maps إلى Firebase وGoogle Sign-In. تعمل Play Services كحزمة APK منفصلة يتم تحديثها تلقائياً عبر Google Play Store، بشكل مستقل عن تحديثات البرامج الثابتة لأندرويد. وفقاً لـ Android Developers، 2025، فإن Google Play Services مثبتة على 99.8% من جميع أجهزة أندرويد النشطة وتتضمن أكثر من 50 وحدة منفصلة.
النقاط الرئيسية
Google Play Services هي طبقة خاصة من خدمات Google تعمل فوق نظام التشغيل أندرويد. على عكس AOSP (مشروع أندرويد مفتوح المصدر)، الذي يتضمن فقط المكتبات الأساسية، توفر Play Services واجهات برمجة تطبيقات للتكامل مع نظام Google البيئي: الخرائط، تحديد المواقع، المصادقة، الإشعارات الفورية، الإعلانات والمدفوعات. يتم تثبيت Play Services كتطبيق نظام بصلاحيات مرتفعة ولها وصول إلى واجهات برمجة تطبيقات غير متاحة للتطبيقات العادية.
الفرق الرئيسي بين Google Play Services ومكتبات أندرويد القياسية هو القدرة على التحديث عبر Play Store. عندما تصدر Google إصداراً جديداً من Maps SDK أو Auth API، يتلقى المستخدم التحديث عبر Play Services دون انتظار تحديث OTA للبرامج الثابتة من الشركة المصنعة. هذا يحل مشكلة تجزئة أندرويد — وفقاً لـ Statista (2025)، حوالي 40% من أجهزة أندرويد تعمل بإصدارات نظام تشغيل أقدم من 3 سنوات، لكن Play Services محدثة إلى أحدث إصدار على 85% من الأجهزة.
Google Play Services ليست جزءاً من مشروع أندرويد مفتوح المصدر وغير متاحة على الأجهزة بدون ترخيص Google (مثل Huawei بعد 2019). للتطبيقات التي تعمل على أجهزة بدون GMS، توصي Google باستخدام Firebase SDK مع دعم المنصات المتعددة أو الانتقال إلى حلول بديلة (Huawei Mobile Services).
هيكل Google Play Services مبني كمجموعة من الوحدات المستقلة (حزم APK)، كل منها مسؤول عن وظيفته الخاصة. يحتوي APK الرئيسي (com.google.android.gms) على الخدمات الأساسية وحوالي 50 وحدة إضافية يتم تحميلها عند الطلب. تسمى عملية المستخدم Google Play Services process وتعمل في الخلفية بأولوية مرتفعة.
كل وحدة من Google Play Services لها إصدارها وAPI الخاص بها. يربط المطور فقط الوحدات الضرورية عبر build.gradle، مما يقلل حجم التطبيق. على سبيل المثال، يتطلب Google Sign-In com.google.android.gms:play-services-auth، ويتطلب Google Maps play-services-maps. تحل Google Play Services تلقائياً التبعيات بين الوحدات وتحميل المكونات المفقودة.
| المكون | حزمة Gradle | الوظيفة |
|---|---|---|
| Auth | play-services-auth | Google Sign-In، Credential Manager، ID Token |
| Maps | play-services-maps | عرض خرائط Google Maps SDK، الكاميرا |
| Location | play-services-location | FusedLocationProvider، الأسوار الجغرافية، التعرف على النشاط |
| Ads | play-services-ads | Google Mobile Ads، AdMob، Ad Manager |
| Wallet | play-services-wallet | Google Pay، Passes، API المدفوعات |
| SafetyNet | play-services-safetynet | التحقق من الجهاز، reCAPTCHA، التوثيق |
التفاعل بين التطبيق وPlay Services يحدث عبر AIDL (لغة تعريف واجهة أندرويد). يستدعي التطبيق طرق SDK، ويرسل SDK طلبات IPC إلى عملية Google Play Services، التي تقوم بالعمل الفعلي (طلبات الشبكة لخوادم Google، العمل مع GPS، التشفير). عملية Play Services معزولة عن التطبيق — إذا تعطلت، يستمر التطبيق في العمل.
Google Play Services يتم تحديثها تلقائياً عبر Google Play Store — يتلقى المستخدم الإصدار الجديد في الخلفية دون الحاجة إلى تأكيد. يتم طرح التحديثات على مراحل (staged rollout): أولاً على 1% من الأجهزة، ثم على 10%، 50% و100%. إذا تم اكتشاف خطأ خطير في الإصدار الجديد، يمكن لـ Google التراجع عن التحديث إلى إصدار مستقر خلال 24 ساعة.
إصدار Google Play Services يُرمز برقمين: إصدار APK (مثال: 25.15.32) وإصدار SDK (مثال: 12.8.0). يجب على المطور التحقق من إصدار Play Services على الجهاز عبر GoogleApiAvailability — إذا قام المستخدم بتعطيل التحديث التلقائي أو استخدم ROM مخصص، فقد يكون الإصدار قديماً. وفقاً لـ Google، متوسط إصدار Play Services على الأجهزة النشطة لا يتجاوز 6 أشهر.
// التحقق من إصدار Google Play Services على الجهاز
val availability = GoogleApiAvailability.getInstance()
val resultCode = availability.isGooglePlayServicesAvailable(context)
when (resultCode) {
ConnectionResult.SUCCESS ->
Log.d("GMS", "Google Play Services متاحة")
ConnectionResult.SERVICE_MISSING,
ConnectionResult.SERVICE_VERSION_UPDATE_REQUIRED -> {
// إظهار مربع حوار التحديث
availability.showErrorDialogFragment(
activity, resultCode, REQUEST_CODE
)
}
}مشاكل الإصدارات: إذا تم تعطيل Google Play Services (قام المستخدم بتعطيلها يدوياً في الإعدادات)، تتوقف جميع واجهات برمجة تطبيقات Google عن العمل. يجب على التطبيق التحقق من توفر Play Services قبل كل استدعاء لواجهة Google API وإظهار رسالة واضحة للمستخدم مع زر للانتقال إلى الإعدادات أو تنزيل Play Services. توفر Google مربع حوار خطأ عبر showErrorDialogFragment، والذي يؤدي تلقائياً إلى Play Store.
Google Play Services Auth هي وحدة مصادقة توفر Google Sign-In وCredential Manager وSmart Lock لكلمات المرور. منذ 2024، توصي Google باستخدام Credential Manager كـ API موحد لجميع أنواع المصادقة. Google Play Services Maps توفر عرض خرائط Google، الترميز الجغرافي، Places API والتوجيه. Location توفر Fused Location Provider، الذي يجمع بين GPS وWi-Fi والبيانات الخلوية لتحديد موقع دقيق مع استهلاك طاقة ضئيل.
وحدة Google Play Services Wallet تدعم Google Pay للمدفوعات في التطبيقات ومواقع الويب، بالإضافة إلى Google Passes (بطاقات الولاء، بطاقات الصعود، التذاكر). SafetyNet (يُستبدل بـ Play Integrity API) — التحقق من سلامة الجهاز: وصول الجذر، ROM مخصص، المحاكي. Play Integrity API (موصى به منذ 2024) يوفر تحققاً أكثر دقة: سلامة الجهاز، سلامة التطبيق (التوقيع)، سلامة الحساب (حساب Google).
// طلب الموقع عبر FusedLocationProvider
val fusedClient = LocationServices.getFusedLocationProviderClient(context)
val locationRequest = LocationRequest.Builder()
.setPriority(Priority.PRIORITY_HIGH_ACCURACY)
.setInterval(10000)
.setFastestInterval(5000)
.build()
if (ActivityCompat.checkSelfPermission(
context, Manifest.permission.ACCESS_FINE_LOCATION
) == PackageManager.PERMISSION_GRANTED) {
fusedClient.requestLocationUpdates(
locationRequest,
locationCallback,
Looper.getMainLooper()
)
}وحدة Google Play Services Awareness هي API مدمجة تجمع بين بيانات الموقع والوقت والطقس ونشاط المستخدم وسماعات الرأس المتصلة. تسمح Awareness API للتطبيق بالتفاعل مع السياق: على سبيل المثال، تفعيل الوضع الصامت عندما يكون المستخدم في العمل، أو عرض إشعار بالمطر قبل الخروج. API متاحة منذ Play Services 16.0.0.
دمج Google Play Services في مشروع أندرويد يتم بإضافة التبعيات في build.gradle على مستوى التطبيق. توصي Google باستخدام تبعيات وحدات فردية بدلاً من الحزمة العامة play-services-all لتقليل حجم APK. الحد الأدنى لإصدار SDK لـ Play Services هو 21.0.0 (المقابل لـ Android 14)، لكن معظم الوحدات تدعم API 19+.
يتطلب الدمج إعداد Google Services Gradle Plugin وملف google-services.json، الذي يتم تنزيله من Firebase Console. يحتوي ملف JSON على معرفات المشروع ومفاتيح API وClient ID لـ OAuth. بدون google-services.json، لا تستطيع معظم وحدات Play Services المصادقة على خوادم Google. إذا كان المشروع لا يستخدم Firebase، يكفي إضافة مفتاح API في AndroidManifest.xml.
// build.gradle (مستوى المشروع)
buildscript {
dependencies {
classpath "com.google.gms:google-services:4.4.2"
}
}
// build.gradle (مستوى التطبيق)
apply plugin: 'com.google.gms.google-services'
dependencies {
implementation "com.google.android.gms:play-services-auth:21.2.0"
implementation "com.google.android.gms:play-services-maps:19.0.0"
implementation "com.google.android.gms:play-services-location:21.3.0"
}فارق دقيق مهم: الوحدات المختلفة من Google Play Services قد تتطلب إصدارات مختلفة من بعضها البعض. إذا كانت إحدى الوحدات تتطلب play-services-basement إصدار 18.0.0 وأخرى تتطلب 18.1.0، فإن Gradle يحل التعارض لصالح الإصدار الأعلى. يُوصى باستخدام إصدار واحد لجميع الوحدات عبر متغير: ext.playServicesVersion = '21.2.0'. تعتمد Google Play Services أيضاً على إصدار compileSdk — الإصدار 21.0.0 يتطلب compileSdk 34+.
الأجهزة بدون Google Play Services (Huawei، Honor، بعض العلامات التجارية الصينية) لا يمكنها استخدام واجهات برمجة التطبيقات التي توفرها GMS. لمثل هذه الأجهزة، توصي Google باستخدام Firebase SDK، الذي يتضمن مكتبات متعددة المنصات تعمل بدون Play Services. يستخدم Firebase Authentication واجهة REST API مباشرةً، ويستخدم Firebase Realtime Database اتصالات WebSocket، ويستخدم Firebase Cloud Messaging بروتوكوله الخاص.
نهج بديل هو استخدام Huawei Mobile Services (HMS)، التي توفر واجهات برمجة تطبيقات مماثلة: Huawei Maps Kit وLocation Kit وPush Kit. لدعم كلا النوعين من الأجهزة، ينفذ المطورون طبقة تجريدية تكتشف توفر GMS أو HMS عند التشغيل وتوصيل SDK المناسب. وفقاً لـ Counterpoint Research (2025)، تشكل الأجهزة بدون GMS حوالي 5% من سوق أندرويد العالمي.
// التحقق من توفر GMS على الجهاز
fun isGmsAvailable(): Boolean {
return try {
GoogleApiAvailability.getInstance()
.isGooglePlayServicesAvailable(context) ==
ConnectionResult.SUCCESS
} catch (e: Exception) {
false
}
}
// طبقة تجريدية لـ GMS/HMS
interface PushService {
fun getToken(): String
}
class GmsPushService : PushService {
override fun getToken() =
FirebaseMessaging.getInstance().token.await()
}للتطبيقات التي تعمل على أجهزة بدون GMS، من الضروري اختبار جميع الوظائف التي تستخدم واجهات برمجة تطبيقات Google. ترجع Play Services خطأ SERVICE_MISSING إذا لم يتم العثور على الخدمة. يُوصى بالتدهور التدريجي: إذا كان Google Sign-In غير متاح، قدم تسجيل الدخول عبر البريد الإلكتروني؛ إذا كانت Google Maps غير متاحة، اعرض WebView مع Yandex.Maps أو OpenStreetMap. تنشر Huawei AppGallery حوالي 15% من جميع تطبيقات أندرويد في العالم.
مثال كامل للتحقق من توفر Google Play Services ومعالجة جميع الحالات الممكنة: الخدمة متاحة، التحديث مطلوب، الخدمة معطلة، الخدمة غير موجودة. يستخدم الكود GoogleApiAvailability للتحقق وshowErrorDialogFragment لعرض مربع حوار Google القياسي الذي يؤدي إلى Play Store.
class GmsCheckActivity : AppCompatActivity() {
companion object {
private const val REQ_UPDATE = 1001
}
fun checkGooglePlayServices() {
val api = GoogleApiAvailability.getInstance()
when (api.isGooglePlayServicesAvailable(this)) {
ConnectionResult.SUCCESS ->
initializeApp()
ConnectionResult.SERVICE_DISABLED ->
showSettingsDialog()
ConnectionResult.SERVICE_VERSION_UPDATE_REQUIRED ->
api.showErrorDialogFragment(
this, ConnectionResult.SERVICE_VERSION_UPDATE_REQUIRED,
REQ_UPDATE
)
}
}
override fun onActivityResult(request: Int,
result: Int, data: Intent?) {
super.onActivityResult(request, result, data)
if (request == REQ_UPDATE && result == RESULT_OK)
initializeApp()
}
}يُوصى بالتحقق من توفر Google Play Services عند كل تشغيل للتطبيق، وليس فقط في المرة الأولى. قد يقوم المستخدم بتعطيل Play Services في الإعدادات بعد تثبيت التطبيق، مما سيعطل جميع واجهات برمجة تطبيقات Google. للوظائف الحرجة (مثل المدفوعات عبر Google Pay)، يجب أن يكون التحقق إلزامياً — بدون Play Services، لا يمكن للتطبيق معالجة المدفوعات.
Play Core هي مكتبة من Google Play Services لإدارة وحدات التطبيق والتحديثات في وقت التشغيل وتنزيل الموارد الإضافية. يتيح Play Core التسليم الديناميكي (Dynamic Delivery) — تسليم وحدات التطبيق عند الطلب: يقوم المستخدم بتنزيل التطبيق الأساسي، ويتم تنزيل الميزات الإضافية (مثل وحدة الإدارة أو المحتوى المميز) فقط عندما يفتح المستخدم الشاشة المقابلة لأول مرة.
التوزيع المعياري عبر Google Play Services Play Core يقلل حجم التثبيت الأولي للتطبيق بنسبة 30-50%. هذا مهم بشكل خاص للأسواق ذات الإنترنت البطيء — وفقاً لـ Google Play Console، كل 10 MB تقلل من تحويل التثبيت بنسبة 1%. يتطلب Play Core SDK Android 5.0 (API 21) وGoogle Play Services 21.0.0+. مهم: بمجرد تنزيل الوحدة، لا يمكن حذفها، فقط تحديثها مع تحديث كامل للتطبيق.
// تحميل الوحدة عند الطلب عبر Play Core
val manager = SplitInstallManagerFactory.create(context)
val request = SplitInstallRequest
.Builder()
.addModule("premium")
.build()
manager.startInstall(request)
.addOnSuccessListener {
Log.d("Split", "تم تحميل الوحدة المميزة")
}الانتقال إلى Play Core يتطلب تغيير هيكل التطبيق: يتم تقسيم الوظائف إلى وحدات عند الطلب في Android Studio، ويقوم Gradle ببناء كل وحدة كـ APK منفصل. يقوم Google Play Store بعد ذلك بتجميع APK Set (Android App Bundle) وتسليم APK الأساسي فقط للمستخدم. يدعم Play Core أيضاً التحديثات داخل التطبيق (in-app updates) — يمكن للمستخدم تحديث التطبيق من الداخل دون الذهاب إلى Play Store. بحلول 2026، حوالي 70% من التطبيقات على Google Play تستخدم Android App Bundle وPlay Core.
الأسئلة الشائعة
إذا قمت بحذف Google Play Services، ستتوقف جميع خدمات Google عن العمل: Google Maps وGoogle Sign-In وإشعارات FCM وGoogle Pay وPlay Integrity. التطبيقات التي تستخدم واجهات برمجة التطبيقات هذه ستظهر أخطاء أو تتعطل. في معظم الأجهزة، لا يمكن حذف Play Services بالوسائل القياسية — فقط تعطيلها في الإعدادات.
Google Play Services يتم تحديثها تلقائياً عبر Play Store. للتحديث اليدوي: افتح Play Store ← تطبيقاتي وألعابي ← ابحث عن Google Play Services ← تحديث. إذا كان التحديث غير متاح، قم بتنزيل APK لأحدث إصدار من APKMirror (للمستخدمين المتقدمين فقط). التحديثات التلقائية تحدث عادةً خلال أسبوعين بعد الإصدار.
الحد الأدنى للإصدار المدعوم هو Android 4.4 KitKat (API 19). ومع ذلك، بعض الوحدات (مثل Credential Manager) تتطلب Android 6.0 (API 23) أو أعلى. للتطوير الحديث، توصي Google باستهداف Android 14 (API 34) واستخدام Play Services إصدار 21.0.0+. الأجهزة القديمة على Android 4.4 تتلقى فقط تحديثات Play Services الحرجة.
نعم، يمكن لـ Firebase SDK العمل بدون Google Play Services على الأجهزة التي لا تحتوي على GMS. Firebase Authentication وRealtime Database وFirestore وCloud Functions وHosting لا تتطلب Play Services. يمكن لـ Firebase Cloud Messaging (FCM) استخدام بروتوكول HTTP المباشر بدلاً من GMS. ومع ذلك، يتطلب Firebase Crashlytics وPerformance Monitoring Play Services لجمع البيانات.
APK الأساسي لـ Google Play Services يشغل حوالي 80-120 MB في قسم النظام. الوحدات الإضافية (الخرائط، المصادقة، الموقع) يتم تنزيلها عند الطلب وقد تضيف 10-50 MB. للمقارنة: Apple Push Notification Service على iOS تشغل حوالي 5 MB. على الرغم من الحجم، لا تؤثر Play Services على مساحة تخزين المستخدم المتاحة — فهي موجودة في قسم النظام.
الملخص
سنقوم بتطوير تطبيق جوال جاهز
تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.
اقرأ أيضًا