إعداد التطوير باستخدام إطار عمل تطبيق Cast (CAF) لنظام التشغيل Android

المتطلّبات الأساسية

تعتبر حزمة SDK لـ Google Cast لنظام Android جزءًا من حزمة SDK لخدمات Google Play ولا تحتاج إلى تنزيلها بشكل منفصل.

ملاحظة: تتيح لك خدمات Google Play الوصول إلى مجموعة من واجهات برمجة التطبيقات لإنشاء الإعلانات وجمع الإحصاءات ومصادقة المستخدمين ودمج الخرائط وغير ذلك الكثير. للحصول على مزيد من المعلومات، يمكنك الاطلاع على نظرة عامة على خدمات Google Play. من المهم بالنسبة إليك التأكّد من تثبيت حِزمة APK الصحيحة لخدمات Google Play على جهاز المستخدم لأنّ التحديثات قد لا تصل إلى جميع المستخدمين على الفور.

إضافة "خدمات Google Play" إلى مشروعك

اختَر بيئة التطوير أدناه وأضِف "خدمات Google Play" إلى مشروعك من خلال اتّباع الخطوات الموضّحة.

استوديو Android

لإتاحة واجهات برمجة التطبيقات لخدمات Google Play في تطبيقك، اتّبِع الخطوات التالية:

  1. افتح ملف build.gradle داخل دليل وحدة التطبيق.

    ملاحظة: تتضمّن مشاريع "استوديو Android" ملف build.gradle ذي مستوى أعلى وملف build.gradle لكل وحدة. تأكد من تحرير الملف الخاص بوحدة التطبيق لديك. راجع إنشاء مشروعك باستخدام Gradle للحصول على مزيد من المعلومات حول Gradle.

  2. تأكَّد من أنّ google() مدرَج في repositories المدرَج.
    repositories {
        google()
    }
    
  3. أضِف قاعدة إصدار جديدة ضمن 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:21.5.0'
        }
    

    احرص على تحديث رقم الإصدار هذا في كل مرة يتم فيها تحديث "خدمات Google Play".

    ملاحظة: إذا تجاوز عدد مراجع الطُرق في تطبيقك الحد الأقصى البالغ 65 ألفًا، قد يتعذّر على التطبيق تجميع البيانات. قد تتمكن من الحد من هذه المشكلة عند تجميع تطبيقك من خلال تحديد واجهات برمجة التطبيقات المحددة لخدمات Google Play التي يستخدمها تطبيقك فقط، بدلاً من جميع واجهات برمجة التطبيقات. للحصول على معلومات حول كيفية إجراء ذلك، يُرجى الاطّلاع على التجميع الانتقائي لواجهات برمجة التطبيقات في تطبيقك القابل للتنفيذ.

  4. احفظ التغييرات وانقر على مزامنة المشروع مع ملفات Gradle في شريط الأدوات.

بيئة تطوير متكاملة (IDE) أخرى

لإتاحة واجهات برمجة التطبيقات لخدمات Google Play في تطبيقك، اتّبِع الخطوات التالية:

  1. انسخ مشروع المكتبة في <android-sdk>/extras/google/google_play_services/libproject/google-play-services_lib/ إلى المكان الذي تحتفظ فيه بمشاريع تطبيقات Android.
  2. في مشروع تطبيقك، يُرجى الإشارة إلى مشروع مكتبة "خدمات Google Play". يُرجى الاطّلاع على إنشاء نسخة من مشروع المكتبة على سطر الأوامر للحصول على مزيد من المعلومات حول كيفية إجراء ذلك.

    ملاحظة: يجب الإشارة إلى نسخة من المكتبة التي نسختها إلى مساحة عمل التطوير، ويجب عدم الرجوع إلى المكتبة مباشرةً من دليل حزمة تطوير البرامج (SDK) لنظام التشغيل Android.

  3. بعد إضافة مكتبة "خدمات Google Play" بصفتها تابعة لمشروع تطبيقك، افتح ملف البيان لتطبيقك وأضِف العلامة التالية كعنصر ثانوي للعنصر <application>:
    <meta-data android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />
    

بعد إعداد مشروعك للإشارة إلى مشروع المكتبة، يمكنك البدء في تطوير الميزات باستخدام واجهات برمجة التطبيقات لخدمات Google Play.

إنشاء استثناء Proguard

لمنع ProGuard من إزالة الفئات المطلوبة، أضِف الأسطر التالية في ملف /proguard-project.txt:

-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