百度地图 坑爹之路

此帖将记录集成百度地图中碰到的问题以及一些解决的方案

首先按照官网进行集成

https://lbsyun.baidu.com/index.php?title=androidsdk/guide/create-project/androidstudio

编译完美运行闪退 哦吼

报错如下:

 found lib armeabi/gnustl_shared.so error

found lib armeabi/BaiduMapSDK_base_v7_3_0.so error

No implementation found for int com.baidu.mapsdkplatform.comjni.tools.JNITools.initClass(java.lang.Object, int) (tried Java_com_baidu_mapsdkplatform_comjni_tools_JNITools_initClass and Java_com_baidu_mapsdkplatform_comjni_tools_JNITools_initClass__Ljava_lang_Object_2I)

然后闪退  报错位置定位在:

SDKInitializer.initialize(this);

但是这是我复制的旧的项目,整个项目我基本上都直接复制的啊,lib和so我也都是复制过来的,build.gradle(app)也是复制过来的,运行旧的APP->完美运行,运行新的APP->报错闪退。。

我吐了。。

我集成方式是:

1.将BaiduLBS_Android.jarcopy到app目录下的libs文件夹中

2.在src目录下的main文件夹下新建一个jniLibs目录

3.将原先包含so文件的armeabi文件夹copy到jinLibs目录下

然后尝试试过的方法有如下(可能我的情况和你的情况不一定完全一样,建议大家都试试):

前提提要:请先检查so 文件 没有放到 jniLibs 下,并且  arm64-v8a  armeabi   armeabi-v7a  x86  x86_64(具体看你需要兼容哪些)  里面的so文件都要放一份(数目要一样)

1.

defaultConfig {

    ndk {
        abiFilters 'x86', 'armeabi-v7a','x86_64','arm64-v8a','armeabi'
    }

    packagingOptions {
        exclude "jniLibs/armeabi/gnustl_shared.so"
        exclude "jniLibs/armeabi/BaiduMapSDK_base_v7_3_0.so"
    }
}

2.直接去官网下载最新的开发包以防止so包和jar包的版本不对

3.在src-main里已经存在jniLibs文件,并且已经把armeabi资源文件放进去了。那么就需要在app的build.gradle里把sourceSets { main {jniLibs.srcDirs = ['libs'] }}给删掉。同时也要确保你的dependencies {

implementation fileTree(include: ['*.jar'], dir: 'libs')//有这个

}

以上方法对我而言都无效

晒 晒 晒。。我真是个与众不同的*呢

最后我走投无路 灵光乍起

我将我的jniLibs文件删掉,然后将百度开发包里面so的文件夹(arm64-v8a,armeabi,armeabi-v7a,x86,x86_64)和BaiduLBS_Android.jar同时放在了app下libs文件夹中,并在build.gradle(app)中添加配置如下

android{
    ...
     sourceSets {
        main {
            jniLibs.srcDir 'libs'
        }
    }
}

再次运行

结果成功了!!!

坑爹呢吧,明明说好的两种集成方式呢?!明明我旧项目都可以用jniLibs文件这种方式集成,新的怎么就不可以呢? 太坑了,如果上天再给我一次机会 我会去用高德地图。。真的

上一篇:Conv2d, MaxPool2d, Linear, Flatten, Sequential的使用


下一篇:夹壳加固厂商特征