<uses-permissionandroid:name="android.permission.internet"/><uses-permissionandroid:name="android.permission.access_coarse_location"/><uses-permissionandroid:name="android.permission.access_fine_location"/><uses-permissionandroid:name="android.permission.access_network_state"/><uses-permissionandroid:name="android.permission.change_wifi_state"/><uses-permissionandroid:name="android.permission.access_wifi_state"/><uses-permissionandroid:name="android.permission.write_external_storage"/><uses-permissionandroid:name="android.permission.read_phone_state"/>
对于android6.0及以上系统,还需要动态申请read_phone_state权限,用于百度导航sdk tts播报和来电去电的互斥策略。
导航sdk核心已经打包为一个独立的aar,命名为onsdk_all.aar,可以将其以aar module引入集成app project,引入后,即可引用导航sdk相关类进行开发。
dependencies {……implementation project(':onsdk_all')……}
导航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'……}
导航sdk自带tts能力已经打包为一个独立的aar,命名为navitts.aar,可以将其以aar module引入集成app project,引入后,可以利用导航sdk提供的tts接口进行初始化。
android {dependencies {……implementation project(':navitts')……}
当不需要导航sdk自带tts时,可以不进行集成,此时需要利用导航sdk支持外部tts的方式进行tts能力初始化。
这里包括sdk授权和tts授权两部分,申请时先申请sdk授权,再申请tts授权,具体授权申请方式如下。
1. 准备材料
1) apk包名
2) apk签名sh1
2.登录申请
更详细的过程可参考说明:
3.记得将申请的key按照上述说明,在工程manifest文件中进行配置,否则导航sdk将处于功能不可用状态
1. 以sdk授权申请时相同账号登录,输入sdk授权时的账号密码。
2. 点击页面中"创建应用"
3. 进入创建页面后填入应用名称和对应的包名
4.主工程的build.gradle文件在project目录中位置:
至此,和导航sdk集成相关的授权申请就完成了。
在 main 目录下创建文件夹 jnilibs (如果有就不需要创建了),将下载文件的 armeabi 文件夹复制到这个目录下,如果已经有这个目录,将下载的 so 库复制到这个目录即可。如图所示:
为了避免android "64k 引用限制"引起的异常,在app的build.gradle中需要引入multidex包,并进行相关配置,并且导航sdk内部使用了annotationprocessor,同样需要在build.gradle中配置,如下:
defaultconfig {……// 避免"64k 引用限制"multidexenabled true// 导航sdk内部使用了annotationprocessor,需要添加下面代码,防止编译异常javacompileoptions { annotationprocessoroptions { includecompileclasspath =true}}}
# baidunavisdk-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 classcom.baidu.**{*;}-keep interfacecom.baidu.**{*;}-keep classvi.com.gdi.**{*;}-dontwarn com.google.protobuf.**-keep classcom.google.protobuf.**{*;}-keep interfacecom.google.protobuf.**{*;}-dontwarn com.google.android.support.v4.**-keep classcom.google.android.support.v4.**{*;}-keep interfacecom.google.android.support.v4.app.**{*;}-keep publicclass*extendscom.google.android.support.v4.**-keep publicclass*extendscom.google.android.support.v4.app.fragment
上一篇
下一篇
本篇文章对您是否有帮助?