全部服务产品
开发者频道
定价
登录
工程配置与SDK集成
下载开发文档
1. 权限说明
<!--用于访问网络,网络定位需要上网-->
<uses-permission android:name="android.permission.INTERNET" />
<!--用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!--用于访问系统接口提供的卫星定位信息-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!--获取运营商信息,用于支持提供运营商信息相关的接口-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!--用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<!--用于访问wifi网络信息,wifi信息会用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!--写入扩展存储,向扩展卡写入数据,用于写入缓存定位数据和日志-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!--⽤于百度导航SDK TTS播报和来电去电的互斥策略略-->
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

对于Android6.0及以上系统,还需要动态申请READ_PHONE_STATE权限,用于百度导航SDK TTS播报和来电去电的互斥策略。

2. 导航SDK核心集成

导航SDK核心已经打包为一个独立的aar,命名为onsdk_all.aar,可以将其以aar module引入集成APP project,引入后,即可引用导航SDK相关类进行开发。

dependencies {
……
implementation project(':onsdk_all')
……
}
3. 导航SDK依赖库集成

导航SDK目前依赖库主要包含两方面:第三方库和百度其他库。目前这些库在提供时都是以jar包提供,实际集成时,对于第三方库,也可以采用gradle自身的引用方式。图中圈住的为百度库,其他为第三方库。

对于百度其他库,如百度授权SDK(lbsCoreSDK.jar),因为APP可能同时集成了百度地图和百度导航sdk,那么它们可能同时集成引入这些库,所以当编译出现Class重复时,可找到重复的Class所在的jar包,并且将该jar包移除,避免冲突。

对于第三方库,在引入时可尽量引入比较新的版本,因为旧的版本可能会导致百度导航内部找不该api报错。

除了上图的库,百度导航SDK还需要引入2个库,分别是recyclerview-v7包和apache包,引入方式如下:

android {
// apache包
useLibrary 'org.apache.http.legacy'
……
}
dependencies {
……
// recyclerview-v7包
compile 'com.android.support:recyclerview-v7:27.0.2'
……
}
4. 导航SDK自带TTS集成

导航SDK自带TTS能力已经打包为一个独立的aar,命名为NaviTts.aar,可以将其以aar module引入集成APP project,引入后,可以利用导航SDK提供的TTS接口进行初始化。

android {
dependencies {
……
implementation project(':NaviTts')
……
}

当不需要导航SDK自带TTS时,可以不进行集成,此时需要利用导航SDK支持外部TTS的方式进行TTS能力初始化。

5. SDK和TTS授权申请配置

这里包括SDK授权和TTS授权两部分,申请时先申请SDK授权,再申请TTS授权,具体授权申请方式如下。

SDK授权申请

1. 准备材料
1) apk包名
2) apk签名sh1
2.登录https://lbs.baidu.com/apiconsole/key申请
更详细的过程可参考说明:https://lbs.baidu.com/index.php?title=android-navsdk/guide/key
3.记得将申请的key按照上述说明,在工程Manifest文件中进行配置,否则导航SDK将处于功能不可用状态

TTS授权申请

1. 以SDK授权申请时相同账号登录https://console.bce.baidu.com/ai/?fromai=1#/ai/speech/overview/index,输入SDK授权时的账号密码。
2. 点击页面中"创建应用"

3. 进入创建页面后填入应用名称和对应的包名

4.主工程的build.gradle文件在Project目录中位置:

至此,和导航SDK集成相关的授权申请就完成了。

6. so库的集成

在 main 目录下创建文件夹 jniLibs (如果有就不需要创建了),将下载文件的 armeabi 文件夹复制到这个目录下,如果已经有这个目录,将下载的 so 库复制到这个目录即可。如图所示:

7. Android Studio配置与Gradle配置

为了避免Android "64K 引用限制"引起的异常,在app的build.gradle中需要引入multidex包,并进行相关配置,并且导航SDK内部使用了annotationProcessor,同样需要在build.gradle中配置,如下:

defaultConfig {
……
// 避免"64K 引用限制"
multiDexEnabled true
// 导航SDK内部使用了annotationProcessor,需要添加下面代码,防止编译异常
javaCompileOptions { annotationProcessorOptions { includeCompileClasspath = true } }
}
8. 代码混淆
# BaiduNavi SDK
-dontoptimize
-ignorewarnings
-keeppackagenames com.baidu.**
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,LocalVariable*Table,*Annotation*,Synthetic,EnclosingMethod
-dontwarn com.baidu.**
-dontwarn com.baidu.navisdk.**
-dontwarn com.baidu.navi.**
-keep class com.baidu.** { *; }
-keep interface com.baidu.** { *; }
-keep class vi.com.gdi.** { *; }
-dontwarn com.google.protobuf.**
-keep class com.google.protobuf.** { *;}
-keep interface com.google.protobuf.** { *;}
-dontwarn com.google.android.support.v4.**
-keep class com.google.android.support.v4.** { *; }
-keep interface com.google.android.support.v4.app.** { *; }
-keep public class * extends com.google.android.support.v4.**
-keep public class * extends com.google.android.support.v4.app.Fragment

上一篇

使用准备

下一篇

导航SDK初始化

本篇文章对您是否有帮助?