Configurar seu projeto do Android Studio

Esta página explica como integrar o SDK Navigation ao seu projeto de desenvolvimento.

Adicionar o SDK de navegação ao projeto

O SDK de navegação está disponível no repositório Maven do Google. É possível adicionar o SDK ao projeto usando a configuração build.gradle do Gradle ou pom.xml do Maven.

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

    Adicione o seguinte ao build.gradle no nível do módulo:

    dependencies {
            ...
            implementation 'com.google.android.libraries.navigation:navigation:VERSION_NUMBER'
    }
    

    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.

    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. This is to ensure 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'
                }
            }
    }
    

    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>
    

Configure o build

Depois de criar o projeto, é possível definir as configurações para criar e usar o SDK de navegação.

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 abaixo para atualizar as configurações e atender aos requisitos do SDK Navigation. Também considere definir as opções de otimização.

    Configurações obrigatórias para o SDK do Navigation

    1. Defina minSdkVersion como 23 ou mais recente.
    2. Defina targetSdkVersion como 34 ou mais recente.
    3. Adicione uma configuração dexOptions que aumente o javaMaxHeapSize.
    4. Defina o local para outras bibliotecas.
    5. Adicione o repositories e o dependencies para o SDK de navegação.
    6. Substitua os números de versão nas dependências pelas versões mais recentes.

    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 trabalhos de desenvolvimento.
    • Reduza o número de traduções de idioma 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 aceitos pelo SDK de navegação.

    Adição de simplificação para suporte ao Java8

    • 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 para dessugaramento do Java 8 para mais informações. Confira o exemplo de snippet de script de build abaixo para saber como fazer a compilação e as opções de dependência.
    • Recomendamos o uso do Gradle 8.4, do Plug-in do Android para Gradle versão 8.3.0 e da biblioteca Desugar com.android.tools:desugar_jdk_libs_nio:2.0.3. Essa configuração é compatível com o SDK de navegação para Android versão 6.0.0 e mais recentes.
    • A biblioteca Desugar precisa ser ativada para o módulo app e qualquer módulo que dependa diretamente do SDK Navigation.

Confira abaixo um exemplo do script de build do Gradle para o aplicativo. Verifique os apps de exemplo para conferir conjuntos atualizados de dependências, já que a versão do SDK 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 esse plug-in no seu projeto do Google Maps:

  1. No Android Studio, abra o arquivo de nível superior build.gradle.kts ou build.gradle e adicione o seguinte código ao elemento dependencies em buildscript.
    buildscript {
        dependencies {
            classpath("com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin:2.0.1")
        }
    }
    buildscript {
        dependencies {
            classpath "com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin:2.0.1"
        }
    }
  2. Abra o arquivo build.gradle.kts ou build.gradle no nível do módulo e adicione este código ao elemento plugins.
    plugins {
        // ...
        id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin")
    }
    plugins {
        // ...
        id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin'
    }
  3. No arquivo build.gradle.kts ou build.gradle no nível do módulo, verifique se targetSdk e compileSdk estão definidos como 34.
  4. Sincronize seu projeto com o Gradle.
  5. Abra o arquivo secrets.properties no seu diretório de nível superior e adicione o código a seguir. Substitua YOUR_API_KEY pela sua chave de API. Armazene sua chave nesse arquivo porque secrets.properties não é verificado em um sistema de controle de versões.
    MAPS_API_KEY=YOUR_API_KEY
  6. Crie o arquivo local.defaults.properties no seu diretório de nível superior, na mesma pasta que o arquivo secrets.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 da API se o arquivo secrets.properties nã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 omite secrets.properties e ainda não tiver criado um arquivo secrets.properties localmente para fornecer sua chave de API.

  7. No seu arquivo AndroidManifest.xml, vá até com.google.android.geo.API_KEY e atualize android:value attribute. Se a tag <meta-data> não existe, crie-a como um elemento filho da tag <application>.
    <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 nome com.google.android.maps.v2.API_KEY. Esse nome legado permite autenticação apenas na API Android Maps v2. Um aplicativo pode especificar apenas um dos nomes de metadados da chave de API. Se ambos forem especificados, a API vai gerar uma exceção.

  8. No Android Studio, abra o arquivo build.gradle.kts ou build.gradle no nível do módulo e edite a propriedade secrets. Se a propriedade secrets não existir, adicione-a.

    Edite as propriedades do plug-in para definir propertiesFileName como secrets.properties, defaultPropertiesFileName como local.defaults.properties e outras propriedades.

    secrets {
        // To add your Maps API key to this project:
        // 1. If the secrets.properties file does not exist, create it in the same folder as the 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"
    }
            
    secrets {
        // To add your Maps API key to this project:
        // 1. If the secrets.properties file does not exist, create it in the same folder as the 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 Navigation para Android no seu app, é necessário 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 Navigation para Android:

  • NOTICE.txt
  • LICENSES.txt

Se você for cliente da Mobility ou da Fleet Engine Deliveries, saiba mais sobre faturamento na documentação da Mobility. Para mais informações sobre a gravação de transações, consulte Configurar o faturamento, Gravar transações faturáveis, Relatórios e Gravar transações faturáveis (Android).