【问题标题】:For a xamarin.iOS app, how to identify assembly that a symbol comes from对于 xamarin.iOS 应用程序,如何识别符号来自的程序集
【发布时间】:2020-02-01 14:27:55
【问题描述】:

当我为我的 Xamarin Forms iOS 应用程序构建档案时,链接器正在消除 Firebase 所需的一些符号。构建工作正常。我知道可以使用 --linkskip 来保留程序集,但是您如何确定需要指定哪个程序集来保留符号。

【问题讨论】:

    标签: xamarin.forms xamarin.ios linker


    【解决方案1】:

    如果在某些程序集上使用 [Preserve] 是不可能的(例如,第 3 方代码)或作为错误的临时解决方法,这将很有帮助。

    你可以看看Skipping Assemblies,当哪个程序集没有使用或者出现哪个程序集的bug时,你可以识别出来。

    【讨论】:

      【解决方案2】:

      我发现Object Browser 对此非常有帮助。如果您将浏览范围设置为“我的解决方案”,它将显示在当前解决方案中定义和引用的所有类。从那里您可以搜索在运行时丢失的类(搜索可能需要几秒钟,具体取决于您的解决方案大小)。选择相应的类并删除搜索文本。选定的类保持选中状态,您可以看到定义该类的容器(即程序集)并将其添加到链接跳过。

      附带说明:当您的项目增长时,链接器可能会添加许多例外情况。虽然可以使用 linkskip 添加所有这些,但a linker XML definition 可能更可行。要使用它,请添加一个带有构建目标 LinkDescription 的 XML 文件。在该文件中添加要保留的程序集和类型

      <linker>
        <assembly fullname="Firebase.XXX">
          <type fullname="*" /> <-- Preserve everything from that assembly -->
        </assembly>
      </linker>
      

      【讨论】:

        猜你喜欢
        • 2020-08-31
        • 1970-01-01
        • 1970-01-01
        • 2012-07-12
        • 1970-01-01
        • 2016-08-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多