com.autonavi.amap.mapcore.MapCore.nativeNewInstance:(Ljava/lang/String;Ljava/lang/String;)J

本文介绍了在集成高德定位SDK时遇到的崩溃问题及解决方案,包括正确配置.so文件及创建jniLibs文件夹。

在集成完高德定位的运行的时候出崩溃了,出现了如下提示

com.example.gaodedingwei2, PID: 18151
java.lang.UnsatisfiedLinkError: Native method not found: com.autonavi.amap.mapcore.MapCore.nativeNewInstance:(Ljava/lang/String;Ljava/lang/String;)J

网上,看了很多,基本都是一样的,没有解决我的问题,可能你们看到我的这篇文章的时候说不定翻了多少页之后了,好了步入正题


这里是一开始解决问题的思路,经验,可以跳过直接看后面的怎么解决
先看错误提示
com.example.gaodedingwei2, PID: 18151
java.lang.UnsatisfiedLinkError: Native method not found: com.autonavi.amap.mapcore.MapCore.nativeNewInstance:(Ljava/lang/String;Ljava/lang/String;)J
提示找不到这个方法,这个方法在第三方的jar文件中,于是查看jar,按照路径依次展开,找到MapCore这个类进入内部,看看是否有nativeNewInstanc这个方法
这个方法是有的,可是为什么找不到,于是开始一步一步调试。奇怪的是,自带的demo运行没有错,可调式时到这里时却崩溃了。


到现在无解,是不是哪里需要配置,是不是so文件需要配置,后来在网上看见了这样一句话" Studio 下配置 .so 文件,打开 app -> build.gradle;在 android{ } 代码块中添加如下代码"于是我就打开自带demo的 app -> build.gradle文件,把 android{ }这部分代码补充(是补充不是覆盖)到相应的位置中,结果奇迹出现了。


还有一种方法,就是在project下,在main文件下建立jniLibs文件夹,把带有so文件的文件夹考进来,在运行,问题解决。


没有图片,写的也很简单,只是起到一个引导,想看懂或许需要一定的经验,

<think>我们正在分析用户的问题:"我想查询com.autonavi.map.activity.NewMapActivity是什么包名 请问com.autonavi.map.activity.NewMapActivity是什么包名" 从用户的问题中,我们可以看出用户希望知道这个完整的类名(包括包名)中,包名部分是什么,以及这个Activity属于哪个应用。 根据Android的包命名规则,一个完整的Activity类名由两部分组成:包名和Activity类名。通常,包名是直到最后一个点之前的部分,而最后一个点之后是类名。 因此,对于"com.autonavi.map.activity.NewMapActivity",我们可以这样分解: - 包名:com.autonavi.map.activity (注意:这里实际上包名是com.autonavi.minimap,因为通常一个应用只有一个包名,而activity的完整路径可能包含子包,但在这个例子中,根据引用[1]和引用[2]的内容,这个Activity属于高德地图,其主包名是com.autonavi.minimap,而com.autonavi.map.activity是子包) 但是,我们需要结合引用内容来确认: 引用[1]中:adb shell am start com.autonavi.minimap/com.autonavi.map.activity.NewMapActivity 这里明确指出了启动的组件是:包名为com.autonavi.minimap,Activity的完整类名为com.autonavi.map.activity.NewMapActivity。 所以,正确的解释是: - 应用包名(package name): com.autonavi.minimap - Activity的完整类名: com.autonavi.map.activity.NewMapActivity 因此,用户询问的包名,如果是指应用包名,则是com.autonavi.minimap;如果是指这个Activity所在的包(即java包),则是com.autonavi.map.activity。 通常,当我们说一个Activity的包名,可能有两种含义: 1. 这个Activity所在的应用的包名(即Android应用的唯一标识),也就是com.autonavi.minimap。 2. 这个Activity在代码中的java包路径,即com.autonavi.map.activity。 用户可能更关心的是这个Activity属于哪个应用,所以应用包名更重要。 另外,引用[3]也多次提到com.autonavi.minimap,这是高德地图的包名。 因此,我们可以这样回答: - com.autonavi.map.activity.NewMapActivity 是 Activity 的完整类名。 - 它属于包名为 com.autonavi.minimap 的应用,即高德地图(Amap)。 - 在Java中,这个Activity所在的包(package)是 com.autonavi.map.activity。 同时,根据引用[1]的示例,我们可以通过adb命令启动它。 生成相关问题: 1. 如何通过adb命令启动高德地图的NewMapActivity? 2. 高德地图的其他常见Activity有哪些? 3. 如何通过代码启动其他应用的Activity(例如高德地图的NewMapActivity)? 注意:引用[4]是关于测试应用启动时间的脚本,可以稍作关联。 回答结构: 1. 分解类名,解释包名和应用包名的区别。 2. 说明这个Activity所属的应用(高德地图)。 3. 给出一个启动示例(参考引用[1])。 注意:在回答中,我们引用了用户提供的引用[1]和[3]。 </think>### com.autonavi.map.activity.NewMapActivity 包名解析 根据提供的引用内容,`com.autonavi.map.activity.NewMapActivity` 是高德地图(Amap)的核心地图界面组件,其完整包名结构如下: 1. **基础包名**: - **`com.autonavi`**:表示公司域名反转(高德地图母公司 AutoNavi) - **`minimap`**:主应用标识符(高德地图的包名主体)[^1][^2] 2. **组件路径**: - **`map.activity`**:表示地图功能模块中的 Activity 组件包 - **`NewMapActivity`**:具体 Activity 类名,负责地图主界面渲染和交互 3. **完整归属**: ``` 应用包名: com.autonavi.minimap 组件路径: com.autonavi.map.activity 完整类名: com.autonavi.map.activity.NewMapActivity ``` 4. **功能说明**: - 这是高德地图 App 的主地图界面,用于显示实时地图、导航路线和 POI 信息[^1] - 可通过 ADB 命令直接启动:`adb shell am start com.autonavi.minimap/com.autonavi.map.activity.NewMapActivity`[^1] - 在性能监控中可见其渲染帧数据(如引用[2]的 `sf_frame_dur` 日志) - 承担位置服务核心功能,接收 `com.autonavi.minimap.Intent.Action` 广播指令[^3] 5. **技术特性**: - 冷启动调用:通过 `am start -W -n` 命令激活[^4] - 支持位置信息回调(`geolocation`)和包信息查询(`getpackageinfo`)[^3] - 深度集成高德地图 SDK,提供地图渲染、路线规划等核心能力
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值