Os SDKs do Google Play Services às vezes incluem ou dependem de bibliotecas de código aberto. Para obedecer aos requisitos de licença dessas bibliotecas, você, como desenvolvedor, é responsável por mostrar os avisos das bibliotecas de código aberto usadas pelo seu app.
O Google Play Services inclui um conjunto de ferramentas projetadas para facilitar a expressão dos avisos de software de código aberto (OSS, na sigla em inglês) das bibliotecas usadas nos apps. O oss-licenses-plugin e o SDK oss-licenses do Google Play Services coletam os termos de licença das bibliotecas incluídas, conforme declarado nos
arquivos POM, e criam uma
atividade
que pode ser usada para mostrar esses termos. Saiba mais sobre
como a ferramenta encontra e empacota informações de licença.
Adicionar o plug-in do Gradle
No pluginManagement das configurações do projeto, faça o seguinte:
- Inclua o repositório Maven do Google.
- Resolva o plug-in
oss-licensesnoPluginManagement.
O snippet de código a seguir mostra essas etapas:
DSL do Kotlin
settings.gradle.kts
pluginManagement { repositories { ... google() } resolutionStrategy { eachPlugin { if (requested.id.id == "com.google.android.gms.oss-licenses-plugin") { useModule("com.google.android.gms:oss-licenses-plugin:0.12.0") } } } }
DSL do Groovy
build.gradle
pluginManagement { repositories { ... google() } resolutionStrategy { eachPlugin { if (requested.id.id == "com.google.android.gms.oss-licenses-plugin") { useModule("com.google.android.gms:oss-licenses-plugin:0.12.0") } } } }
No arquivo de build do app, aplique o plug-in adicionando a seguinte linha abaixo da declaração atual do plug-in com.android.application na parte de cima do arquivo:
DSL do Kotlin
app/build.gradle.kts
plugins { id("com.android.application") id("com.google.android.gms.oss-licenses-plugin") }
DSL do Groovy
app/build.gradle
plugins { id 'com.android.application' id 'com.google.android.gms.oss-licenses-plugin' }
Você pode conferir o código desse plug-in no GitHub.
Adicionar a biblioteca play-services-oss-licenses ao app
Na seção dependencies do arquivo de build do app, adicione uma dependência na biblioteca play-services-oss-licenses:
DSL do Kotlin
build.gradle.kts
implementation("com.google.android.gms:play-services-oss-licenses:17.5.1")
DSL do Groovy
build.gradle
implementation 'com.google.android.gms:play-services-oss-licenses:17.5.1'
Mostrar informações de licença
Quando o app é criado, o plug-in do Gradle processa as licenças e as adiciona aos recursos do app. Para mostrar a licença com facilidade, você pode iniciar uma atividade fornecida pela biblioteca play-services-oss-licenses em um ponto adequado do app, conforme mostrado no snippet de código a seguir:
Kotlin
import com.google.android.gms.oss.licenses.v2.OssLicensesMenuActivity ... // When the user selects an option to see the licenses: startActivity(Intent(this, OssLicensesMenuActivity::class.java))
Java
import com.google.android.gms.oss.licenses.v2.OssLicensesMenuActivity; ... // When the user selects an option to see the licenses: startActivity(new Intent(this, OssLicensesMenuActivity.class));
Quando a atividade é iniciada, ela mostra uma lista de bibliotecas de código aberto compiladas no app, incluindo as bibliotecas usadas pelo app, conforme mostrado na Figura 1. Os usuários podem tocar no nome de uma biblioteca para conferir mais informações de licença.
Figura 1. A atividade do menu de licenças mostra uma lista selecionável de bibliotecas de código aberto usadas por um app.
Definir o título da atividade
Por padrão, a atividade mostrada tem o título "Licenças de código aberto". Você pode
personalizar o título da atividade chamando
setActivityTitle(),
conforme mostrado no snippet de código a seguir:
Kotlin
OssLicensesMenuActivity.setActivityTitle(getString(R.string.custom_license_title))
Java
OssLicensesMenuActivity.setActivityTitle(getString(R.string.custom_license_title));
Aplicar um tema à atividade
Há diferentes maneiras de aplicar um tema à OssLicensesMenuActivity, dependendo se o app usa o Material 3 ou temas baseados em XML.
Apps que usam o Material 3
Para apps que usam o Material 3, você pode chamar o
setTheme()
método para aplicar um tema personalizado à atividade, conforme mostrado no snippet de código a seguir:
Kotlin
import com.google.android.gms.oss.licenses.v2.OssLicensesMenuActivity ... OssLicensesMenuActivity.setTheme(lightColorScheme, darkColorScheme, typography) startActivity(Intent(this, OssLicensesMenuActivity::class.java))
Java
import com.google.android.gms.oss.licenses.v2.OssLicensesMenuActivity; ... OssLicensesMenuActivity.setTheme(lightColorScheme, darkColorScheme, typography); startActivity(new Intent(this, OssLicensesMenuActivity.class));
Apps que usam temas XML
Para apps que usam temas XML, você pode aplicar um tema à atividade no manifesto para corresponder ao tema usado nas outras atividades do app. Para fazer isso,
inclua a atividade de licença de código aberto em um elemento <activity> no arquivo de manifesto do
app, conforme mostrado no snippet de código a seguir:
<application android:theme="@style/AppTheme" ...> <activity android:name="com.google.android.gms.oss.licenses.v2.OssLicensesMenuActivity" tools:replace="android:theme" android:theme="@style/AppTheme" /> </application>
Como a lista de licenças é determinada
No tempo de compilação, o plug-in do Gradle verifica as dependências do POM do projeto do app. Quando um POM do Maven existe para uma dependência direta do app, o plug-in
processa cada <licenses>
elemento e incorpora o link e o título de cada licença em um recurso do Android que está
incluído no app.