【问题标题】:XCode weakly-linked/optional framework not excluded不排除 XCode 弱链接/可选框架
【发布时间】:2022-08-03 00:12:03
【问题描述】:

我正在开发一个 iOS 项目。我正在使用仅适用于设备而不适用于模拟器的框架(UnityFramework)。我想在模拟器上运行时排除框架以方便测试,否则应用程序将无法编译。

我已按照this StackOverflow post(似乎已过时)和this Apple documentation 的说明对框架进行了弱链接,以便在为模拟器构建时不包含它,但在为模拟器构建时仍然出现相同的错误:没有找到框架。

我不确定我是否遗漏了一些需要从模拟器构建中排除此框架的内容,或者我的配置是否有问题。我尝试在“其他链接器标志”中同时使用 -weak_framework 和 -ObjC -weak_framework。我使用的是 Xcode 13.3。

我的构建设置:

Frameworks, Libraries, and Embedded Content: UnityFramework.framework - Embed & Sign

Build Settings - Other Linker Flags - All marked with -weak_framework UnityFramework

Build Phases - Link Binary with Libraries - UnityFramework.framework - Optional

这是我得到的错误的 sn-p:

Ld .../Library/Developer/Xcode/DerivedData/app-gygzddvoumbadmatpojfllhgdkag/Build/Products/Debug-iphonesimulator/AppDevelopment.app/AppDevelopment normal(在项目\'App\'的目标\'AppDevelopment\'中) cd .../项目/应用程序文件夹

-Xlinker .../Library/Developer/Xcode/DerivedData/app-gygzddvoumbadmatpojfllhgdkag/Build/Intermediates.noindex/app.build/Debug-iphonesimulator/appDevelopment.build/Objects-normal/x86_64/appDevelopment.swiftmodule -weak_framework UnityFramework -Xlinker -sectcreate -Xlinker __TEXT -Xlinker

ld:找不到框架 UnityFramework

    标签: ios swift xcode


    【解决方案1】:

    假设您的框架名称是YourFramework

    #if !targetEnvironment(simulator) //notice the not operator (!)
    import YourFramework //YourFramework will be imported only when not on simulator
    #endif
    

    也可能值得检查#if canImport(YourFramework)

    【讨论】:

      猜你喜欢
      • 2011-02-07
      • 2011-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-31
      • 2013-05-11
      • 1970-01-01
      • 2011-01-23
      相关资源
      最近更新 更多