【问题标题】:'Framework not found' in XcodeXcode 中的“找不到框架”
【发布时间】:2015-12-17 16:10:43
【问题描述】:

我知道这已经被问过几次了。我遵循了这些人的指示:

Adding frameworks to project in Xcode 5 and having *relative* paths added

xcode4: Linker error: Directory not found for option

Xcode 仍然出现此错误:

这是我当前的配置:

螺栓框架让我可以使用 Parse SDK。我从这里下载了空白项目:https://parse.com/apps/quickstart#parse_data/mobile/ios/native/new

它正在工作。我尝试复制每个配置选项,但它仍然不起作用。

【问题讨论】:

标签: ios xcode xcode6 ios-frameworks


【解决方案1】:

尝试从链接框架中删除Bolts.framework 并重新添加它。此外,在您的 Framework Search Path 中保留路径,直到 Bolts.framework$(PROJECT_DIR)/Bolts 如果它位于项目目录路径的 Bolts 文件夹中。

【讨论】:

  • 对于框架搜索路径,转到您的项目,选择您的目标,然后转到构建设置。搜索framework,直到您看到粗体的框架搜索路径。
【解决方案2】:

我对 iOS 开发还很陌生。显然,对我来说这个问题是打开 .xcodeproj Xcode 项目而不是 .xcworkspace Xcode 工作区的结果。我打开了工作区,错误消失了。

【讨论】:

  • 这解决了我的问题,但是当我打开工作区时,我只能看到 ViewController.class 文件。当我尝试打开其他文件时,它们在侧视图中打开,无法真正正确读取 xib 文件。您知道解决此问题的方法吗?
【解决方案3】:

错误:找不到框架

如果你使用CocoaPods尝试运行:

pod deintegrate
pod update

同时使用.xcworkspace 代替.xcodeproj

【讨论】:

  • 这对我有用:使用 .xcworkspace 而不是 .xcodeproj
【解决方案4】:

从 Embedded Binaries 中删除所有框架并重新添加

