HarmonyOS鸿蒙Next中定位插件地理定位器geolocator编译失败,导致暂时无法在app中使用GPS定位

HarmonyOS鸿蒙Next中定位插件地理定位器geolocator编译失败,导致暂时无法在app中使用GPS定位 【问题描述】:我们用了定位插件地理定位器,但是测试发现https://gitcode.com/openharmony-sig/fluttertpc_geolocator/tree/br_v14.0.1_ohos编译失败,导致暂时无法在app中使用GPS定位

【问题现象】:我们用了定位插件地理定位器,但是测试发现https://gitcode.com/openharmony-sig/fluttertpc_geolocator/tree/br_v14.0.1_ohos编译失败,导致暂时无法在app中使用GPS定位

Package geolocator:ohos references geolocator_ohos:ohos as the default plugin, but the package does not exist, or is not a plugin package.

Ask the maintainers of geolocator to either avoid referencing a default implementation via platforms: ohos: default_package: geolocator_ohos or create a plugin named geolocator_ohos.

【版本信息】:IDE: DevEco Studio 5.1.0 Flutter: 2.27 ohos

【尝试解决方案】:插件的14.0.1 的第一个问题是内部的名称不一致,有的地方是flutter_geolocator_ohos, 有的地方是geolocator_ohos,我自己修改了名称,但是编译不通过,去掉这个插件编译通过。

插件链接: https://gitcode.com/openharmony-sig/fluttertpc_geolocator/tree/br_v14.0.1_ohos/geolocator


更多关于HarmonyOS鸿蒙Next中定位插件地理定位器geolocator编译失败,导致暂时无法在app中使用GPS定位的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

尊敬的开发者,您好!感谢您的反馈,问题正在加速处理中,还请关注后续版本,感谢您的理解与支持。

1:14.0.1分支当前存在问题,请使用master分支

2:master分支当前任然会出现告警可以忽略,不影响使用。

更多关于HarmonyOS鸿蒙Next中定位插件地理定位器geolocator编译失败,导致暂时无法在app中使用GPS定位的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


名称

cke_184.png

鸿蒙Next中geolocator编译失败通常由以下原因导致:

  1. 依赖配置问题:检查oh-package.json中geolocator版本是否与SDK匹配
  2. 权限声明缺失:确保module.json5中已添加ohos.permission.LOCATION权限
  3. API变更:鸿蒙Next可能调整了定位接口,需核对最新API文档
  4. 模拟器限制:部分模拟器不支持GPS定位,需使用真机测试
  5. 签名配置:定位功能需要正确的应用签名配置

建议检查编译日志的具体错误代码,确认是依赖冲突、权限问题还是API调用方式变更导致的编译失败。

根据你提供的错误信息和链接,问题核心在于插件 geolocatorpubspec.yaml 文件中,对鸿蒙(ohos)平台的配置指向了一个不存在的默认插件包 geolocator_ohos

具体错误信息 Package geolocator:ohos references geolocator_ohos:ohos as the default plugin, but the package does not exist, or is not a plugin package. 已经明确指出:在 geolocator 包的 pubspec.yaml 里,为 ohos 平台配置的 default_packagegeolocator_ohos,但这个包在当前项目或依赖中并不存在。

从你提供的GitCode仓库链接来看,该仓库的 br_v14.0.1_ohos 分支下,geolocator 目录结构似乎包含了鸿蒙平台的实现代码,但它本身可能并未被正确打包为一个独立的、名为 geolocator_ohos 的Flutter插件包。geolocator 主包在引用它时出现了配置错误。

临时解决方案:

由于这是插件自身的配置问题,最直接的解决方法是修改本地的插件依赖配置。你不需要修改插件内部的代码名称,而是需要修改项目中对这个插件的引用方式。

  1. 修改项目的 pubspec.yaml 文件: 不要直接依赖 geolocator,而是改为直接依赖其鸿蒙实现部分。将依赖项修改为指向你提供的GitCode仓库的特定分支和路径。

    将原来的:

    dependencies:
      geolocator: ^x.x.x
    

    修改为类似以下格式(具体路径可能需要根据仓库实际结构微调):

    dependencies:
      geolocator:
        git:
          url: https://gitcode.com/openharmony-sig/fluttertpc_geolocator
          ref: br_v14.0.1_ohos
          path: geolocator
    

    或者,如果仓库根目录的 pubspec.yaml 就是 geolocator 主包,则 path 可能不需要。

  2. 执行依赖更新: 在项目根目录运行 flutter pub getohpm install(根据你的项目类型)来更新依赖。

根本原因与后续:

这个问题的根源是 geolocator 插件 pubspec.yaml 中针对 ohos 平台的配置有误。它错误地声明了一个不存在的默认实现包。这需要插件的维护者修复其 pubspec.yaml 文件,通常有两种方式:

  • 移除 platforms: ohos: default_package: geolocator_ohos 这行配置,如果鸿蒙实现代码就在主包内。
  • 或者,将鸿蒙实现代码正确分离并发布为名为 geolocator_ohos 的独立插件包。

在你尝试的解决方案中,你修改了插件内部的名称,但可能没有修正最关键的、项目级依赖的配置指向。直接依赖包含正确实现的源码仓库分支是绕过上游配置错误的一个有效方法。

如果直接修改 pubspec.yaml 依赖后问题依旧,请检查仓库 br_v14.0.1_ohos 分支下 geolocator 目录内的 pubspec.yaml 文件,确认其 name 字段是否为 geolocator,以及其内部是否已正确包含了鸿蒙平台的实现。

回到顶部