高德地图报Native method not found: com.autonavi.amap.mapcore.MapCore.nativeNewInstance:

本文解决了集成高德地图SDK时出现的加载失败问题。通过调整项目构建脚本,正确处理本地库文件,最终成功加载地图。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在集成高德地图demo时候遇到一个奇怪的问题,我是按照官网上的demo完全集成的, 却死活加载不出地图详情,并且抛出如下异常;

01-02 14:36:40.890 19044-19101/duck.mapdemo W/dalvikvm: No implementation found for native Lcom/autonavi/amap/mapcore/MapCore;.nativeNewInstance:(Ljava/lang/String;Ljava/lang/String;)J
01-02 14:36:40.890 19044-19101/duck.mapdemo W/System.err: java.lang.UnsatisfiedLinkError: Native method not found: com.autonavi.amap.mapcore.MapCore.nativeNewInstance:(Ljava/lang/String;Ljava/lang/String;)J
01-02 14:36:40.890 19044-19101/duck.mapdemo W/System.err:     at com.autonavi.amap.mapcore.MapCore.nativeNewInstance(Native Method)
01-02 14:36:40.890 19044-19101/duck.mapdemo W/System.err:     at com.autonavi.amap.mapcore.MapCore.newMap(MapCore.java:101)
01-02 14:36:40.890 19044-19101/duck.mapdemo W/System.err:     at com.amap.api.mapcore.util.b.C(AMapDelegateImp.java:443)
01-02 14:36:40.890 19044-19101/duck.mapdemo W/System.err:     at com.amap.api.mapcore.util.b.a(AMapDelegateImp.java:133)
01-02 14:36:40.890 19044-19101/duck.mapdemo W/System.err:     at com.amap.api.mapcore.util.b$1.run(AMapDelegateImp.java:340)
01-02 14:36:40.890 19044-19101/duck.mapdemo W/System.err:     at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1462)
01-02 14:36:40.890 19044-19101/duck.mapdemo W/System.err:     at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1240)


百度发现一哥门也跟我遇到同样的问题,他的解决办法是:

对比了一下高德提供的demo 发现少了x86的文件夹,将x86文件夹粘贴到lib目录下运行就好了

可是我在官网提供的demo上死活找不到X86文件夹~~~于是尴尬症又犯了~~只好接着找

果然功夫不负有心人,还真被我找到了这篇文章点击查看 ,错误原因是SO文件导入错了

正确的解决办法是:打开在APP下的build.gradle文件,在android下加入

   task nativeLibsToJar(type: Zip, description: "create a jar archive of the native libs") {
        destinationDir file("$projectDir/libs")
        baseName "Native_Libs2"
        extension "jar"
        from fileTree(dir: "libs", include: "**/*.so")
        into "lib"
    }

    tasks.withType(JavaCompile) {
        compileTask -> compileTask.dependsOn(nativeLibsToJar)
    }
完整的build.gradle文件如下:

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"
    defaultConfig {
        applicationId "duck.mapdemo"
        minSdkVersion 9
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        externalNativeBuild {
            cmake {
                cppFlags "-frtti -fexceptions"
            }
        }
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    externalNativeBuild {
        cmake {
            path "CMakeLists.txt"
        }
    }
    task nativeLibsToJar(type: Zip, description: "create a jar archive of the native libs") {
        destinationDir file("$projectDir/libs")
        baseName "Native_Libs2"
        extension "jar"
        from fileTree(dir: "libs", include: "**/*.so")
        into "lib"
    }

    tasks.withType(JavaCompile) {
        compileTask -> compileTask.dependsOn(nativeLibsToJar)
    }
}








<think>我们正在处理一个关于高德地图包名的问题。根据用户提供的信息,他之前询问的是关于车机系统上获取root权限并设置高德地图前台显示的问题。在之前的回答中,我们提到过高德地图的包名通常为`com.autonavi.minimap`,但建议通过`adb shell pm list packages`来确认。 现在用户直接询问高德地图应用的包名信息,我们需要给出准确的答案。 在Android系统中,高德地图的官方应用包名通常是`com.autonavi.minimap`。但是,需要注意的是,车机版的高德地图可能使用不同的包名。常见的车机版包名可能是`com.autonavi.amapauto`。因此,我们需要区分普通手机版和车机版。 根据用户之前的问题,他是在车机环境下,所以车机版高德地图的包名更可能是`com.autonavi.amapauto`。但是,为了确保准确性,我们可以建议用户使用以下命令来列出所有包名并筛选: ```bash adb shell pm list packages | grep -i 'amap\|autonavi' ``` 这样就能找到与高德地图相关的包名。 因此,我们可以这样回答: 高德地图应用的包名通常有两种情况: 1. **手机版**:`com.autonavi.minimap` 2. **车机版(Auto版)**:`com.autonavi.amapauto` 由于您是在车机系统上使用,建议使用车机版包名`com.autonavi.amapauto`。但为了确保准确性,请通过以下命令在您的车机上确认: ```bash adb shell pm list packages | grep -i 'amap\|autonavi' ``` 该命令会列出所有包含"amap"或"autonavi"的包名,您可以根据应用名称判断。 另外,在您之前的问题中,我们使用了`com.autonavi.minimap`作为示例,但那是手机版的包名。在车机环境中,请使用车机版包名。 注意:不同厂商定制的车机系统可能会预装不同版本的高德地图,包名也可能略有不同,所以以上命令可以帮助确认。 最后,生成相关问题:</think>高德地图应用的包名信息如下: ### 高德地图包名说明 1. **标准手机版包名** `com.autonavi.minimap`(这是最常见的高德地图官方包名) 2. **车机专用版包名** `com.autonavi.amapauto`(车机系统通常预装此专用版本) 3. **企业定制版包名** 可能包含厂商前缀,如: `com.xxx.autonavi`(XXX代表车机厂商名称) ### 验证包名的方法(需ADB连接) ```bash # 列出所有已安装包名 adb shell pm list packages # 过滤高德相关应用 adb shell pm list packages | grep -iE 'amap|autonavi' ``` ### 获取当前前台应用包名 ```bash adb shell dumpsys window | grep mCurrentFocus # 输出示例:mCurrentFocus=Window{... com.autonavi.amapauto/...} ``` ### 注意事项 1. 不同车机厂商可能定制修改包名后缀 2. 系统预装版与应用商店版包名可能不同 3. 使用前建议通过`adb shell pm path <包名>`验证应用路径[^1] > **操作建议**:在车机环境中优先使用`com.autonavi.amapauto`,这是官方车机专用包名。若未生效,再尝试`com.autonavi.minimap`或其他定制包名。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值