【讨论】:

    【解决方案5】:
    1. 从 Xcode 项目设置中删除框架链接。
    2. 将框架移至项目文件夹。
    3. 在 Xcode 项目设置中重新添加框架。
    4. 清理项目并重新编译。

    【讨论】:

    • 对我来说,这些说明的重要部分是,当我将我的框架移动到我的项目文件夹中而不是将它放在我的文件系统中的其他位置时,Xcode 自动将框架的父文件夹添加到我的目标的 @987654321 @Build Setting 当我在 Xcode 中将框架重新添加到目标时。我决定在我的项目中添加一个Frameworks 文件夹,这样我的目标就有一个Framework Search Paths 条目,如下所示:"$(PROJECT_DIR)/Frameworks"
    【解决方案6】:

    我也遇到这个错误,我将框架文件移动到根项目文件夹并再次添加到框架中,问题就解决了。

    【讨论】:

      【解决方案7】:

      解决办法如下:

      在选择项目中将“$(PROJECT_DIR)”属性(默认情况下可能是非递归的)转换为递归选项单击目标单击-构建设置搜索“框架搜索路径”-双击输入。

      来自https://stackoverflow.com/a/31298214/4493512

      【讨论】:

        【解决方案8】:

        除了从PodfileLinked Frameworks and Libraries 中删除框架之外,我还必须删除Other Linker Flags 中对框架的引用。

        【讨论】:

        • 这是黄金! tysm
        • 在我从 pubspec.yaml 中删除了一个包引用,并在 flutter clean && rm ios/Podfile.lock pubspec.lock && rm -rf ios/Pods ios/Runner.xcworkspace 之后尝试了 flutter build ipa(它重新添加了已删除的内容)之后,我还必须删除在项目Runner 和目标Runner 构建设置中引用Other Linker Flags 中的框架。之后,flutter build ipa 为我工作。
        【解决方案9】:

        我刚遇到同样的情况(在添加 3rd 方框架后很难解决 OP 的构建错误),这似乎是 Xcode 中的一个错误(我的是 8.3.2 (8E2002))。

        问题是框架路径中的文件夹名称包含空格。在这种情况下,Xcode 在Build Settings -> Framework Search Paths 中错误地使用反斜杠将它们转义:

        $(PROJECT_DIR)/Folder\ with\ spaces/Lib
        

        要解决此问题,只需手动编辑条目以删除那些反斜杠并将整个字符串括在引号中,如下所示:

        "$(PROJECT_DIR)/Folder with spaces/Lib"
        

        【讨论】:

          【解决方案10】:

          删除导致问题的框架(通过删除引用)。

          然后再次添加它,按照以下步骤添加 FBSDK 框架和库:

          1. 点击项目
          2. 常规设置
          3. 链接的框架和库
          4. 点击加号按钮并添加您想要的所有内容

          【讨论】:

          • 我原以为这会自己工作,但即使这样做了,我仍然必须清除“目标会员”复选框,运行产品>清理,然后再次设置目标会员复选框。
          【解决方案11】:

          1:- 从 Xcode 项目中删除框架。退出 Xcode。

          2:- 在 XCode 中打开您的项目并转到菜单下的文件并选择将文件添加到“YourProjectName”。

          3:- 在你保存的目录中选择“YourFramwork.framework”。

          4:- 点击 Copy items if needed 复选框。

          5:- 点击添加。

          确保在“目标设置 - 常规”下的“嵌入式二进制文件”和“链接框架和库”中都添加了框架。如下图所示:-

          【讨论】:

          • 对我来说,这些说明的重要部分是,当我将框架复制到我的项目中,然后再将其添加到我的目标时,Xcode 会自动在我的目标的Framework Search Paths Build Setting 中为其添加一个条目。我决定将框架复制到我项目中的Frameworks 文件夹中,这样我的目标就有一个Framework Search Paths 条目,如下所示:"$(PROJECT_DIR)/Frameworks"
          【解决方案12】:

          直到我发现在构建设置下的框架搜索路径/调试下有一个空白的“任何架构 | 任何 SDK”行之前,上述方法都不适合我。

          删除该行,它可以工作!

          【讨论】:

            【解决方案13】:

            当我发生此错误时,是因为 Pods 文件夹位于 iCloud 中,并且我的计算机上没有本地副本。在 Finder 中转到您项目的文件夹并检查其中的任何文件夹中是否有 iCloud 的符号!

            【讨论】:

              【解决方案14】:

              我意识到我没有使用Generic Device 运行/构建我的框架,这奇怪地导致了这些问题。我刚把框架放回去,它就起作用了。

              【讨论】:

                【解决方案15】:

                如果您使用的是 CocoaPods。类似的事情也发生在我身上。尽管这个问题很老,但像我这样的人可能仍在苦苦挣扎。所以为了帮助: 在pod install 之后,它会警告您有关项目文件的信息。直到现在我才注意到。它说:

                [!] 请关闭所有当前的 Xcode 会话并使用 从现在开始ProjectFile.xcworkspace 这个项目。

                所以基本上,安装 Pod 后不要继续使用 .xcodeproj。如果你这样做,链接器将找不到文件。

                【讨论】:

                  【解决方案16】:

                  我的框架名称很长,例如 FrameworkSDK_Light-1.0.6.framework,因此我将其重命名为 FrameworkSDK_Light.framework,它解决了我的问题。

                  【讨论】:

                    【解决方案17】:

                    我收到错误消息“未找到 AdBrixRM 框架”。我检查了 AdBrixRM.framework。我注意到缺少“AdBrixRM”执行文件。我将此文件复制到框架文件夹中,问题就消失了。

                    【讨论】:

                      【解决方案18】:

                      我过去曾在使用 Google Admob SDK 时遇到过同样的问题。最近,在尝试添加 Validic 库时发生了这种情况。这次我也尝试了同样的老把戏,而且很快就奏效了。

                      1) 删除框架(如果已添加)。

                      2) 在 Finder 中找到框架,然后将它们拖放直接放到项目树下的Project Navigator 窗格中。

                      3) 构建项目,哇哦!

                      不知道有什么区别,但是通过进入项目设置页面(TARGET)下的“Linked Framework & Libraries”部分的官方方式添加框架从那里链接对我不起作用。希望这会有所帮助。

                      【讨论】:

                        【解决方案19】:

                        我发现 file.framework 引用了我项目之外的文件。所以我把文件拖到我项目下的frameworks文件夹中,然后去掉了之前的file.framework文件,它就可以工作了。

                        【讨论】:

                          【解决方案20】:

                          如果您正在使用 cocoapods 开发一个模块,请尝试注释该行

                          s.vendored_frameworks = "YOURMODULE.framework"
                          

                          YOURMODULE.podspec

                          生成 YOURMODULE.framework 并将其复制到项目文件夹后,错误将消失。

                          【讨论】:

                            【解决方案21】:

                            在您的购物车文件中添加 github "BoltsFramework/Bolts-iOS"。 然后carthage update。 从../carthage/Build/iOS复制Bolts.framework

                            【讨论】:

                              【解决方案22】:

                              从 iOS 模拟器切换到真机解决了我的问题。

                              【讨论】:

                                【解决方案23】:

                                遇到同样的错误并解决了 ---> Build Settings > Build Active Architecture Only = Yes

                                【讨论】:

                                  【解决方案24】:

                                  请在添加两个框架后打开每个 Bolts 和 Parse 框架并将 Parse 和 Bolts 添加到项目中,然后问题将得到解决

                                  【讨论】:

                                  【解决方案25】:

                                  在应用程序的root 目录中运行pod update 为我解决了这个问题。

                                  【讨论】:

                                    【解决方案26】:

                                    我在我工作的一个项目中遇到了这个问题,在您删除并读取框架之前,请执行以下操作:

                                    git status 
                                    

                                    在您的项目中检查框架是否未列为已删除。如果它要么做一个

                                    git stash 
                                    

                                    git checkout *framework/file/path*
                                    

                                    【讨论】:

                                      猜你喜欢
                                      • 2017-05-25
                                      • 1970-01-01
                                      • 2020-11-26
                                      • 1970-01-01
                                      • 2017-07-09
                                      • 2011-08-26
                                      • 1970-01-01
                                      • 1970-01-01
                                      • 2016-09-10
                                      相关资源
                                      最近更新 更多