android stodio gradle升级后加载BaiduMapSDK失败 found libBaiduMapSDK_base_vx_x_x.so error

背景:最近由于部分代码需要,将 gradle版本从3.0.1升级到3.1.4,开发的真机是Android5.0版本。gradle升级之前已经把百度地图SDK接好,运行也没有问题,但是升级gradle后加载百度地图SDK失败,报错log如下:

09-12 19:29:32.560 6208-6208/com.pop.android E/NativeLoader: found libBaiduMapSDK_base_v4_5_2.so error
09-12 19:29:32.561 6208-6208/com.pop.android E/art: No implementation found for int com.baidu.platform.comjni.tools.JNITools.initClass(java.lang.Object, int) (tried Java_com_baidu_platform_comjni_tools_JNITools_initClass and Java_com_baidu_platform_comjni_tools_JNITools_initClass__Ljava_lang_Object_2I)
09-12 19:29:32.561 6208-6208/com.pop.android D/AndroidRuntime: Shutting down VM
09-12 19:29:32.562 6208-6208/com.pop.android W/System.err: java.lang.UnsatisfiedLinkError: No implementation found for int com.baidu.platform.comjni.tools.JNITools.initClass(java.lang.Object, int) (tried Java_com_baidu_platform_comjni_tools_JNITools_initClass and Java_com_baidu_platform_comjni_tools_JNITools_initClass__Ljava_lang_Object_2I)
        at com.baidu.platform.comjni.tools.JNITools.initClass(Native Method)
        at com.baidu.platform.comjni.tools.a.b(Unknown Source)
        at com.baidu.platform.comapi.a.<clinit>(Unknown Source)
        at com.baidu.platform.comapi.c.a(Unknown Source)
        at com.baidu.mapapi.SDKInitializer.initialize(Unknown Source)
        at com.baidu.mapapi.SDKInitializer.initialize(Unknown Source)
        at com.pop.android.calendar.ui.MapPointBDActivity.doCreate(MapPointBDActivity.java:845)
        at com.pop.android.framework.core.BaseActivity.onCreate(BaseActivity.java:63)
        at android.app.Activity.performCreate(Activity.java:6342)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1113)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2523)
09-12 19:29:32.563 6208-6208/com.pop.android W/System.err:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2636)
        at android.app.ActivityThread.access$1000(ActivityThread.java:180)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1494)
        at android.os.Handler.dispatchMessage(Handler.java:111)
        at android.os.Looper.loop(Looper.java:207)
        at android.app.ActivityThread.main(ActivityThread.java:5811)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:768)

log可以看出加载百度地图SDK失败,但是工程中各种相关包都齐全,位置也对。

通过以下方式得到正解:

Android Studio导入.so文件有两种方式,如果直接在libs目录下创建子目录armeabi放置.so文件,那么就必须在build.gradle中添加sourceSets {...}语句,就是这一小坨

sourceSets {

main {

jniLibs.srcDirs = ['libs']

}
}

但是如果在src/main中添加 jniLibs文件夹,就不需要添加以上代码了,添加了反而会报错

至于为什么一样的配置代码在gradle升级前后不兼容的问题还没有探究,如果有知道的同学还请明示,多谢。

猜你喜欢

转载自blog.csdn.net/caijinghuacaijinghua/article/details/82666865