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

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

تُعدّ حزمة Google Cast SDK لنظام التشغيل 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.4.0'
        }
    

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

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

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

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

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

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

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

  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