إعداد التطوير باستخدام إطار عمل تطبيق 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