Android 高德地图SDK在API 31以上崩溃的问题 GLMapEngine.destroyAMapEngine(GLMapEngine.java:1851)

Posted 早起的年轻人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 高德地图SDK在API 31以上崩溃的问题 GLMapEngine.destroyAMapEngine(GLMapEngine.java:1851)相关的知识,希望对你有一定的参考价值。

异常:GLMapEngine.destroyAMapEngine(GLMapEngine.java:1851)

1 问题描述

android App 中调用高德地图功能(显示地图、地图选择地点),均能正常使用,然后在关闭APP页面里,APP崩溃。
抛出日志如下:

手机运行环境如下:

2 解决方式

AndroidManifest.xml文件中 的 application 标签中加入:

android:allowNativeHeapPointerTagging="false"

3 原因分析

下载高德地图SDK提供的DEMO测试时却发现,DEMO运行没有任何问题。比较DEMO和我们自己的代码,显示地图的关键代码没有任何不同,唯一不同的是
在 build.gradle 文件中,DEMO的targetSdkVersion是26,我们的targetSdkVersion是32。

4 allowNativeHeapPointerTagging 是什么?

Android dev 开发平台文档地址:

https://developer.android.google.cn/about/versions/11/behavior-changes-11?hl=zh-cn


安全方面 堆指针标记:
堆指针在最高有效字节 (MSB) 中有一个非零标记。错误地使用指针的应用(包括修改 MSB 的应用),现在会崩溃或遇到其他问题。这是支持未来启用了 ARM 内存标记扩展 (MTE) 的硬件所必需的变更。

以上是关于Android 高德地图SDK在API 31以上崩溃的问题 GLMapEngine.destroyAMapEngine(GLMapEngine.java:1851)的主要内容,如果未能解决你的问题,请参考以下文章

android: 在APP中显示高德地图SDK

android使用高德定位sdk获取的城市名称怎样让其他的界面进行调用

高德android定位sdk 2.4.0 支持android2.2吗

android 高德地图sdk,在地图上我点击了某个marker,然后这个被点击的marker就被自动定位

高德地图的使用

Android 第三方 SDK 之 高德地图(一)