Thiết lập để phát triển bằng Khung ứng dụng truyền (CAF) dành cho Android

Điều kiện tiên quyết

SDK Google Cast dành cho Android là một phần của SDK Dịch vụ Google Play và không cần phải tải xuống riêng.

Lưu ý: Dịch vụ Google Play cho phép bạn truy cập vào nhiều loại API để tạo quảng cáo, thu thập số liệu phân tích, xác thực người dùng, tích hợp bản đồ, v.v. Để biết thêm thông tin, hãy xem bài viết Tổng quan về Dịch vụ Google Play. Điều quan trọng là bạn phải đảm bảo cài đặt đúng APK Dịch vụ Google Play trên thiết bị của người dùng vì các bản cập nhật có thể không đến tay tất cả người dùng ngay lập tức.

Thêm Dịch vụ Google Play vào dự án

Chọn môi trường phát triển bên dưới rồi thêm Dịch vụ Google Play vào dự án của bạn bằng cách làm theo các bước được cung cấp.

Android Studio

Cách cung cấp API của Dịch vụ Google Play cho ứng dụng:

  1. Mở tệp build.gradle bên trong thư mục mô-đun ứng dụng.

    Lưu ý: Các dự án Android Studio chứa một tệp build.gradle cấp cao nhất và một tệp build.gradle cho mỗi mô-đun. Hãy nhớ chỉnh sửa tệp cho mô-đun ứng dụng của bạn. Hãy xem bài viết Xây dựng dự án bằng Gradle để biết thêm thông tin về Gradle.

  2. Xác minh rằng google() có trong repositories được liệt kê.
    repositories {
        google()
    }
    
  3. Thêm một quy tắc tạo bản dựng mới trong dependencies cho phiên bản mới nhất của play-services. Ví dụ:
    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'
        }
    

    Hãy nhớ cập nhật số phiên bản này mỗi khi cập nhật Dịch vụ Google Play.

    Lưu ý: Nếu số tệp tham chiếu phương thức trong ứng dụng của bạn vượt quá giới hạn 65 nghìn, thì ứng dụng có thể không biên dịch được. Bạn có thể giảm thiểu vấn đề này khi biên dịch ứng dụng bằng cách chỉ định chỉ các API Dịch vụ Google Play cụ thể mà ứng dụng của bạn sử dụng, thay vì tất cả các API đó. Để biết thông tin về cách thực hiện việc này, hãy xem phần Biên dịch có chọn lọc API cho tệp thực thi.

  4. Lưu thay đổi rồi nhấp vào Sync Project with Gradle Files (Đồng bộ hoá dự án với tệp Gradle) trên thanh công cụ.

IDE khác

Cách cung cấp API của Dịch vụ Google Play cho ứng dụng:

  1. Sao chép dự án thư viện tại <android-sdk>/extras/google/google_play_services/libproject/google-play-services_lib/ vào vị trí bạn duy trì các dự án ứng dụng Android của mình.
  2. Trong dự án ứng dụng của bạn, hãy tham chiếu đến dự án thư viện Dịch vụ Google Play. Hãy xem phần Tham chiếu Dự án thư viện trên dòng lệnh để biết thêm thông tin về cách thực hiện việc này.

    Lưu ý: Bạn nên tham chiếu một bản sao của thư viện mà bạn đã sao chép vào không gian làm việc dành cho nhà phát triển. Bạn không nên tham chiếu thư viện trực tiếp từ thư mục SDK Android.

  3. Sau khi bạn thêm thư viện Dịch vụ Google Play làm phần phụ thuộc cho dự án ứng dụng, hãy mở tệp kê khai của ứng dụng rồi thêm thẻ sau làm phần tử con của phần tử <application>:
    <meta-data android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />
    

Sau khi thiết lập dự án để tham chiếu dự án thư viện, bạn có thể bắt đầu phát triển các tính năng bằng API Dịch vụ Google Play.

Tạo trường hợp ngoại lệ đối với Proguard

Để ngăn ProGuard xoá các lớp bắt buộc, hãy thêm các dòng sau vào tệp /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