必要條件
- 使用 Android SDK Manager 安裝最新版 Android SDK。
- 透過 Android SDK Manager 安裝最新版的 appcompat 和 mediarouter AndroidX 程式庫。
- 透過 Android SDK 管理工具,安裝最新版本的 Google Play 服務 Cast SDK。
Android 版 Google Cast SDK 屬於 Google Play 服務 SDK,不需另外下載。
注意:Google Play 服務提供多種 API,可用於建構廣告、收集數據分析資料、驗證使用者身分、整合地圖等。詳情請參閱「Google Play 服務總覽」。請務必確保使用者裝置上安裝的 Google Play 服務 APK 正確無誤,因為更新可能不會立即推送給所有使用者。
在專案中新增 Google Play 服務
請在下方選取開發環境,然後按照提供的步驟將 Google Play 服務新增至專案。
Android Studio
如要讓應用程式使用 Google Play 服務 API,請按照下列步驟操作:
- 開啟應用程式模組目錄中的
build.gradle
檔案。注意:Android Studio 專案包含頂層
build.gradle
檔案,以及每個模組的build.gradle
檔案。請務必編輯應用程式模組的檔案。如要進一步瞭解 Gradle,請參閱「 使用 Gradle 建構專案」。 - 確認列出的
repositories
中包含google()
。repositories {
- 在最新版
play-services
的dependencies
下新增建構規則。例如: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.1.0' }
請務必在每次更新 Google Play 服務時,更新這個版本號碼。
注意:如果應用程式中的方法參照數量超過 65, 000 個的限制,應用程式可能無法編譯。編譯應用程式時,您可以只指定應用程式使用的特定 Google Play 服務 API,而非全部,或許就能減輕這個問題。如要瞭解如何執行這項操作,請參閱「將 API 選擇性編譯到可執行檔中」。
- 儲存變更,然後按一下工具列中的「Sync Project with Gradle Files」。
其他 IDE
如要讓應用程式使用 Google Play 服務 API,請按照下列步驟操作:
- 將程式庫專案從
<android-sdk>/extras/google/google_play_services/libproject/google-play-services_lib/
複製到您維護 Android 應用程式專案的位置。 - 在應用程式專案中,參照 Google Play 服務程式庫專案。如要進一步瞭解如何執行這項操作,請參閱「
在指令列上參照程式庫專案」。
注意:您應參照複製到開發工作區的程式庫副本,不應直接從 Android SDK 目錄參照程式庫。
- 將 Google Play 服務程式庫新增為應用程式專案的依附元件後,請開啟應用程式的資訊清單檔案,並將下列標記新增為
<application>
元素的子項:<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
設定專案以參照程式庫專案後,即可開始使用 Google Play 服務 API 開發功能。
建立 Proguard 例外狀況
為防止 ProGuard 移除必要類別,請在
檔案中加入下列程式碼:
-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