Configurar seu projeto do Android Studio

O SDK do Navigation está disponível pelo Maven. Depois criar seu projeto de desenvolvimento, é possível integrar o SDK a ele usando uma das abordagens a seguir.

O código a seguir usa o repositório Maven google(), que é o mais simples e recomendada de adicionar o SDK do Navigation ao projeto.

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

    Gradle

    Adicione o código abaixo 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 alguma dependência que use o SDK do Maps, exclua o em cada dependência declarada que depende do SDK do Maps.

    Gradle

    Adicione o seguinte à sua 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'
            }
        }
    }
    

    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>
    

Configure o build

Depois de criar o projeto, você pode definir as configurações para uma build e uso bem-sucedidos 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 seguintes diretrizes para atualizar as configurações a fim de atender aos requisitos da SDK do Navigation e considere configurar opções de otimização.

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

    1. Defina minSdkVersion como 23 ou maior.
    2. Defina targetSdkVersion como 33 ou maior.
    3. Adicione uma configuração dexOptions para aumentar o javaMaxHeapSize.
    4. Defina o local de outras bibliotecas.
    5. Adicione repositories e dependencies ao SDK do Navigation.
    6. Substitua os números de versão nas dependências pelas informações mais recentes. mais recentes disponíveis.

    Configurações opcionais para diminuir o tempo de build

    • Ative a redução de código e encolhimento usando o R8/ProGuard para remover código e recursos não utilizados das dependências. Se a etapa R8/ProGuard demorar muito tempo para ser executada, ative multidex para desenvolvimento de software.
    • Reduzir o número de idiomas traduzidos no build: definir resConfigs para uma linguagem 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 suportados pelo SDK do Navigation.

    Adicionar simplificação para oferecer suporte ao Java8

    • Se você estiver criando seu app usando o Plug-in do Android para Gradle 4.0.0 ou superior, o plug-in estende o suporte para o uso de diversas linguagens Java 8 APIs de terceiros. Consulte Simplificação do Java 8 suporte para mais informações. Confira o exemplo de snippet de script de build abaixo opções de compilação e dependência.

Confira abaixo um exemplo do script de build do Gradle para o aplicativo. Consulte o aplicativos de exemplo para conjuntos atualizados de dependências, como a versão do O SDK do Navigation que você está usando pode estar um pouco adiantado ou por trá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 33
        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:1.1.9'
}

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.

    Kotlin

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

    Groovy

    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 o código a seguir ao elemento plugins.

    Kotlin

    plugins {
        // ...
        id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin")
    }

    Groovy

    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 para 34.
  4. Salve o arquivo e 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.
    NAV_API_KEY=YOUR_API_KEY
  6. Salve o arquivo.
  7. 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.

    NAV_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.

  8. Salve o arquivo.
  9. 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ários APIs do Google Maps na plataforma Android, incluindo as SDK do Navigation para Android. Para garantir a compatibilidade com versões anteriores, a API também suporta o nome com.google.android.maps.v2.API_KEY. O fluxo de trabalho permite a 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 gera uma exceção.

  10. No Android Studio, abra o nível do módulo build.gradle.kts ou build.gradle e edite a propriedade secrets. Se o A propriedade secrets não existe, adicione-a.

    Edite as propriedades do plug-in para definir propertiesFileName como secrets.properties, defina defaultPropertiesFileName como local.defaults.properties e defina 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 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"
    
        // Configure which keys should be ignored by the plugin by providing regular expressions.
        // "sdk.dir" is ignored by default.
        ignoreList.add("keyToIgnore") // Ignore the key "keyToIgnore"
        ignoreList.add("sdk.*")       // Ignore all keys matching the regexp "sdk.*"
    }
            

    Groovy

    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"
    
        // Configure which keys should be ignored by the plugin by providing regular expressions.
        // "sdk.dir" is ignored by default.
        ignoreList.add("keyToIgnore") // Ignore the key "keyToIgnore"
        ignoreList.add("sdk.*")       // Ignore all keys matching the regexp "sdk.*"
    }
            

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

Se você usa o SDK do Navigation para Android no seu app, é necessário incluir texto de atribuição e licenças de código aberto como parte dos avisos legais do seu app nesta seção.

Encontre o texto de atribuição necessário e as licenças de código aberto na Arquivo ZIP do SDK do Navigation para Android:

  • NOTICE.txt
  • LICENSES.txt

Se você é cliente de mobilidade ou entregas de frotas

Se você é cliente de mobilidade ou entregas de motores de frotas, saiba mais sobre na documentação do Mobility. Para mais informações sobre registrar transações, consulte configurar o faturamento; Registrar transações faturáveis, Relatórios Registrar transações faturáveis (Android).