Configuração para desenvolver com o framework de aplicativo do Google Cast (CAF, na sigla em inglês) para Android

Pré-requisitos

O SDK do Google Cast para Android faz parte do SDK do Google Play Services e não precisa ser feito o download separadamente.

Observação: os Serviços do Google Play oferecem acesso a uma gama de APIs para criar anúncios, coletar análises, autenticar usuários, integrar mapas e muito mais. Para mais informações, consulte Visão geral do Google Play Services. É importante garantir que o APK correto do Google Play Services esteja instalado no dispositivo de um usuário, já que as atualizações podem não chegar a todos os usuários imediatamente.

Adicionar o Google Play Services ao projeto

Selecione seu ambiente de desenvolvimento abaixo e adicione os Serviços do Google Play ao projeto seguindo as etapas fornecidas.

Para disponibilizar as APIs Google Play Services ao seu app:

  1. Abra o arquivo build.gradle no diretório do módulo do app.

    Observação:os projetos do Android Studio contêm um arquivo build.gradle de nível superior e um arquivo build.gradle para cada módulo. Edite o arquivo do módulo do app. Consulte Como criar seu projeto com o Gradle para mais informações sobre o Gradle.

  2. Verifique se google() está incluído na repositories listada.
    repositories {
        google()
    }
  3. Adicione uma nova regra de build em dependencies para a versão mais recente de play-services. Exemplo:
    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.0.0'
        }

    Atualize esse número de versão sempre que o Google Play Services for atualizado.

    Observação:se o número de referências de método no app exceder o limite de 65 mil, ele poderá falhar na compilação. É possível reduzir esse problema ao compilar o app especificando apenas as APIs específicas do Google Play Services que o app usa, em vez de todas elas. Para saber como fazer isso, consulte Como compilar APIs seletivamente no executável.

  4. Salve as alterações e clique em Sync Project with Gradle Files na barra de ferramentas.

Para disponibilizar as APIs Google Play Services ao seu app:

  1. Copie o projeto da biblioteca em <android-sdk>/extras/google/google_play_services/libproject/google-play-services_lib/ para o local em que você mantém seus projetos de apps Android.
  2. No projeto do app, faça referência ao projeto da biblioteca do Google Play Services. Consulte Como fazer referência a um projeto de biblioteca na linha de comando para mais informações.

    Observação:você precisa referenciar uma cópia da biblioteca que foi copiada para o espaço de trabalho de desenvolvimento. Não é possível referenciar a biblioteca diretamente do diretório do SDK do Android.

  3. Depois de adicionar a biblioteca Google Play Services como uma dependência do projeto do app, abra o arquivo de manifesto do app e adicione a seguinte tag como um filho do elemento <application>:
    <meta-data android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />

Depois de configurar o projeto para referenciar o projeto da biblioteca, você pode começar a desenvolver recursos com as APIs do Google Play Services.

Criar uma exceção do Proguard

Para evitar que o ProGuard remova as classes necessárias, adicione as seguintes linhas no arquivo /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