zoukankan      html  css  js  c++  java
  • 在百度定位SDK的基础之上导入导航的SDK(针对新版本的坑!)

    你知道吗?我就导入个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_SampleBaiduNavi_AndroidSDK_v4.1.0_SampleONSDKDemo

    然后看到


    把这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=======================================

    CSDN博客地址:https://blog.csdn.net/qq_34115899
  • 相关阅读:
    Centos 7安装python3(PY3.6)
    linux仅修改文件夹权限 分别批量修改文件和文件夹权限
    【工作手札】Nginx接口代理可跨域
    微信自定义分享链接信息(标题,图片和内容)实现过程
    ios 等保 删除 uiwebview
    postman 接口批量测试
    uniapp之 页面滑动 组件
    uniapp之 点击图片跳转详情 组件
    安装 node.js
    创建一个mpvue的小程序
  • 原文地址:https://www.cnblogs.com/lcy0515/p/9179738.html
Copyright © 2011-2022 走看看