Google Play Services — لایهای از سرویسهای سیستمی Google در Android است که عملکرد همه برنامهها و APIهای Google را تضمین میکند: از Google Maps گرفته تا Firebase و Google Sign-In. Play Services به عنوان یک بسته APK جداگانه کار میکنند که مستقل از بهروزرسانیهای سیستمعامل Android از طریق Google Play Store بهطور خودکار بهروز میشوند. طبق دادههای Android Developers, 2025، Google Play Services روی 99.8% از تمام دستگاههای فعال Android نصب شده و بیش از 50 ماژول جداگانه را شامل میشود.
نکات اصلی
Google Play Services — یک لایه اختصاصی از سرویسهای Google است که روی سیستمعامل Android کار میکند. برخلاف AOSP (Android Open Source Project) که فقط کتابخانههای پایه را شامل میشود، Play Services APIهایی برای ادغام با اکوسیستم Google فراهم میکند: نقشهها، موقعیتیابی جغرافیایی، احراز هویت، اعلانهای فشاری، تبلیغات و پرداختها. Play Services به عنوان یک برنامه سیستمی با دسترسیهای پیشرفته نصب میشوند و به APIهایی دسترسی دارند که برای برنامههای معمولی در دسترس نیستند.
تفاوت کلیدی Google Play Services با کتابخانههای استاندارد Android — امکان بهروزرسانی از طریق Play Store است. اگر Google نسخه جدیدی از Maps SDK یا Auth API منتشر کند، کاربر بهروزرسانی را از طریق Play Services دریافت میکند بدون اینکه منتظر بهروزرسانی OTA از طرف سازنده باشد. این مشکل تکهتکه شدن Android را حل میکند — طبق Statista (2025)، حدود 40% از دستگاههای Android روی نسخههای سیستمعامل قدیمیتر از 3 سال کار میکنند، اما Play Services روی 85% دستگاهها به آخرین نسخه بهروز شده است.
Google Play Services بخشی از Android Open Source Project نیست و روی دستگاههای بدون مجوز Google (مثلاً Huawei بعد از 2019) در دسترس نیست. برای برنامههایی که روی دستگاههای بدون GMS کار میکنند، Google استفاده از Firebase SDK با پشتیبانی چندسکویی یا راهحلهای جایگزین (Huawei Mobile Services) را توصیه میکند.
معماری Google Play Services به عنوان مجموعهای از ماژولهای مستقل (بستههای APK) ساخته شده است که هر کدام مسئول عملکرد خاص خود هستند. APK اصلی (com.google.android.gms) هسته سرویسها و حدود 50 ماژول اضافی را شامل میشود که بر اساس تقاضا بارگذاری میشوند. فرآیند کاربر فرآیند Google Play Services نامیده میشود و در پسزمینه با اولویت بالا کار میکند.
هر ماژول 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, مناطق جغرافیایی, Activity Recognition |
| 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 (Android Interface Definition Language) انجام میشود. برنامه متدهای 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 بررسی کند — اگر کاربر بهروزرسانی خودکار را غیرفعال کرده یا از سیستمعامل سفارشی استفاده میکند، نسخه ممکن است قدیمی باشد. طبق 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 غیرفعال شده باشند (کاربر به صورت دستی در تنظیمات غیرفعال کرده)، تمام APIهای Google از کار میافتند. برنامه باید قبل از هر فراخوانی API Google، در دسترس بودن Play Services را بررسی کند و پیام قابل فهمی به کاربر با دکمه انتقال به تنظیمات یا دانلود 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 جایگزین میشود) — بررسی یکپارچگی دستگاه: دسترسی root, سیستمعامل سفارشی, شبیهساز. Play Integrity API (توصیه شده از 2024) — بررسی دقیقتر: device integrity (یکپارچگی), app integrity (امضا), account integrity (حساب 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 در پروژه Android با اضافه کردن وابستگیها در build.gradle سطح برنامه انجام میشود. Google استفاده از وابستگیهای ماژولار جداگانه را به جای بسته کلی play-services-all توصیه میکند تا اندازه APK کاهش یابد. حداقل نسخه Play Services SDK — 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, برخی برندهای چینی) نمیتوانند از APIهای ارائه شده توسط GMS استفاده کنند. Google برای چنین دستگاههایی Firebase SDK را توصیه میکند که شامل کتابخانههای چندسکویی است که بدون Play Services کار میکنند. Firebase Authentication مستقیماً از REST API استفاده میکند، Firebase Realtime Database — اتصال WebSocket, Firebase Cloud Messaging — پروتکل اختصاصی خود.
رویکرد جایگزین — استفاده از Huawei Mobile Services (HMS) است که APIهای مشابهی ارائه میدهد: Huawei Maps Kit, Location Kit, Push Kit. برای پشتیبانی از هر دو نوع دستگاه، توسعهدهندگان یک لایه انتزاعی پیادهسازی میکنند که وجود GMS یا HMS را هنگام راهاندازی تشخیص داده و SDK مربوطه را متصل میکند. طبق Counterpoint Research (2025)، سهم دستگاههای بدون GMS حدود 5% از بازار جهانی Android است.
// بررسی وجود 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 کار میکنند، تست تمام توابعی که از API Google استفاده میکنند حیاتی است. Play Services خطای SERVICE_MISSING را در صورت پیدا نشدن سرویس برمیگرداند. کاهش تدریجی (graceful degradation) توصیه میشود: اگر Google Sign-In در دسترس نیست، ورود با ایمیل را پیشنهاد دهید؛ اگر Google Maps در دسترس نیست، WebView با Yandex Maps یا OpenStreetMap نشان دهید. Huawei AppGallery حدود 15% از تمام برنامههای Android در جهان را منتشر میکند.
نمونه کامل بررسی در دسترس بودن 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 را در تنظیمات غیرفعال کند که باعث از کار افتادن تمام APIهای Google میشود. برای توابع بحرانی (مثلاً پرداخت از طریق Google Pay) بررسی باید اجباری باشد — بدون Play Services برنامه نمیتواند پرداخت را پردازش کند.
Play Core — کتابخانه Google Play Services برای مدیریت ماژولهای برنامه، بهروزرسانیهای زمان اجرا و دانلود منابع اضافی است. Play Core امکان پیادهسازی Dynamic Delivery را فراهم میکند — تحویل ماژولهای برنامه بر اساس تقاضا: کاربر برنامه پایه را دانلود میکند و توابع اضافی (مثلاً ماژول مدیریت یا محتوای Premium) فقط زمانی دانلود میشوند که کاربر برای اولین بار صفحه مربوطه را باز کند.
تحویل ماژولار 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", "ماژول Premium بارگذاری شد")
}مهاجرت به Play Core نیاز به تغییر معماری برنامه دارد: عملکرد به ماژولهای on-demand در 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. برنامههایی که از این APIها استفاده میکنند خطا نشان میدهند یا کرش میکنند. در اکثر دستگاهها Play Services را نمیتوان با روشهای استاندارد حذف کرد — فقط میتوان در تنظیمات غیرفعال کرد.
Google Play Services به طور خودکار از طریق Play Store بهروز میشوند. برای بهروزرسانی دستی: Play Store را باز کنید ← برنامهها و بازیهای من ← Google Play Services را پیدا کنید ← بهروزرسانی کنید. اگر بهروزرسانی در دسترس نیست، APK آخرین نسخه را از APKMirror دانلود کنید (فقط برای کاربران حرفهای). بهروزرسانی خودکار معمولاً ظرف 2 هفته پس از انتشار انجام میشود.
حداقل نسخه پشتیبانی شده — 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) میتواند به جای GMS از پروتکل مستقیم HTTP استفاده کند. با این حال Firebase Crashlytics و Performance Monitoring برای جمعآوری داده نیاز به Play Services دارند.
APK پایه Google Play Services حدود 80-120 MB در پارتیشن سیستم اشغال میکند. ماژولهای اضافی (نقشهها, auth, location) بر اساس تقاضا دانلود میشوند و میتوانند 10-50 MB اضافه کنند. برای مقایسه: Apple Push Notification Service در iOS حدود 5 MB اشغال میکند. با وجود اندازه، Play Services بر فضای ذخیرهسازی در دسترس کاربر تأثیر نمیگذارد — آنها در پارتیشن سیستم قرار دارند.
جمعبندی
ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد
IT Sectr از سال 2017 برنامههای iOS و Android را برای استارتاپها و کسبوکارها ایجاد میکند. ما به شما مشاوره میدهیم و بهترین راهحل را پیشنهاد خواهیم کرد.
همچنین بخوانید