AndroidStudio之百度地图——集成SDK
前言:第一次使用百度地图,捣鼓了2天,需要不知所里,但还是庆幸阴差阳错地弄好了。网络上有太多的文章,但都没有太多的用处,很容易误导第一次使用百度地图的新手。百度地图的SDK文档与API有点牛头不对马嘴,更新不及时。因为项目中会用到很多百度地图的东西,所以记录一下自己使用的一些心得,这将会是一系列的文章。非喜勿喷,谢谢!
一、注册账号并创建应用(这个百度的文档写得很清楚,就不累述)
二、下载开发包
在开发文档中,提供了5个SDK(地图、定位、鹰眼轨迹、导航、全景),选择自己想要的,可以下载开发包或示例代码,其实下载开发包就好了,现在应用无法分包(部分市场限制分包应用的上传),前期工作准备好了,就开始集成SDK之路吧!!!
三、配置build.gradle文件
在app目录下的build.gradle文件中配置如下代码,具体位置看图中红线框的内容
multiDexEnabled true
javaCompileOptions { annotationProcessorOptions { includeCompileClasspath = true } }
implementation 'com.android.support:multidex:1.0.3'
四、导入JAR包和SO库(比较迷惑人,网络上的东西适合旧版本)
将上面下载好的开发包解压,里面含有BaiduNavi_AndroidSDK.zip、libs和readme.txt等3个文件或文件夹,JAR包和so库都在libs文件夹中,使用AndroidStudio开发的童鞋都知道,JAR包放在项目app的libs目录下,而so库放在main目录的jniLibs目录下,如果没有jniLibs目录就创建一个,第一个问题就来了,把so库放在main的jniLibs目录下,运行应用时,直接闪退,提示找不到某些类(错误的日志没有截图),所以这里需要把so库放到app的libs目录下,即把下载的开发包中的libs直接复制app目录下,具体如下图(网上很多文章说在build.gradle文件中配置jniLibs.srcDirs=['libs'],结果...呵呵)
五、混淆文件
百度文档和网上的文章都有提到,搞了几年的Android开发了,也没有系统的去了解过混淆文件怎么个语法,基本都是直接copy过来用,网络上直接copy过来
-keep class com.baidu.**{*;}
-dontwarn om.baidu.**
-keep class vi.com.gdi.bgl.android.java.** {*;}
-dontwarn vi.com.gdi.bgl.android.java.**
百度的就这4句代码,添加进去后,运行,然并卵啊......打开刚刚导入的BaiduLBS_Android.jar,发现里面没有vi.com.gdi.bgl.android.java,而是mapsdkvi.com.gdi.bgl.android.java
修改了混淆文件后,一切都ok了,运行一下,通畅无阻
六、BaiduNavi_AndroidSDK.zip
百度地图SDK集成完成了???
细心的童鞋会发现下载的开发包中只用了libs文件夹的东西,而BaiduNavi_AndroidSDK.zip压缩包还没有用勒,而且搜索集成时,网络上都会继续讲怎么弄onesdk_all和NaviTts,而本人也是这么误导的,把文章翻来覆去的看,都快倒背如流了,集成了运行失败,删除后,再集成运行,还是失败,然后就烦躁了,就这么捣鼓了2天,总是编译不过。
无论是能查到的文章还是百度的官方文档,都有提到这块的配置,一旦配置了,项目就没法编译,不配置这个,项目运行正常,所以大胆猜测:在旧版的百度地图SDK集成中,要用导航时,是需要配置的,而现在现在的新本中,是不需要配置这些了,当然还需要后面去验证一下。
总结:
百度地图SDK集成,其实就2点,第一选择你要的SDK(地图、定位、鹰眼轨迹、导航、全景),解压后将libs复制到app下的libs目录下,第二配置build.gradle文件,至于BaiduNavi_AndroidSDK.zip这些不用管。