项目配置

本指南列出了使用 Navigation SDK for Android 的 build 配置要求。以下说明假定您已安装 Android IDE 并且熟悉 Android 开发。

使用 Navigation SDK 的最低要求

  • 启用了 Navigation SDK 的 Google Cloud 控制台项目。如需配置,请咨询您的 Google Maps Platform 代表。

  • 您的应用必须以 Navigation SDK(版本 16)或更高版本为目标平台。

  • 如需运行使用 Navigation SDK 构建的应用,Android 设备必须安装并启用 Google Play 服务

  • 必须在应用中添加提供方说明和许可文字。

设置项目:Google Cloud 控制台项目和 Android 项目

您需要先创建一个 Cloud 控制台项目并添加 API 密钥凭据,然后才能构建或测试应用。项目必须配置才能访问 Navigation SDK。Cloud 控制台项目中的所有键都拥有与 Navigation SDK 相同的访问权限。一个密钥可以有多个与之关联的开发项目。如果您已有控制台项目,则可以向当前项目添加一个密钥。

要设置

  1. 在您偏好的网络浏览器(例如 Chrome)中,登录 Google Cloud 控制台并创建您的 Google Cloud 控制台项目。
  2. 在您的 IDE(例如 Android Studio)中,创建一个 Android 应用开发项目并记下软件包名称。
  3. 请与您的 Google Maps Platform 代表联系,请其为您的 Google Cloud 控制台项目提供 Navigation SDK 的访问权限。
  4. 在网络浏览器中的 Google Cloud 控制台信息中心内,创建凭据以生成设有限制的 API 密钥。
  5. “API 密钥”页面上,点击 *应用限制区域的“Android 应用”。
  6. 点击添加软件包名称和指纹,然后输入开发项目的软件包名称以及该密钥的 SHA-1 指纹。
  7. 点击保存

将 Navigation SDK 添加到您的应用

Navigation SDK 以 aar 软件包的形式提供。创建开发项目后,您可以集成 SDK。以下说明假定您的 IDE 使用的是 Android Studio。

  1. 下载并解压缩 Navigation SDK zip 文件。

  2. Android Studio 中,打开项目并使用 SDK 管理器添加 Google Play 服务软件包

  3. 从 zip 文件目录中,将 libs/google_navigation.aar 复制到项目的 app/libs 目录中。

配置构建

创建项目后,您可以配置设置,以便成功构建和使用 Navigation SDK。

更新本地媒体资源

  • Gradle Scripts 文件夹中,打开 local.properties 文件并添加 android.useDeprecatedNdk=true

更新 Gradle 构建脚本

  • 打开 build.gradle (Module:app) 文件,并按照以下准则更新设置以满足 Navigation SDK 的要求,并考虑设置优化选项。

    Navigation SDK 的必需设置

    1. minSdkVersion 设为 16 或更高版本。
    2. 为 API 21 设置“targetSDKversion”可将权限处理转移给该 API。 对于以前的版本,您需要在应用中明确包含权限流程。
    3. 添加 dexOptions 设置,以增加 javaMaxHeapSize
    4. 设置其他库的位置。
    5. 为 Navigation SDK 添加 repositoriesdependencies
    6. 将依赖项中的版本号替换为最新的可用版本。

    可缩短构建时间的可选设置

    • 缩短应用的构建时间
    • 如需优化依赖项的使用,请启用 ProGuard资源缩减。Proguard 会从依赖项中移除未使用的代码和资源。如果 ProGuard 步骤的运行时间过长,请考虑启用 MultiDex 以进行开发工作。
    • 减少 build 中包含的翻译语言数量。在开发过程中为一种语言设置 resConfigs。对于最终 build,请根据您实际使用的语言设置“resConfigs”。默认情况下,Gradle 包含 Navigation SDK 支持的所有语言的资源字符串。

