【问题标题】:ReferenceError: Metadata for "GoogleMaps.GMSGeometryDistance" found but symbol not available at runtimeReferenceError:找到“GoogleMaps.GMSGeometryDistance”的元数据,但符号在运行时不可用
【发布时间】:2021-02-08 15:59:24
【问题描述】:

我在 NativeScript JavaScript 项目中使用 nativescript-google-maps-utils 插件来访问 GoogleMapsUtils 函数(GMSGeometryDistance、GMSGeometryInterpolate 和 GMSGeometryHeading),以便可以遍历折线。 Android 等效项在 Android 设备上运行良好,列出的 iOS 功能在 iOS 模拟器上运行,但在 iOS 设备上我得到了例外,

ReferenceError: Metadata for "GoogleMaps.GMSGeometryDistance" found but symbol not available at runtime.

我已经追了一天的大部分时间,但仍然没有任何线索;我欢迎任何见解。

[编辑]

值得一提的是,我已经完成了平台、钩子和节点模块文件夹的常规删除并重新构建,错误没有改变。

这是触发错误的第一行代码:

let lineDistance = GMSGeometryDistance(latlngs[i], latlngs[i + 1]);

[编辑 2]

仍在追逐这个...我从this issue 收集到我需要创建一个包含导出符号列表的文件,this issue 有点建议如何做到这一点,但我不明白这是怎么做到的适用于这种情况。

也就是说,现在的问题是如何确定 iOS GoogleMapsUtils 静态库中的符号?这更像是一个 iOS 和 Xcode 的问题,而不是 NativeScript 或 JavaScript。

[编辑 3]

叹息...我确实使用我在下面提供的答案得到了这个工作,但现在同样的方法不再有效。不知道为什么:-(

[编辑 4]

我重新查看了上面引用的链接并包含了 STRIPFLAGS 选项,现在代码可以正常工作了。我修改了答案以包含此内容,并编辑 build.xcconfig 而不是项目文件。

【问题讨论】:

    标签: ios xcode google-maps nativescript


    【解决方案1】:

    经过另一天的调查,我能够得到这个工作。这就是它所需要的。

    1. 导航到/platforms/iOS/Pods/GoogleMaps/Maps/Frameworks/GoogleMaps.framework/

    2. 运行nm --defined-only GoogleMaps | grep " T " | cut -f 3 -d' ' | egrep -v '^$|GoogleMaps'

    3. 注意符号的名称。在我的情况下,我需要的每个函数名都是以下划线为前缀的函数名

    4. /app/App_Resources/iOS中创建文件exportedSymbols.txt

    5. 将符号添加到文件中。就我而言,内容是:

      _GMSGeometryDistance
      _GMSGeometryHeading
      _GMSGeometryInterpolate

    6. 编辑文件app/App_Resources/iOS/build.xcconfig并添加这两行

      STRIPFLAGS=$(inherited) -s {PROJECT_DIR}/../../app/App_Resources/iOS/exportedSymbols.txt EXPORTED_SYMBOLS_FILE = ${PROJECT_DIR}/../../app/App_Resources/iOS/exportedSymbols.txt

    到目前为止,这在我在 iOS 模拟器和设备上的测试中都有效。

    【讨论】:

    • 感谢您的描述,我最近遇到了同样的问题,我能够按照您的步骤在模拟器和设备上进行测试。但是,我无法在 Xcode 中存档发布版本,我总是收到以下错误:错误:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/strip: can't打开:{PROJECT_DIR}/../../app/App_Resources/iOS/exportedSymbols.txt(没有这样的文件或目录)命令条失败,退出代码非零您是否有类似的问题,或者这是否按预期为您工作?
    • 它对我有用。您的错误消息表明 {PROJECT_DIR} 未得到解决。看看如果你使用硬编码路径会发生什么,至少要检查一下这个假设。
    • 感谢您对我的帮助!我使用的是 cocoapod,但在 ios 运行时中没有创建任何顶级函数,直到我在导出的符号文件中列出它们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-15
    • 2014-10-07
    • 2021-09-26
    • 2020-04-11
    • 2018-08-27
    • 2013-07-25
    • 1970-01-01
    相关资源
    最近更新 更多