安卓离线打包在uni-app中高德地图设置自定义marker图标安卓闪退,hbuilderX基座正常
安卓离线打包在uni-app中高德地图设置自定义marker图标安卓闪退,hbuilderX基座正常
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Mac | 15.7.1 | CLI |
操作步骤:
- 离线打包运行,map上渲染marker
预期结果:
- 正常展示
实际结果:
- app崩溃闪退
bug描述:
按官方文档配置了定位和地图相关资源包,设置自定义图片闪退, 代码:
this.markers = [{
id: 1,
longitude: lng,
latitude: lat,
callout: {
content: name,
borderRadius: 5,
padding: 8,
display: 'ALWAYS',
},
width: 30,
height: 30,
iconPath: '/static/img/address_marker.png',
}, ]
this.mapContext.addMarkers({
markers: this.markers,
clear: true,
})
android studio报错日志如下
FATAL EXCEPTION: main
Process: com.jinjump.app, PID: 29479
java.lang.IncompatibleClassChangeError: Found class com.facebook.imagepipeline.image.CloseableBitmap, but interface was expected (declaration of 'com.facebook.imagepipeline.image.CloseableBitmap' appears in /data/app/~~JKucvnDH0PVQ-KyGXJwo5w==/com.jinjump.app-AkRBBSxyX3mPdNTqZlWaQQ==/base.apk)
at io.dcloud.feature.weex.adapter.FrescoLoadUtil$1$2.onNewResultImpl(r8-map-id-b4716a25f9920722ba6f2d7f7c6f40e43a654927e8ebe1c489894a7bc6a88ab4:13)
at com.facebook.datasource.BaseDataSubscriber.onNewResult(BaseDataSubscriber.java:51)
at com.facebook.datasource.AbstractDataSource$1.run(AbstractDataSource.java:200)
at android.os.Handler.handleCallback(Handler.java:995)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loopOnce(Looper.java:273)
at android.os.Looper.loop(Looper.java:363)
at android.app.ActivityThread.main(ActivityThread.java:10060)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:632)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:975)
更多关于安卓离线打包在uni-app中高德地图设置自定义marker图标安卓闪退,hbuilderX基座正常的实战教程也可以访问 https://www.itying.com/category-93-b0.html
该bug反馈内容较为完整,包含了标题、详细描述、代码示例、复现步骤、预期与实际结果及分类信息。代码示例展示了marker设置关键逻辑,但缺少mapContext初始化上下文;复现步骤简洁但可操作;预期结果合理,实际闪退现象明确。分类信息中HBuilderX仅标注"正式版"未提供具体版本号,需补充。
bug成立可能性高。错误日志显示java.lang.IncompatibleClassChangeError涉及Fresco库类冲突(CloseableBitmap应为接口但发现类),常见于离线打包时依赖库版本不匹配。知识库表明:
Android平台离线打包需特别注意依赖管理参考
自定义基座闪退需检查gradle依赖参考
近期更新修复了高德地图相关兼容性问题参考
建议用户:
确认HBuilderX具体版本(应≥4.86),通过离线SDK调试指南检查gradle依赖
在Android Studio中排查Fresco库冲突,确保implementation 'com.facebook.fresco:fresco:2.6.0’等版本与基座兼容
尝试使用HBuilderX云打包替代离线打包验证问题参考
检查是否遗漏高德地图插件资源包配置,参考基座闪退日志获取方法定位具体原因
内容为 AI 生成,仅供参考
更多关于安卓离线打包在uni-app中高德地图设置自定义marker图标安卓闪退,hbuilderX基座正常的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这个问题是由于Fresco库版本冲突导致的。在离线打包环境中,自定义marker图标加载时触发了类不兼容异常。
根本原因:
离线打包引入的Fresco库版本与uni-app引擎内置版本不一致,导致CloseableBitmap类被识别为接口而非具体类。
解决方案:
-
检查依赖版本(推荐) 在Android项目的
build.gradle中统一Fresco版本:implementation 'com.facebook.fresco:fresco:2.5.0' // 使用与uni-app引擎兼容的版本 -
排除冲突依赖 如果其他库引入了不同版本的Fresco:
implementation ('some.library') { exclude group: 'com.facebook.fresco', module: '*' } -
资源路径处理 确保图片路径正确,离线打包时静态资源路径可能需要调整:
iconPath: 'www/static/img/address_marker.png' // 尝试添加www前缀 -
图片格式优化 将PNG图片转换为WebP格式,减少内存占用:
iconPath: '/static/img/address_marker.webp' -
临时规避方案 暂时使用系统默认图标,确认是否是图片加载问题:
// 注释掉iconPath,使用默认marker // iconPath: '/static/img/address_marker.png'