以下是应用的 Gradle 构建脚本示例。

  
  apply plugin: 'com.android.application'

  ext {
      supportVersion = "27.1.1"
      lifecycle_version = "1.1.1"
  }

  android {
      compileSdkVersion 27
      buildToolsVersion '28.0.3'

      defaultConfig {
          applicationId "com.example.navigationapidemo"
          minSdkVersion 16
          targetSdkVersion 27
          versionCode 1
          versionName "1.0"
          resConfigs "en"
      }

      dexOptions {
          // This increases the amount of memory available to the dexer. This is
          // required to build apps using the Navigation SDK.
          javaMaxHeapSize "4g"
      }
      buildTypes {
          all {
              minifyEnabled true
              proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
          }
      }
      compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
      }
  }

  // Specify where to find additional libraries and the location of google_navigation.aar file.
  repositories {
      flatDir {
          dirs 'libs'
      }
      google()
  }
  dependencies {
      api fileTree(include: ['*.jar'], dir: 'libs')

      // Include the Google Navigation API library
      api(name: 'google_navigation', ext: 'aar')

      // These dependencies are required for the Navigation API to function
      // properly at runtime.
      api "org.chromium.net:cronet-fallback:69.3497.100"
      // Optional for Cronet users:
      // api "org.chromium.net:cronet-api:69.3497.100"
      api "com.android.support:appcompat-v7:${supportVersion}"
      api "com.android.support:cardview-v7:${supportVersion}"
      api "com.android.support:design:${supportVersion}"
      api "com.android.support:mediarouter-v7:${supportVersion}"
      api "com.android.support:preference-v7:${supportVersion}"
      api "com.android.support:recyclerview-v7:${supportVersion}"
      api 'com.github.bumptech.glide:glide:4.9.0'
      api 'com.github.bumptech.glide:okhttp-integration:4.9.0'
      api "android.arch.lifecycle:common-java8:$lifecycle_version"
      api 'com.google.android.datatransport:transport-api:2.2.0'
      api 'com.google.android.datatransport:transport-backend-cct:2.2.0'
      api 'com.google.android.datatransport:transport-runtime:2.2.0'
      api 'joda-time:joda-time:2.9.9'

      // The Navigation SDK does not require the
      // Places API; however, the demo app for does.
      api 'com.google.android.gms:play-services-places:10.2.1'

      annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'
  }

更新应用的清单

  1. 清单文件夹中,打开 AndroidManifest.xml 文件。

  2. <application> 元素中添加您的 API 密钥。您必须使用在上文步骤中所述的 Google Cloud 控制台项目中定义的 API 密钥。

    在此示例所示的部分清单中,您可以将 YOUR_API_KEY 替换为您自己的 API 密钥:

          <meta-data
              android:name="com.google.android.geo.API_KEY"
              android:value="YOUR_API_KEY"/>
    

    下面的完整清单显示了 API 密钥的设置,以及启动时运行的 MainActivity 的空 intent

    
      <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.example.navigationapidemo" >
    
          <application
              android:allowBackup="true"
              android:icon="@mipmap/ic_launcher"
              android:label="@string/app_name"
              android:supportsRtl="true"
              android:theme="@style/_AppTheme" >
    
              <meta-data
                  android:name="com.google.android.geo.API_KEY"
                  android:value="YOUR_API_KEY"/>
    
              <activity android:name=".MainActivity" >
                  <intent-filter>
                      <action android:name="android.intent.action.MAIN" />
                      <category android:name="android.intent.category.LAUNCHER" />
                  </intent-filter>
              </activity>
          </application>
        </manifest>
    
        ```
    

在您的应用中添加必要的提供方说明

如果您在应用中使用 Navigation SDK for Android,则必须在应用的法律声明部分包含提供方说明文本和开源许可。

您可以在 Navigation SDK for Android 的 ZIP 文件中找到所需的提供方说明文本和开源许可:

  • NOTICE.txt
  • LICENSES.txt

后续步骤

了解如何绘制路线