Configurar seu projeto do Android Studio

Nesta página, explicamos como integrar o SDK do Navigation ao seu projeto de desenvolvimento.

Adicionar o SDK do Navigation ao seu projeto

O SDK do Navigation está disponível no Google Maven Repository. Você pode adicionar o SDK ao seu projeto usando a configuração build.gradle do Gradle ou pom.xml do Maven.

  1. Adicione a seguinte dependência à configuração do Gradle ou Maven, substituindo o marcador VERSION_NUMBER pela versão desejada do SDK do Navigation para Android.

    Gradle

    Adicione o seguinte ao build.gradle do 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>
    
  2. 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.gradle de 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 a versão

Depois de criar o projeto, você pode configurar as definições para um build bem-sucedido e o uso do SDK do Navigation.

Atualizar propriedades locais

  • Na pasta Gradle Scripts, abra o arquivo local.properties e adicione android.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 do Navigation e considere definir as opções de otimização também.

    Configurações necessárias para o SDK do Navigation

    1. Defina minSdkVersion como 24 ou mais recente.
    2. Defina targetSdkVersion como 36 ou mais recente.
    3. Adicione uma configuração dexOptions que aumente o javaMaxHeapSize.
    4. Defina o local para outras bibliotecas.
    5. Adicione repositories e dependencies para o SDK do Navigation.
    6. 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 levar muito tempo 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 resConfigs para um idioma durante o desenvolvimento. Para o build final, defina resConfigs para os idiomas que você realmente usa. Por padrão, o Gradle inclui strings de recursos para todos os idiomas com suporte no SDK do Navigation.

    Adicionar desaçucaramento para suporte ao 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. Consulte o exemplo de snippet de script de build abaixo para saber como compilar e opções de dependência.
    • Para a versão 7.3.0 e mais recentes do Android, é necessário usar o Gradle 8.11.1, o Plug-in do Android para Gradle versão 8.10.0 e a biblioteca Desugar com.android.tools:desugar_jdk_libs_nio:2.0.3.
    • A biblioteca Desugar precisa ser ativada para o módulo app e qualquer módulo que dependa diretamente do SDK do Navigation.

Confira abaixo um exemplo do script de build do Gradle para o aplicativo. Consulte os apps de exemplo para conjuntos atualizados de dependências, já que a versão do SDK do 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.0.3'
}

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. Para saber mais sobre o arquivo secrets.properties, consulte Arquivos de propriedades do Gradle.

Se quiser otimizar 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:

  1. No Android Studio, abra o arquivo build.gradle no nível raiz e adicione o seguinte código ao elemento dependencies em buildscript.

    Groovy

    buildscript {
        dependencies {
            // ...
            classpath "com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin:2.0.1"
        }
    }

    Kotlin

    buildscript {
        dependencies {
            // ...
            classpath("com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin:2.0.1")
        }
    }
  2. Abra o arquivo build.gradle no nível do app e adicione o seguinte código ao plugins elemento.

    Groovy

    plugins {
        id 'com.android.application'
        // ...
        id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin'
    }

    Kotlin

    plugins {
        id("com.android.application")
        // ...
        id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin")
    }
  3. Se você usa o Android Studio, sincronize seu projeto com o Gradle.
  4. Abra o local.properties no diretório do nível do projeto e adicione o seguinte código. Substitua YOUR_API_KEY pela sua chave de API.
    MAPS_API_KEY=YOUR_API_KEY
  5. Você pode adicionar a chave de API ao arquivo AndroidManifest.xml ou fornecê-la de forma programática.
    • Adicione a chave de API ao 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 do Navigation para Android. Para garantir a compatibilidade com versões anteriores, a API também aceita o nome com.google.android.maps.v2.API_KEY. Esse nome herdado 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étodo Application.onCreate()), chame o método da seguinte maneira:

      Kotlin

      1. Adicione as seguintes declarações de importação:
        import com.google.android.libraries.navigation.NavigationApi
      2. Adicione o seguinte ao método Application.onCreate():
        NavigationApi.setApiKey(BuildConfig.MAPS_API_KEY)

      Java

      1. Adicione as seguintes declarações de importação:
        import com.google.android.libraries.navigation.NavigationApi;
      2. Adicione o seguinte ao método Application.onCreate():
        NavigationApi.setApiKey(BuildConfig.MAPS_API_KEY);
      Observação:ao usar setApiKey(), 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 uma IllegalStateException se for chamado mais de uma vez.
      • Chame setApiKey() antes de inicializar outros componentes do SDK do Navigation, como Navigator.
      • A chave fornecida com esse método substitui qualquer chave de API no seu AndroidManifest.xml.
      • Use o SDK do Navigation versão 7.6 ou mais recente.

Incluir as atribuições necessárias no seu app

Se você usa o SDK do Navigation 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.

Você pode encontrar o texto de atribuição necessário e as licenças de código aberto no arquivo ZIP do SDK do Navigation para Android:

  • NOTICE.txt
  • LICENSES.txt

Se você for um cliente do Mobility ou do Fleet Engine Deliveries

Se você for um 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).