你知道吗?我就导入个SDK就花了2天时间,因为百度根本搜不到啊,当我导入成功的时候兴奋的想把楼给拆了。

这里不讲申请密钥和开发版发布版SHA1的问题,百度一搜一箩筐到处都是,申请密钥和开发版发布版SHA1等问题只会导致写的代码没办法实现定位和导航等功能,但是导包问题直接决定编译是否通过。这里就讲一点自己的经历,百度搜不到的经验

关于开发版和发布版SHA1也可以看我另一篇博客https://blog.csdn.net/qq_34115899/article/details/80455874

========================================

如果你导入导航SDK成功,那么导入比如

import com.baidu.navisdk.adapter.impl.BaiduNaviManager;之类的包是可以的

如果发现上面的包加上去是红色的,发现根本没有这个包,那么你就没有导入成功!

==============================================================

官方文档纯属见鬼,只有工作经验的人有过经历的人才看得懂,完全不是写给平民小白看的

来,先和我一样干了这杯小白的酒,默默留下了没技术泪水!!


先从百度定位SDK入手,请耐心看!!!

我的下载是定位包加上驾车导航(含TTS)

然后解压:

这个libs就是定位所需SDK,这一部分很简单,百度搜的到


就是将里面的BaiduLBS_Android.jar放在app目录下的libs目录,复制粘贴就可以,如果app目录下没libs,那就创建一个粘贴进去就可以啦~

接着在src/main目录下右击->New->Directory,再创建一个jniLibs目录


这里就是专门用来放so文件的

其余的arm64-v8a,armeabi,armeabi-v7a,x86,x86_64复制粘贴到jniLibs就可以啦



====================================================

前面都是小儿科,大家都会,百度也搜得到,到这一步导入定位的SDK就完成了。

经过我的2天的多次尝试,要解决在此基础上导入BaiduNavi_AndroidSDK文件夹里面的内容就不简单了

需要四步:

步骤一:

在项目文件夹打开settings.gradle文件,就是最外层的那个

修改里面的内容为

include ':app', ':onsdk_all', ':NaviTts'

步骤二:

下载官方示例代码:

这里的最新版本是BaiduNavi_AndroidSDK_v4.1.0_Sample

打开目录到BaiduNavi_AndroidSDK_v4.1.0_Sample\BaiduNavi_AndroidSDK_v4.1.0_Sample\ONSDKDemo

然后看到


把这2个目录复制粘贴到自己工程的最外层



步骤三:

还记得上面讲的吗?


打开导航SDK,里面有jniLibs目录,把这个目录下的内容复制到自己刚刚在src/main下面创建的jniLibs目录下,因为是不同文件,所以不会有覆盖提示的。如图


然后再把除了armeabi以外的'x86', 'x86_64', 'armeabi-v7a', 'arm64-v8a'全部删掉,因为后面编译的时候可能会出现错误,删掉之后就能正常运行了。


再把libs文件夹下的jar包都复制粘贴到app/libs下面


就是上述这些

记得删掉galaxy_lite_lbs_v2.0.jar,除了这些,其他的都导入进去

因为galaxy_lite_lbs_v2.0.jar和galaxy_lite.jar有的东西是重复的,

编译会报错Error:Execution failed for task ':APP:transformClassesWithDexForDebug'

完成之后效果如图:


步骤四:

最后也是重要的一步,否则前面都不生效

app目录下有个build.gradle文件,打开


defaultConfig 里面加上  
multiDexEnabled true
javaCompileOptions { annotationProcessorOptions { includeCompileClasspath = true } }
 
如果不加上第二句
javaCompileOptions { annotationProcessorOptions { includeCompileClasspath = true } }
那么打包Generate Signed APK时,会报如下错误:
Annotation processors must be explicitly declared now.  
The following dependencies on the compile classpath are found to contain annotation processor. 
Please add them to the annotationProcessor configuration.
- nirvana-network-annotation-0.2.0.jar (project :onsdk_all)

接着加上这3句话


dependencies里面加上

implementation 'com.android.support:multidex:1.0.3' implementation project(':onsdk_all')
implementation project(':NaviTts')

最后Syns Now,或者点击如图按钮,大功告成


接着导入这些包用这些类的方法都是没问题的,例如下面这个

import com.baidu.navisdk.adapter.impl.BaiduNaviManager;

如果上面这语句是灰色,因为你还没使用这个类的东西,也是导入成功了。

如果是红色,说明没导入成功,再仔细检查一下步骤吧。

总算解决了,不说了,百度官方解释是个坑!!!!

转载请注明,毕竟心累,坑死人。如果解决请点个赞吧大兄弟!

========================================Talk is cheap, show me the code=======================================