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