You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NativeScript中@nativescript/geolocation与nativescript-google-maps-sdk冲突报错如何解决

解决方案

步骤1:统一锁定Google Play服务依赖版本

你之前修改配置不生效是因为before-plugins.gradle的优先级高于app.gradle,插件依赖的版本会在加载阶段就确定,必须在这个文件中指定全局版本:

  • 找到app/App_Resources/Android/before-plugins.gradle,不存在就手动新建,添加如下配置:
ext {
  // 统一所有插件的谷歌服务基础版本
  googlePlayServicesVersion = "18.0.0"
  // 单独锁定定位服务版本,适配geolocation插件需求
  playServicesLocationVersion = "21.0.1"
}

步骤2:解决FragmentClass重复生成冲突

报错提示的类冲突是NativeScript 8.x的已知问题:多个依赖AndroidX Fragment的插件会同时触发静态绑定器生成同名类,你可以直接在app/App_Resources/Android/app.gradle中关闭非必要的生成逻辑:

android {
  // 保留你原有的所有配置,追加以下内容
  defaultConfig {
    javaCompileOptions {
      annotationProcessorOptions {
        arguments = [
          "generateFragmentClass": "false"
        ]
      }
    }
  }
}

步骤3:全量清理重建

按以下顺序执行操作,避免缓存残留:

  • 删除项目根目录下的platforms、node_modules、hooks文件夹
  • 删除系统缓存:C:\Users\<你的用户名>\.gradle、C:\Users\<你的用户名>\.nativescript\cache
  • 执行npm install重新安装依赖
  • 执行ns clean确认清理所有构建残留
  • 执行ns run android重新构建运行

补充:watchLocation崩溃排查

如果构建成功后调用定位接口仍崩溃,先确认动态权限申请逻辑:

  • Android 10及以上版本需要先申请ACCESS_FINE_LOCATION权限,后台定位还需额外申请ACCESS_BACKGROUND_LOCATION
  • 必须等权限申请通过的回调返回后,再调用geolocation.watchLocation()方法,无权限直接调用会触发原生崩溃

内容的提问来源于stack exchange,提问作者DV7

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 03:45:03