المتطلبات الأساسية
- ثبِّت أحدث إصدار من حزمة تطوير البرامج (SDK) لنظام التشغيل Android باستخدام مدير حزمة تطوير البرامج (SDK) لنظام التشغيل Android.
- ثبِّت أحدث إصدار من مكتبات AndroidX لتطبيقَي appcompat وmediarouter من خلال مدير حزمة تطوير البرامج (SDK) لنظام التشغيل Android.
- ثبِّت أحدث إصدار من حزمة تطوير البرامج (SDK) لتطبيق Cast في "خدمات Google Play من خلال مدير حزمة تطوير البرامج (SDK) لنظام التشغيل Android.
تشكّل حزمة تطوير البرامج (SDK) لنظام التشغيل Android من Google Cast جزءًا من حزمة تطوير البرامج (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 {
- أضِف قاعدة إنشاء جديدة ضمن
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:22.0.0' }
احرص على تعديل رقم الإصدار هذا في كل مرة يتم فيها تحديث "خدمات Google Play".
ملاحظة: إذا تجاوز عدد إحالات الطرق في تطبيقك الحدّ الأقصى البالغ 65 ألف، قد يتعذّر compiling (الترجمة) لتطبيقك. قد تتمكّن من تخفيف هذه المشكلة عند تجميع تطبيقك من خلال تحديد واجهات برمجة تطبيقات "خدمات Google Play" المحدّدة التي يستخدمها تطبيقك فقط، بدلاً من جميعها. للحصول على معلومات حول كيفية إجراء ذلك، يُرجى الاطّلاع على مقالة تجميع واجهات برمجة التطبيقات بشكل انتقائي في الملف القابل للتنفيذ.
- احفظ التغييرات وانقر على مزامنة المشروع مع ملفات Gradle في شريط الأدوات.
بيئة تطوير البرامج الأخرى
لإتاحة واجهات برمجة تطبيقات "خدمات Google Play" لتطبيقك:
- انسخ مشروع المكتبة من
<android-sdk>/extras/google/google_play_services/libproject/google-play-services_lib/
إلى الموقع الذي تُجري فيه عمليات الصيانة لمشاريع تطبيقات Android. - في مشروع تطبيقك، يمكنك الإشارة إلى مشروع مكتبة "خدمات Google Play". اطّلِع على مقالة
الإشارة إلى مشروع مكتبة على سطر الأوامر للحصول على مزيد من المعلومات حول كيفية إجراء ذلك.
ملاحظة: يجب الإشارة إلى نسخة من المكتبة التي نسختها إلى مساحة العمل المخصّصة للتطوير، ويجب عدم الإشارة إلى المكتبة مباشرةً من directory Android SDK.
- بعد إضافة مكتبة "خدمات 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