百度地图导航采坑——Engine init failed

最近在做百度地图相关项目,其中涉及到定位和导航两个不同业务模块的整合。其中定位是之前的,导航是最近新增加的。

!!!注意:按照官方文档来是完全不够的,一定要根据Demo的实际使用来导入使用

众所周知,百度地图开发平台的文档简直不忍直视,要啥啥没有,完全只能参照着Demo进行一步步排错。


由于之前项目中依赖了百度定位的包,BaiduLBS_Android.jar这东西是最坑的!! 没有之一!! 它会根据你选择的功能不同包含不同的类,但同时官网也没有给出具体哪些类在哪些功能中是有重复出现的,这就会导致你在使用不同功能集成的时候出现问题!!由于定位中存在一个类 CommomParam 这个类在后面初始化导航引擎的时候会有用。 但!!这个类不止这里有!!WC!!

image-20200620153945943

在导航的jar包中你还会发现一模一样的类,这个是包名都一样,所以在编译的时候就会告诉你重复了,需要删除一个:

image-20200620154400150

不知道你们注意到没有,这里有两个名字非常相似的jar包,第一个就是和定位重复的功能jar包,删除掉!但,底下的这个是干嘛的???看着名字,会不会也和定位冲突了?进去看看呗。

image-20200620154625740

好家伙,不看不知道,一看xxxxx,这里还藏一个?一起删了呗?你删不删?你说你删不删?反正我当时看到就一起删了!!

然后一顿撸代码,完事收工运行发现一直在导航引擎初始化的时候失败!!然后log里面就直接甩给你一个RuntimeException:engine init failed ,报错地方在下图:

image-20200620154958825

为什么会报错呢?跟踪进去看看!一路走下去,会发现这么一个神奇的事情:

image-20200620155130358

CommonParam类无法进去?What?你自己的sdk内部的类找不到?Debug调试的时候也会发现在这里就直接报错退出了,并告诉你 com.baidu.android.common.util.CommonParam这个类找不到!我勒个打草啊!!重新从Demo中拷贝一份对应的jar包导入就好了!心累~!!