百度地图 java.lang.UnsatisfiedLinkError 问题解决

本文解决了一个在Android Studio中集成百度地图API时遇到的问题:java.lang.UnsatisfiedLinkError。此错误通常是因为动态链接库(.so文件)未能被正确加载导致。文章提供了解决方案,即在Gradle配置文件中手动指定.so文件的位置。
    java.lang.UnsatisfiedLinkError: Native method not found: com.baidu.platform.comjni.engine.JNIEngine.initClass:(Ljava/lang/Object;I)I
                                 at com.baidu.platform.comjni.engine.JNIEngine.initClass(Native Method)
                                 at com.baidu.platform.comjni.engine.AppEngine.InitClass(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)


在Android Studio集成百度地图API时,第一步就遇到了一个问题 “java.lang.UnsatisfiedLinkError” 根本也不知道如何解决,一番折腾后了解到:原来Android Studio不支持在.apk文件打包时,自动加载动态库 .so文件。


解决办法:

既然不支持自动加载,那么就需要我们手动去加载。

在工程项目中 app-->gradle中添加

  sourceSets {
        main() {
            jniLibs.srcDirs = ['libs']
        }
    }
即可解决。


全部代码展示为:


apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "24.0.0"

    defaultConfig {
        applicationId "com.niuduz.baidumap_ding"
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    /**
     * 目前 Android Studio不支持自动添加 .so文件(Eclipse是支持的),所以我们需要手动加载libs下的.so的动态库
     */
    sourceSets {
        main() {
            jniLibs.srcDirs = ['libs']
        }
    }

}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.3.0'
    compile files('libs/baidumapapi_base_v4_0_0.jar')
    compile files('libs/baidumapapi_cloud_v4_0_0.jar')
    compile files('libs/baidumapapi_map_v4_0_0.jar')
    compile files('libs/baidumapapi_radar_v4_0_0.jar')
    compile files('libs/baidumapapi_search_v4_0_0.jar')
    compile files('libs/baidumapapi_util_v4_0_0.jar')
    compile files('libs/locSDK_6.13.jar')
}


2025-07-14 16:23:05.430 10674-10674 nativeloader com.example.baiyunmap D Configuring clns-9 for other apk /data/app/~~6inlwRMbMcaLGIhM7fzZPA==/com.example.baiyunmap-sIji_tmuZqEGorhzhYsSuA==/base.apk. target_sdk_version=35, uses_libraries=, library_path=/data/app/~~6inlwRMbMcaLGIhM7fzZPA==/com.example.baiyunmap-sIji_tmuZqEGorhzhYsSuA==/lib/arm64:/data/app/~~6inlwRMbMcaLGIhM7fzZPA==/com.example.baiyunmap-sIji_tmuZqEGorhzhYsSuA==/base.apk!/lib/arm64-v8a, permitted_path=/data:/mnt/expand:/data/user/0/com.example.baiyunmap 2025-07-14 16:23:05.457 10674-10674 CompatChangeReporter com.example.baiyunmap D Compat change id reported: 202956589; UID 10220; state: ENABLED 2025-07-14 16:23:05.460 10674-10674 ample.baiyunmap com.example.baiyunmap I AssetManager2(0x77841ae48178) locale list changing from [] to [en-US] 2025-07-14 16:23:05.465 10674-10674 GraphicsEnvironment com.example.baiyunmap V Currently set values for: 2025-07-14 16:23:05.465 10674-10674 GraphicsEnvironment com.example.baiyunmap V angle_gl_driver_selection_pkgs=[] 2025-07-14 16:23:05.466 10674-10674 GraphicsEnvironment com.example.baiyunmap V angle_gl_driver_selection_values=[] 2025-07-14 16:23:05.466 10674-10674 GraphicsEnvironment com.example.baiyunmap V com.example.baiyunmap is not listed in per-application setting 2025-07-14 16:23:05.466 10674-10674 GraphicsEnvironment com.example.baiyunmap V ANGLE allowlist from config: 2025-07-14 16:23:05.466 10674-10674 GraphicsEnvironment com.example.baiyunmap V com.example.baiyunmap is not listed in ANGLE allowlist or settings, returning default 2025-07-14 16:23:05.466 10674-10674 GraphicsEnvironment com.example.baiyunmap V Neither updatable production driver nor prerelease driver is supported. 2025-07-14 16:23:05.569 10674-10674 nativeloader com.example.baiyunmap D Load libBaiduMapSDK_base_v7_6_5.so using class loader ns clns-9 (caller=/data/app/~~6inlwRMbMcaLGIhM7fzZPA==/com.example.baiyunmap-sIji_tmuZqEGorhzhYsSuA==/base.apk!classes3.dex): dlopen failed: library "libBaiduMapSDK_base_v7_6_5.so" not found 2025-07-14 16:23:05.569 10674-10674 AndroidRuntime com.example.baiyunmap D Shutting down VM 2025-07-14 16:23:05.571 10674-10674 AndroidRuntime com.example.baiyunmap E FATAL EXCEPTION: main Process: com.example.baiyunmap, PID: 10674 java.lang.UnsatisfiedLinkError: dlopen failed: library "libBaiduMapSDK_base_v7_6_5.so" not found at java.lang.Runtime.loadLibrary0(Runtime.java:1090) at java.lang.Runtime.loadLibrary0(Runtime.java:1012) at java.lang.System.loadLibrary(System.java:1765) at com.example.baiyunmap.MapApplication.<clinit>(MapApplication.java:23) at java.lang.Class.newInstance(Native Method) at android.app.AppComponentFactory.instantiateApplication(AppComponentFactory.java:76) at androidx.core.app.CoreComponentFactory.instantiateApplication(CoreComponentFactory.java:52) at android.app.Instrumentation.newApplication(Instrumentation.java:1347) at android.app.LoadedApk.makeApplicationInner(LoadedApk.java:1479) at android.app.LoadedApk.makeApplicationInner(LoadedApk.java:1411) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:7790) at android.app.ActivityThread.-$$Nest$mhandleBindApplication(Unknown Source:0) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2546) at android.os.Handler.dispatchMessage(Handler.java:110) at android.os.Looper.loopOnce(Looper.java:248) at android.os.Looper.loop(Looper.java:338) at android.app.ActivityThread.main(ActivityThread.java:9067) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:593) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:932) ---------------------------- PROCESS ENDED (10674) for package com.example.baiyunmap ---
最新发布
07-15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值