Nesta página, explicamos como integrar o SDK de navegação ao seu projeto de desenvolvimento.
Adicionar o SDK do Navigation ao seu projeto
O SDK do Navigation está disponível no repositório Maven do Google.
É possível adicionar o SDK ao seu projeto usando a configuração do Gradle build.gradle ou do Maven pom.xml.
Adicione a seguinte dependência à sua configuração do Gradle ou do Maven, substituindo o marcador
VERSION_NUMBERpela versão desejada do SDK de navegação para Android.Gradle
Adicione o seguinte ao
build.gradledo módulo:dependencies { ... implementation 'com.google.android.libraries.navigation:navigation:VERSION_NUMBER' }Maven
Adicione o seguinte ao seu
pom.xml:<dependencies> ... <dependency> <groupId>com.google.android.libraries.navigation</groupId> <artifactId>navigation</artifactId> <version>VERSION_NUMBER</version> </dependency> </dependencies>Se você tiver dependências que usam o SDK do Maps, será necessário excluir a dependência em cada dependência declarada que depende do SDK do Maps.
Gradle
Adicione o seguinte ao
build.gradlede nível superior:allprojects { ... // Required: you must exclude the Google Play service Maps SDK from // your transitive dependencies to make sure there won't be // multiple copies of Google Maps SDK in your binary, as the Navigation // SDK already bundles the Google Maps SDK. configurations { implementation { exclude group: 'com.google.android.gms', module: 'play-services-maps' } } }Maven
Adicione o seguinte ao seu
pom.xml:<dependencies> <dependency> <groupId>project.that.brings.in.maps</groupId> <artifactId>MapsConsumer</artifactId> <version>1.0</version> <exclusions> <!-- Navigation SDK already bundles Maps SDK. You must exclude it to prevent duplication--> <exclusion> <!-- declare the exclusion here --> <groupId>com.google.android.gms</groupId> <artifactId>play-services-maps</artifactId> </exclusion> </exclusions> </dependency> </dependencies>
Configurar o build
Depois de criar o projeto, você pode definir as configurações para criar e usar o SDK do Navigation.
Atualizar propriedades locais
- Na pasta Gradle Scripts, abra o arquivo
local.propertiese adicioneandroid.useDeprecatedNdk=true.
Atualizar o script de build do Gradle
Abra o arquivo
build.gradle (Module:app)e use as diretrizes a seguir para atualizar as configurações de acordo com os requisitos do SDK de navegação. Considere também definir as opções de otimização.Configurações necessárias para o SDK do Navigation
- Defina
minSdkVersioncomo 24 ou mais recente. - Defina
targetSdkVersioncomo 36 ou mais. - Adicione uma configuração
dexOptionsque aumente ojavaMaxHeapSize. - Defina o local para outras bibliotecas.
- Adicione o
repositoriese odependenciespara o SDK de navegação. - Substitua os números de versão nas dependências pelas versões mais recentes disponíveis.
Configurações opcionais para diminuir o tempo de build
- Ative a redução de código e de recursos usando o R8/ProGuard para remover códigos e recursos não utilizados das dependências. Se a etapa do R8/ProGuard demorar muito para ser executada, considere ativar o multidex para o trabalho de desenvolvimento.
- Reduza o número de traduções de idiomas incluídas no build: defina
resConfigspara um idioma durante o desenvolvimento. Para o build final, definaresConfigspara os idiomas que você realmente usa. Por padrão, o Gradle inclui strings de recursos para todos os idiomas compatíveis com o SDK de navegação.
Adicionar simplificação para compatibilidade com o Java 8
- Se você estiver criando o app usando o Plug-in do Android para Gradle 4.0.0 ou mais recente, o plug-in vai ampliar o suporte para o uso de várias APIs da linguagem Java 8. Consulte Suporte à simplificação do Java 8 para mais informações. Confira o snippet de exemplo do script de build abaixo para saber como compilar e as opções de dependência.
- Use as versões do Gradle, do Plug-in do Android para Gradle (AGP) e da biblioteca Desugar que correspondem à versão do SDK de navegação. Veja a tabela a seguir:
- A biblioteca Desugar precisa ser ativada para o módulo
appe qualquer módulo que dependa diretamente do SDK de navegação.
- Defina
A tabela a seguir lista as versões das bibliotecas do Gradle, do AGP e do Desugar necessárias para cada versão do SDK de navegação.
| Versão do SDK Navigation | Versão do Gradle | Versão do AGP | Biblioteca de simplificação |
|---|---|---|---|
| 8.0.0 e versões mais recentes | 9.1.0 | 9.0.1 | com.android.tools:desugar_jdk_libs_nio:2.1.5 |
| 7.7.0 a 7.9.0 | 8.13 | 8.13.2 | com.android.tools:desugar_jdk_libs_nio:2.1.5 |
| 7.3.0 a 7.6.0 | 8.11.1 | 8.10.0 | com.android.tools:desugar_jdk_libs_nio:2.0.3 |
Confira abaixo um exemplo do script de build do Gradle para o aplicativo. Confira os apps de exemplo para ver conjuntos atualizados de dependências, já que a versão do SDK de Navigation que você está usando pode estar um pouco à frente ou atrás desta documentação.
apply plugin: 'com.android.application'
ext {
navSdk = "__NAVSDK_VERSION__"
}
android {
compileSdk 33
buildToolsVersion='28.0.3'
defaultConfig {
applicationId "<your id>"
// Navigation SDK supports SDK 23 and later.
minSdkVersion 23
targetSdkVersion 34
versionCode 1
versionName "1.0"
// Set this to the languages you actually use, otherwise you'll include resource strings
// for all languages supported by the Navigation SDK.
resConfigs "en"
multiDexEnabled true
}
dexOptions {
// This increases the amount of memory available to the dexer. This is required to build
// apps using the Navigation SDK.
javaMaxHeapSize "4g"
}
buildTypes {
// Run ProGuard. Note that the Navigation SDK includes its own ProGuard configuration.
// The configuration is included transitively by depending on the Navigation SDK.
// If the ProGuard step takes too long, consider enabling multidex for development work
// instead.
all {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
compileOptions {
// Flag to enable support for the new language APIs
coreLibraryDesugaringEnabled true
// Sets Java compatibility to Java 8
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
repositories {
// Navigation SDK for Android and other libraries are hosted on Google's Maven repository.
google()
}
dependencies {
// Include the Google Navigation SDK.
// Note: remember to exclude Google Play service Maps SDK from your transitive
// dependencies to avoid duplicate copies of the Google Maps SDK.
api "com.google.android.libraries.navigation:navigation:${navSdk}"
// Declare other dependencies for your app here.
annotationProcessor "androidx.annotation:annotation:1.7.0"
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs_nio:2.1.5'
}
Adicionar a chave de API ao seu app
Nesta seção, descrevemos como armazenar sua chave de API para que ela possa ser referenciada com segurança pelo seu app. Não faça a verificação dela no sistema de controle de versões. Recomendamos armazenar no arquivo secrets.properties, que fica no diretório raiz do projeto, e excluir esse arquivo do controle de versões. Para saber mais sobre os arquivos de propriedades do Gradle, consulte Arquivos de propriedades do Gradle.
Se quiser simplificar essa tarefa, use o plug-in Secrets Gradle para Android.
Para instalar o plug-in Secrets Gradle para Android e armazenar sua chave de API:
-
No Android Studio, abra o arquivo de nível superior
build.gradle.ktsoubuild.gradlee adicione o seguinte código ao blocoplugins.Kotlin
plugins { // ... id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin") version "2.0.1" apply false }
Groovy
plugins { // ... id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin' version '2.0.1' apply false }
-
Abra o arquivo
build.gradle.ktsoubuild.gradleno nível do módulo e adicione o seguinte código ao elementoplugins.Kotlin
plugins { id("com.android.application") // ... id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin") }
Groovy
plugins { id 'com.android.application' // ... id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin' }
- Se você usa o Android Studio, sincronize seu projeto com o Gradle.
-
Abra o arquivo
secrets.propertiesno seu diretório de nível superior e adicione o código a seguir. SubstituaYOUR_API_KEYpela sua chave de API. Adicionesecrets.propertiesao arquivo.gitignore(ou exclua-o do sistema de controle de versões) para que sua chave de API não seja verificada no controle de versões.MAPS_API_KEY=YOUR_API_KEY
-
Crie o arquivo
local.defaults.propertiesno seu diretório de nível superior, na mesma pasta que o arquivosecrets.properties, e depois adicione o seguinte código.MAPS_API_KEY=DEFAULT_API_KEY
O objetivo desse arquivo é oferecer um local de backup para a chave de API se o arquivo
secrets.propertiesnão for encontrado, para que os builds não apresentem falha. Isso pode acontecer se você clonar o app de um sistema de controle de versões que omitesecrets.propertiese ainda não tiver criado um arquivosecrets.propertieslocalmente para fornecer sua chave de API. -
Você pode adicionar a chave de API ao arquivo
AndroidManifest.xmlou fornecê-la de forma programática.- Adicione sua chave de API a
AndroidManifest.xml:<meta-data android:name="com.google.android.geo.API_KEY" android:value="${MAPS_API_KEY}" />Observação:
com.google.android.geo.API_KEYé o nome de metadados recomendado para a chave de API. Uma chave com esse nome pode ser usada para autenticar várias APIs do Google Maps na plataforma Android, incluindo o SDK Navigation para Android. Para garantir a compatibilidade com versões anteriores, a API também aceita o nomecom.google.android.maps.v2.API_KEY. Esse nome legado permite autenticação apenas na API Android Maps v2. Um aplicativo pode especificar somente um dos nomes de metadados da chave de API. Se ambos forem especificados, a API vai gerar uma exceção. - Forneça a chave de API de forma programática:
O plug-in Secrets Gradle disponibiliza a chave na classe
BuildConfig. Na inicialização do app (por exemplo, no métodoApplication.onCreate()), chame o método da seguinte maneira:Kotlin
- Adicione as seguintes instruções de importação:
import com.google.android.libraries.navigation.NavigationApi
- Adicione o seguinte ao método
Application.onCreate():NavigationApi.setApiKey(BuildConfig.MAPS_API_KEY)
Java
- Adicione as seguintes instruções de importação:
import com.google.android.libraries.navigation.NavigationApi;
- Adicione o seguinte ao método
Application.onCreate():NavigationApi.setApiKey(BuildConfig.MAPS_API_KEY);
Observação:ao usarsetApiKey(), tenha em mente o seguinte:- Forneça uma chave de API não nula e não vazia.
- Chame
setApiKey()apenas uma vez durante o ciclo de vida do aplicativo. O método gera umIllegalStateExceptionse for chamado mais de uma vez. - Chame
setApiKey()antes de inicializar qualquer outro componente do SDK do Navigation, comoNavigator. - A chave fornecida com esse método substitui qualquer chave de API no
AndroidManifest.xml. - Use a versão 7.6 ou mais recente do SDK de navegação.
- Adicione as seguintes instruções de importação:
- Adicione sua chave de API a
-
No Android Studio, abra o arquivo
build.gradle.ktsoubuild.gradleno nível do módulo e edite a propriedadesecrets. Se a propriedadesecretsnão existir, adicione-a.Edite as propriedades do plug-in para definir
propertiesFileNamecomo"secrets.properties", definirdefaultPropertiesFileNamecomo"local.defaults.properties"e definir outras propriedades.Kotlin
secrets { // To add your Maps API key to this project: // 1. If the secrets.properties file does not exist, create it in the root directory (the same folder as the root local.properties file). // 2. Add this line, where YOUR_API_KEY is your API key: // MAPS_API_KEY=YOUR_API_KEY propertiesFileName = "secrets.properties" // A properties file containing default secret values. This file can be // checked in version control. defaultPropertiesFileName = "local.defaults.properties" }
Groovy
secrets { // To add your Maps API key to this project: // 1. If the secrets.properties file does not exist, create it in the root directory (the same folder as the root local.properties file). // 2. Add this line, where YOUR_API_KEY is your API key: // MAPS_API_KEY=YOUR_API_KEY propertiesFileName = "secrets.properties" // A properties file containing default secret values. This file can be // checked in version control. defaultPropertiesFileName = "local.defaults.properties" }
Incluir as atribuições necessárias no app
Se você usa o SDK de Navegação para Android no seu app, precisa incluir o texto de atribuição e as licenças de código aberto como parte da seção de avisos legais do app.
O texto de atribuição obrigatório e as licenças de código aberto estão no arquivo ZIP do SDK de navegação para Android:
NOTICE.txtLICENSES.txt
Se você é cliente do Mobility ou do Fleet Engine Deliveries
Se você é cliente do Mobility ou do Fleet Engine Deliveries, saiba mais sobre o faturamento na documentação do Mobility. Para mais informações sobre como registrar transações, consulte Configurar o faturamento, Registrar transações faturáveis, Relatórios e Registrar transações faturáveis (Android).
Dependências manuais (não Gradle/Maven)
Se o sistema de build não resolver dependências transitivas (como o Bazel) ou se você integrar o AAR manualmente, será necessário adicionar essas dependências ao projeto. O Gradle e o Maven as resolvem automaticamente.
androidx.datastore:datastore-coreandroidx.datastore:datastore-guavacom.google.guava:listenablefutureandroidx.concurrent:concurrent-futures