项目配置

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

使用 Navigation SDK 的最低要求

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

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

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

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

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

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

要进行设置

  1. 在您喜爱的网络浏览器(例如 Chrome)中,登录 Google Cloud Console 并创建 Google Cloud Console 项目。
  2. 在您的 IDE(例如 Android Studio)中,创建一个 Android 应用开发项目并记下软件包名称。
  3. 如需为您的 Google Cloud 控制台项目提供 Navigation SDK 的访问权限,请与您的 Google Maps Platform 代表联系。
  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. 添加用于增加 javaMaxHeapSizedexOptions 设置。
    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

下一步

了解如何绘制路线