孤星
孤星
  • 发布:2024-05-23 17:35
  • 更新:2025-05-07 09:56
  • 阅读:2638

IOS本地离线打包高德地图报错

分类:uni-app

ios本地离线打包,集成高德地图是项目报错,麻烦大佬看看是哪部出错了
环境如下:
xcode:15.4
hbuilderX :4.08
离线 SDK:4.08

操作步骤如下:
1 、引入 AMap.bundle和 userPosition@2x.png


2 、引入 framework和.a文件

3 、项目 build时报错信息如下

ld: building fixups: pointer not aligned at _dbl_lnds_data_TileDataRespMsg_fields+0x32 from /Users/guoxinchao/Desktop/工作/综合管理系统/代码/IOS/SDK/SDK/Libs/MAMapKit.framework/MAMapKit[arm64]2
clang: error: linker command failed with exit code 1 (use -v to see invocation)

文心一言上说是“链接器(ld)遇到了一个问题,即某个指针在内存中的地址没有对齐。具体来说,是在_dbl_lnds_data_TileDataRespMsg_fields+0x32这个地址位置上的指针没有正确对齐。确保你正在使用的MAMapKit.framework是最新版本,并且与你的Xcode版本和iOS SDK版本兼容。”

请问大佬这个问题还怎么解决?

2024-05-23 17:35 负责人:无 分享
已邀请:
孤星

孤星 (作者) -

有人遇到过吗?

  • 归来少年

    我也遇到了 ,请问解决了没?

    2024-06-06 17:09

孤星

孤星 (作者) -

没人遇到过吗,论坛活跃度这么低的吗?

  • 归来少年

    我也遇到了 ,请问解决了没?

    2024-06-06 17:09

用户2745324

用户2745324

一年后的今天,我也遇到了同样的问题。但是这个论坛真的让人有点无语,这么严重的bug,这么长的时间,没有人去处理。

4***@qq.com

4***@qq.com

Xcode 16 报
Pointer not aligned in '_landmark_data_LandmarkTileRequest_fields'+0x15 (/userpath/app/example/ios/Pods/AMap3DMap/MAMapKit.framework/MAMapKit[arm64]2)

other linker flags 添加-ld64
报错
ld: unaligned pointer(s) for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

podfile 添加
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '14.0'

pod 'AMap3DMap', '~> 10.0.600'
后通过
有缘人看到可以试试

z***@163.com

z***@163.com

其实4楼思路已经解决了大部分问题,但是操作起来还是有些不便。我给大家一个思路,报这个错:

ld: building fixups: pointer not aligned at _dbl_lnds_data_TileDataRespMsg_fields+0x32 from /Users/guoxinchao/Desktop/工作/综合管理系统/代码/IOS/SDK/SDK/Libs/MAMapKit.framework/MAMapKit[arm64]2  
clang: error: linker command failed with exit code 1 (use -v to see invocation)

本质上官方里面specs里面指定的AMap3DMap为9.7.0,版本太低导致。

4楼这样更新库

pod 'AMap3DMap', '~> 10.0.600'

会导致版本冲突,而安装失败。

有两种方式解决该问题:

  1. 制作本地的unimp模块,修改里面高德地图的版本号,解决问题,这种手动适合非常熟悉iOS开发的同学,我想搞uni的人可能在这方面不太了解。

  2. 通过pod subspecs 添加unimp里面的定位与地图模块,然后编译报错,因为此时的AMap3DMap (9.7.0)这个版本,然后,找一个新的工程,通过pod集成最新版本的AMap3DMap、AMapFoundation、AMapSearch、AMapLocation模块,然后最新的这几个模块拖入到这个uni项目中的Pod文件夹下面即可编译完成。这种方式本质上是配置文件里面虽然指定了旧版本,但是我们已经通过覆盖升级到了新版本,这样就不会报错了,编译运行都没有问题,也没有改变other linker setting。

3楼吐槽没人维护,可能本质上没什么人用,然后开发发版也没怎么验证覆盖这块,毕竟这年头,各种开发都不好过。

要回复问题请先登录注册