المتطلبات الأساسية
- ثبِّت أحدث إصدار من حزمة تطوير البرامج (SDK) لنظام التشغيل Android باستخدام أداة SDK Manager لنظام التشغيل Android.
- ثبِّت أحدث إصدار من مكتبات AndroidX appcompat وmediarouter من خلال أداة SDK Manager لنظام التشغيل Android.
- ثبِّت أحدث إصدار من حزمة تطوير البرامج (SDK) لتطبيق Cast في خدمات Google Play من خلال أداة إدارة حزمة تطوير البرامج (SDK) لنظام التشغيل Android.
تُعدّ حزمة تطوير البرامج (SDK) لمنصة Google Cast على Android جزءًا من حزمة تطوير البرامج (SDK) لـ "خدمات Google Play"، ولا يلزم تنزيلها بشكل منفصل.
ملاحظة: تتيح لك "خدمات Google Play" الوصول إلى مجموعة من واجهات برمجة التطبيقات لإنشاء الإعلانات وجمع الإحصاءات ومصادقة المستخدمين ودمج الخرائط وغير ذلك الكثير. لمزيد من المعلومات، يُرجى الاطّلاع على نظرة عامة على "خدمات Google Play". من المهم التأكّد من تثبيت حزمة APK الصحيحة لخدمات Google Play على جهاز المستخدم لأنّ التحديثات قد لا تصل إلى جميع المستخدمين على الفور.
إضافة "خدمات Google Play" إلى مشروعك
اختَر بيئة التطوير أدناه وأضِف "خدمات Google Play" إلى مشروعك باتّباع الخطوات الموضّحة.
استوديو Android
لإتاحة واجهات برمجة التطبيقات لخدمات Google Play لتطبيقك، اتّبِع الخطوات التالية:
- افتح ملف
build.gradleداخل دليل وحدة التطبيق.ملاحظة: تحتوي مشاريع "استوديو Android" على ملف
build.gradleذي مستوى أعلى وملفbuild.gradleلكل وحدة. تأكَّد من تعديل الملف لوحدة التطبيق. يُرجى الاطّلاع على إنشاء مشروعك باستخدام Gradle لمزيد من المعلومات حول Gradle. - تأكَّد من أنّ
google()مضمّن فيrepositoriesالمدرَج.repositories {google() } - أضِف قاعدة إصدار جديدة ضمن
dependenciesلأحدث إصدار منplay-services. على سبيل المثال:apply plugin: 'com.android.application' ... dependencies { implementation 'androidx.appcompat:appcompat:1.3.1' implementation 'androidx.mediarouter:mediarouter:1.2.5' implementation 'com.google.android.gms:play-services-cast-framework:23.0.0' }
احرص على تعديل رقم الإصدار هذا في كل مرة يتم فيها تحديث "خدمات Google Play".
ملاحظة: إذا تجاوز عدد مراجع الطرق في تطبيقك الحدّ الأقصى البالغ 65 ألفًا، قد يتعذّر تجميع تطبيقك. قد تتمكّن من تخفيف هذه المشكلة عند تجميع تطبيقك من خلال تحديد واجهات برمجة التطبيقات المحدّدة في "خدمات Google Play" التي يستخدمها تطبيقك فقط، بدلاً من تحديدها جميعًا. للحصول على معلومات حول كيفية إجراء ذلك، يُرجى الاطّلاع على تجميع واجهات برمجة التطبيقات بشكل انتقائي في الملف القابل للتنفيذ.
- احفظ التغييرات وانقر على مزامنة المشروع مع ملفات Gradle في شريط الأدوات.
بيئة تطوير متكاملة (IDE) أخرى
لإتاحة واجهات برمجة التطبيقات لخدمات Google Play لتطبيقك، اتّبِع الخطوات التالية:
- انسخ مشروع المكتبة في
<android-sdk>/extras/google/google_play_services/libproject/google-play-services_lib/إلى الموقع الذي تحتفظ فيه بمشاريع تطبيقات Android. - في مشروع تطبيقك، يمكنك الإشارة إلى مشروع مكتبة "خدمات Google Play". يمكنك الاطّلاع على
الإشارة إلى مشروع مكتبة في سطر الأوامر للحصول على مزيد من المعلومات حول كيفية إجراء ذلك.
ملاحظة: يجب الإشارة إلى نسخة من المكتبة التي نسختها إلى مساحة عمل التطوير، ولا يجب الإشارة إلى المكتبة مباشرةً من دليل حزمة تطوير البرامج (SDK) لنظام التشغيل Android.
- بعد إضافة مكتبة "خدمات Google Play" كعنصر تابع لمشروع تطبيقك،
افتح ملف بيان تطبيقك وأضِف العلامة التالية كعلامة فرعية للعنصر
<application>:<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
بعد إعداد مشروعك للإشارة إلى مشروع المكتبة، يمكنك البدء في تطوير الميزات باستخدام واجهات برمجة تطبيقات "خدمات Google Play".
إنشاء استثناء Proguard
لمنع
ProGuard من إزالة
الفئات المطلوبة، أضِف الأسطر التالية في
ملف :
-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable { public static final *** NULL; } -keepnames class * implements android.os.Parcelable -keepclassmembers class * implements android.os.Parcelable { public static final *** CREATOR; } -keep @interface android.support.annotation.Keep -keep @android.support.annotation.Keep class * -keepclasseswithmembers class * { @android.support.annotation.Keep <fields>; } -keepclasseswithmembers class * { @android.support.annotation.Keep <methods>; } -keep @interface com.google.android.gms.common.annotation.KeepName -keepnames @com.google.android.gms.common.annotation.KeepName class * -keepclassmembernames class * { @com.google.android.gms.common.annotation.KeepName *; } -keep @interface com.google.android.gms.common.util.DynamiteApi -keep public @com.google.android.gms.common.util.DynamiteApi class * { public <fields>; public <methods>; } -dontwarn android.security.NetworkSecurityPolicy