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

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

تُعدّ حزمة Google Cast SDK لنظام التشغيل Android جزءًا من حزمة خدمات Google Play SDK، ولا يلزم تنزيلها بشكل منفصل.

ملاحظة: تتيح لك "خدمات 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:22.3.1'
        }

    احرص على تعديل رقم الإصدار هذا في كل مرة يتم فيها تحديث "خدمات 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