我目前正在Swift编码,但我收到了错误:
没有这样的模块社交
但我不明白,因为该模块在我的项目中,在"链接框架和图书馆"和嵌入式二进制文件"。
框架在Objective-C中,所以我为它编写了一个Bridge Header。
请问,如何让Xcode识别框架?
答案 0 :(得分:429)
如果是星期五下午或凌晨1点之后的任何时间:
打开xcodeproj
代替xcworkspace
会导致这样的错误......
答案 1 :(得分:269)
我不确定为什么会这样,但解决问题的一种方法是进入构建设置并将框架搜索路径定义为包含相关框架的文件夹。如果框架放在项目目录中,只需将框架搜索路径设置为 Adapter.notifyDataSetChanged();
并将其设置为递归。
答案 2 :(得分:35)
答案 3 :(得分:31)
我使用Cocoapods和 Swift 时遇到了同样的问题。我没有注意到Podfile中的以下行:
# Uncomment this line if you're using Swift
# use_frameworks!
所以,我所要做的就是将其改为:
# Uncomment this line if you're using Swift
use_frameworks!
...... aaand有效:)
答案 4 :(得分:30)
确保子项目中的配置命名与“父”项目的配置相匹配。如果配置命名不完全匹配(区分大小写),Xcode将中止归档过程并显示错误“No such module ...”
也就是说,如果您的“父”项目具有名为“AppStore”的配置,则必须确保所有子项目也具有此配置名称。
请参阅我附带的屏幕截图。
答案 5 :(得分:19)
答案 6 :(得分:16)
我也遇到了这个问题。对我来说,解决方案是两个项目之间的档案方案并不匹配。我有一个带有框架项目和应用程序项目的xcworkspace。问题是在我的应用程序的存档方案中,我使用的是与框架用于其存档方案不同的构建配置。我将Build Configurations设置为Release,这解决了问题。
答案 7 :(得分:9)
就我而言,经过多次尝试弄清楚导入框架的错误后,我最终发现框架本身就是问题所在。如果您没有从受信任的源获取框架,则应检查框架并确保它包含一个Modules文件夹,其中包含module.modulemap文件。如果module.modulemap不存在,您将收到“No such module'MyFramework'”错误。
如果Modules文件夹缺少“MyFramework.swiftmodule”文件夹,那么将找到该框架,但Xcode将不知道其内容,因此您将得到不同的错误。
答案 8 :(得分:8)
请确保,Scheme中的Build选项中的Find implicit Dependencies
已开启!
答案 9 :(得分:8)
假设框架确实存在并且在路径中等...删除〜/ Library / Developer / Xcode / DerivedData / ModuleCache目录(并清理项目并删除项目特定的派生数据以获得良好的衡量标准)。
执行标准清理时,不会重建ModuleCache目录。
答案 10 :(得分:8)
以下步骤对我有用。
"pod update"
.xcworkspace
,然后重新构建。答案 11 :(得分:6)
几天前我也遇到了同样的错误。以下是我解决问题的方法:
错误是"找不到模块"
转到项目构建设置:
创建一个新的桥接头文件:例如TestProject-Bridging-Header.h并放在Swift编译器下→Objective-C生成的界面头名称(参见上图)
这就是全部。
答案 12 :(得分:5)
如果您正在构建像tvOS这样的平台,请确保选择了Apple TV(即匹配)模拟器。
选择iOS模拟器构建tvOS应用程序给了我这个错误。花了一个小时的时间寻找各种构建问题... doh。
答案 13 :(得分:5)
好的,我如何解决同样的问题是相对于工作空间目录设置派生数据位置而不是保持默认值。 转到xcode中的首选项。转到首选项中的位置选项卡,并将派生数据设置为相对。 希望能帮助到你。
答案 14 :(得分:4)
在我的情况下,应用程序IPHONEOS_DEPLOYMENT_TARGET设置为9.3,而在我新创建的框架中,它设置为10.2
隐式依赖项解析程序忽略了我的新框架,因为目标平台的要求高于应用程序要求。
在调整框架 iOS部署目标以匹配我的应用程序部署目标后,框架已成功编译和链接。
答案 15 :(得分:4)
我的错误是
import Firebase
但后来注意到我没有将pod添加到主目标部分,而只是添加到Podfile中的Test和TestUI目标。
使用命令
pod init
对于xcode swift项目,生成以下Podfile
# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'
target 'MyApp' do
# Comment the next line if you're not using Swift and don't want to use dynamic frameworks
use_frameworks!
# Pods for MyApp
target 'MyAppTests' do
inherit! :search_paths
# Pods for testing
end
target 'MyAppUITests' do
inherit! :search_paths
# Pods for testing
end
end
因此,需要确保将pod添加到任何适当的占位符。
答案 16 :(得分:4)
对我有用的是this对另一个问题的解决方案。关闭Xcode并重新打开项目作为工作区。
转到您的项目文件夹并打开.xcodeworkspace
文件。
打开工作区(而不是项目)后,Pods应该在项目浏览器中显示为顶级项目。
答案 17 :(得分:3)
我已经安装了pods。当我在我的设备上构建应用程序时,构建工作没有任何问题,但存档不起作用。我跑了:
pod install
没有安装新的pod,只是.xcodeproj文件重新生成并且存档开始工作
答案 18 :(得分:3)
我用
解决了这个问题目标 - >一般 - >链接的框架和库
添加应位于glm::perspective
文件夹顶部的框架。痛苦的屁股。
答案 19 :(得分:3)
TL; DR:检查您的Podfile中特定于目标的shared_pods
在头上碰壁并尝试了上周在这里发布的所有其他答案之后,我终于找到了解决方案。
我有两个单独的目标-一个用于发布,一个用于开发。开发目标是在发布目标之后很久才创建的,这使我忘记了该目标的一些设置步骤。
我能够使用发布目标使项目正确编译,但是我的开发目标遇到了问题。
在第二十次查看我的Podfile之后,我发现在shared_pods
定义下,我只有以下内容:
target 'Release' do
shared_pods
end
我需要做的是将第二个目标添加到Podfile中,并解决了该问题:
target 'Release' do
shared_pods
end
target 'Development' do
shared_pods
end
希望这可以为某人节省几天的挫败感。
答案 20 :(得分:3)
我得到了同样的错误,因为我使用Cocoapods
添加了几个框架。如果我们在项目中使用Pod,我们应该使用xcodeworkspace
而不是xcodeproject
。
要通过xcodebuild运行项目,我在-workspace <workspacename>
命令中添加了xcodebuild
参数,它运行正常。
答案 21 :(得分:3)
在Xcode 10.1中,我的解决方案是在“文件”菜单中的工作区设置上更改构建系统。默认情况下,它设置为 New Build System ,将其更改为 Legacy Build System ,并且成功了。
答案 22 :(得分:2)
一般=>链接框架和库,我添加了./Pods/Pods.xcodeproj
并成功了
答案 23 :(得分:2)
我刚刚删除了我的cocoapod。然后,我做了一个pod安装来删除它。然后,我将其添加回我的podfile并重新安装。这使它成功了。不知道为什么。
答案 24 :(得分:2)
对于我来说,仅构建活动体系结构已针对所选配置设置为“是”。这可以解决问题:
从左侧项目导航器中选择“窗格”>选择“构建设置”>仅将活动体系结构构建为否
答案 25 :(得分:1)
我的问题是有多个目标。 我通过以下链接解决了它: configure pod file right way和fix build settings
希望有人会有所帮助。
答案 26 :(得分:1)
我发现Import Paths
中的Build Settings
对于自定义(MySQL)模块是错误的。在指向正确的方向后,消息消失了。
答案 27 :(得分:1)
这最终对我有用。它非常蹩脚,我不得不做这一切,但这是我能找到的唯一有用的东西。
确保库列在linked framework and libraries
下。如果不存在,您可以单击+
,并希望看到您的框架/ pod已列出。
点击方案图标中的项目(见下图)
然后你应该看到你的焦点框架列出:
点击Manage Schemes.
然后你应该看到这样的事情:
勾选框架的box
,点击AutoCreate Schemes now
,然后点击close
。
然后尝试再次导入您的框架/ pod。
它对我有用。
答案 28 :(得分:1)
此问题可能会导致几种潜在的错误配置,
.xcworkspace
而不是.xcodeproj
文件。还要确保在构建Social
之前先构建TriviaApp
。TriviaApp
的部署目标设置为9.0
,Social
的部署目标也需要设置为9.0
。TriviaApp
)和使用的框架(Social
)具有相同的配置集。即,如果您的项目具有三个配置Debug
,Release
,ReleasePremium
,那么您的社交框架还需要具有三个配置Debug
,Release
,{{1 }}。另外,请确保ReleasePremium
和TriviaApp
的存档配置都设置相同。即,如果您的Social
的存档方案设置为TriviaApp
,则您的ReleasePremium
的存档方案也需要设置为Social
。ReleasePremium
中已经添加了Social
的情况下,无需在每个.swift
文件中导入Bridging-Header.h
。#use_frameworks!
的{{1}}注释为use_frameworks!
。如果Podfile
对吊舱有任何依赖性,有时可以重新安装吊舱。答案 29 :(得分:1)
sudo gem install cocoapods
pod setup
我可以确认上述步骤解决了我的错误:-)
答案 30 :(得分:1)
我遇到了这个问题,因为我在podfile中设置了错误的目标(项目本身而不是UITests部分)。
答案 31 :(得分:1)
我在开发自定义Pod时遇到了这个问题。发现我只需要在Procfile中指定依赖项:
Pod::Spec.new do |s|
# ... other declarations
s.dependency 'Alamofire', '~> 4.3'
end
答案 32 :(得分:1)
就我而言,我尝试了上述所有建议,但仍然没有效果。 我只是复制显示错误的文件内容而没有导入内容,然后将其粘贴到具有相同导入的另一个文件中,并注释掉错误文件。 再次运行该项目,使其正常运行,然后删除原始错误文件,并创建一个具有相同名称的文件,并使用相同的导入再次使其内容恢复。 我认为就我而言,我只是想出一种方法,使其能够一次将这些导入链接起来,应该没事。
答案 33 :(得分:1)
答案 34 :(得分:1)
答案 35 :(得分:1)
答案 36 :(得分:1)
如果您使用的是迦太基,通常会保留建筑环境中的框架
$(PROJECT_DIR)/Carthage/Build/iOS
如果运行carthage update --platform ios --no-build
(以节省时间),将不会重新创建Build文件夹中的文件,因此XCode将无法使用这些模块。
就我而言,我已经运行carthage update --platform ios
,然后我的问题就解决了。
答案 37 :(得分:0)
Sazzad Hissain Khan 的 3. 选项在应用程序的框架中添加与应用程序中相同的“构建配置”解决了我的“未知模块”问题。
这篇文章帮助我了解了如何添加新的构建配置,因为进入编辑器 -> 添加配置是灰色的
答案 38 :(得分:0)
大多数其他答案适用于CocoaPods或迦太基用户。如果您不使用这两种方法中的任何一种,而只想在您的项目中放置一个框架并对其进行链接,则它必须位于框架搜索路径中。< / p>
系统框架已经在搜索路径中(即/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS${version}.sdk/System/Library/Frameworks/
)。如果您要使用的路径不在此路径中,则需要在“构建设置”中将其路径添加到FRAMEWORK_SEARCH_PATHS
。
即使左侧面板上的框架在右侧面板的“标识和类型”中列出了位置和完整路径,为什么XCode也不知道在没有该位置的情况下如何找到它?那...我不知道。
答案 39 :(得分:0)
我在xcode 10.3中遇到类似的问题。 xCode无法识别Pod中的文件。在这里,我已经通过以下方式解决了:
答案 40 :(得分:0)
对我来说,进入“编辑方案”->“运行”,然后将调试配置从“发行版”更改为“调试”,以解决该问题。
答案 41 :(得分:0)
如果您托管自己的库或框架,请确保它具有module.modulemap
文件,并且文件头位于Build Phases -> Headers
部分
答案 42 :(得分:0)
对我来说,答案是转到目标,首先检查目标名称和项目名称是否匹配,如果匹配,则转到常规 -> 框架并手动添加它们。当我这样做时,我清理构建了应用程序,并且一切正常。不幸的是,在解决我的问题之前没有一个答案,所以也许这也可以帮助你。
答案 43 :(得分:0)
有时候pod deintegrate
然后pod install
也对我有帮助。
答案 44 :(得分:0)
在极少数情况下,可以通过在此处设置适当的平台[ProjectNavigator]-> [ Project ]-> [ Target ]->(架构)来解决此错误> BaseSDK
在创建框架时,我偶然选择了错误的模板(就像我之前创建macOS框架一样),因为它被设置为喜欢我先前的选择。添加目标时,很容易错过配置平台,因此请仔细检查。
答案 45 :(得分:0)
对于xCode 12和模拟器,
在项目导航器中导航到Pods.xcodeproj时,错误可能会消失, 并在“排除的体系结构”下的构建设置中,对于每个“调试和发行版”,选择值为“ arm64”的“任何iOS Simulator SDK”。
快乐编码:)
答案 46 :(得分:0)
是编译时错误。在很多情况下,您都可以得到它:
.xcodeproj
已打开,而不是.xcworkspace
module.modulemap
Objective-C,库/框架目标。
如果您托管自己的库或框架,请确保它具有module.modulemap
文件,并且文件头位于Build Phases -> Headers section
Framework Search Paths
消费者->框架
如果您尝试在未设置Framework Search Paths
的情况下构建应用程序。设置Framework Search Path
指向框架资源后,Xcode将成功构建项目。但是,当您在模拟器中运行应用程序时,由于以下原因导致崩溃:Image not found
about
对于工作区,它可以是绝对路径,也可以是相对路径,例如$(SRCROOT)
或$(SRCROOT)/..
Import Paths
Swift使用者-> Swift静态库
Import Paths
应该指向.swiftmodule
Linked Frameworks and Libraries
消费者->静态框架
在此部分添加Static framework
Find Implicit Dependencies
当您具有隐式依赖项但Find Implicit Dependencies
已关闭
答案 47 :(得分:0)
转到项目所在的文件夹并删除导致错误的插件。对我来说,我删除了导致错误的 Google Mobile Ads Sdk 文件夹,问题得到解决。将它包含在 pod 中就足够了。
答案 48 :(得分:0)
在目标的构建设置中,将“框架搜索路径” 设置为 $(继承)并递归。 [
答案 49 :(得分:0)
我经历了上述解决方案,但不幸的是,没有任何帮助。我后来做什么
是的,我知道有些命令是多余的。但是,花两天时间拔头发比这些步骤差很多。
答案 50 :(得分:0)
我仍然无法从xcode进行存档,但是 fastlane 为我完成了工作
答案 51 :(得分:0)
尝试了该线程上的所有想法之后,当我更新可可足类时它就起作用了。
$ pod --version
$ 1.0.0 // should have been 1.10.0
您应该更新椰壳足纲
gem which cocoapods
答案 52 :(得分:0)
1 - 在您的podfile中,删除产生问题的窗格,然后保存该文件 2 - 运行pod安装 3 - 重新添加pod,保存文件 4 - 重新运行pod install
问题应该解决。
HIH
答案 53 :(得分:0)
它有什么价值(我是使用Xcode 7.2 / Swift 2的新手),但我注意到只需从项目目录中的库中获取.swift文件就可以自动访问它并不需要using语句。
示例:我使用SwiftyJSON,只需在项目中使用SwiftyJSON.swift文件即可。 using
声明实际上是在给我“没有这样的模块&#39;错误并解决它解决了它,它工作正常。
答案 54 :(得分:0)
如果以上所有方法都不适用于我的情况。前一天没有问题,但第二天早上我遇到了同样的错误。我刚刚通过删除引用删除了框架,并再次添加它们。我知道这可能听起来很傻,但是它很有用。
答案 55 :(得分:0)
我在加载FacebookSDK方面遇到了类似的问题,我在构建设置<中添加〜/ Documents / FacebookSDK (搜索框架所在的位置)框架搜索路径 / strong>之后我能够导入FBSDKShareKit模块
答案 56 :(得分:0)
如果您已完成上述所有操作,但仍然没有任何效果,请尝试在目标的构建设置的框架搜索路径中添加$(inherited)
。
答案 57 :(得分:0)
对我来说,这发生在RxSwift上,问题是我在Podfile中将其修复为3.0.0。删除版本限制并更新pod将其升级到3.1.0,修复它。
答案 58 :(得分:0)
我的解决方案是。目标内部 - &gt;构建设置 - &gt;框架搜索路径并添加$(继承)。但是,如果它是cocoapods你的答案可能在终端的输出内。
答案 59 :(得分:0)
此错误也可能由缺少模块映射的框架引起。如果您尝试导入的框架是您的,请检查框架本身的编译器警告。在我的情况下,我的框架正在构建并且到位,但是有一个构建警告:
警告:找不到目标'MyFramework'的伞头,不会生成模块图
通过解决此警告(related to the framework header not matching the module name),我能够导入框架。
答案 60 :(得分:0)
有时您必须安装Pod。
答案 61 :(得分:0)
在我的情况下,我只需要重新加载项目。我曾使用命令行来克隆我的项目,但它没有正确安装子模块。为了补救,我通过XCode克隆了项目,一切正常。只需确保先备份所有更改。
答案 62 :(得分:0)
对于我来说,我已修复了将“自定义路径”中的所有代字号(〜)字符替换为$(HOME)
的问题。自定义路径位于位置标签下的Xcode偏好设置中。
答案 63 :(得分:0)
答案 64 :(得分:0)
我安装了pod Fakery,pod已添加到我的Pods文件中,但是当我尝试使用它时,我得到了同样的错误。问题是,我没有构建它,在构建之后,swift编译器在Fakery swift文件中抛出了一些错误,某些函数已被重命名,它也为它们提供了修复。解决所有这些编译器问题后,构建成功,我能够使用该模块。因此,在我的案例中,语言兼容性很快。
答案 65 :(得分:0)
答案 66 :(得分:0)
(这次)我的问题是我在Podfile中使用了过时的库版本。
我用过:
pod 'LBTAComponents', '~> 0.1.9'
没有用,但是当我将其更改为:
pod 'LBTAComponents', '~> 1.0.2'
有效。
答案 67 :(得分:0)
我因“没有此类模块”错误的最直接原因而获奖。以我为例,我手动构建了包含的框架,然后将其复制到我的项目目录中。我的框架搜索路径设置正确,并且框架已正确添加到项目中。
在归档要构建的框架时,我使用“在Finder中显示”将我带到派生数据中的release文件夹。但是我没有注意到该文件夹仅包含框架的别名,而不包含框架本身。原始框架保留在我的派生数据目录中,所以稍后在清除派生数据时,该框架被删除,但是我的项目不知道。
按照实际框架的别名重新存档框架,然后将其复制到我的项目目录中。
答案 68 :(得分:0)
如果这只是一个简单的项目,像我一样没有可可足类, 您可以尝试将框架移到项目目录中并重新链接。 我将其放在台式机上,但是链接并“导入MyFramework”时出错。将其移到项目目录中并再次链接后,它可以工作了。
答案 69 :(得分:0)
如果工作空间中有多个项目,则需要:
1)向所有项目添加新配置
2)产品-> 干净
3)删除derived data
4)pod install
在终端
5)建立您的项目。
希望对某人有帮助。
答案 70 :(得分:0)
实际上,通过将build-debug.xconfig
的末尾添加到
#include "../Pods/Target Support Files/Pods-IAP/Pods-IAP.debug.xcconfig"
直到build-release.xconfig
#include "../Pods/Target Support Files/Pods-IAP/Pods-IAP.release.xcconfig"
因为这些文件已经定义了PODS_ROOT
和相关的构建变量。
答案 71 :(得分:0)
在XCode 10中,另一个可能的原因可能是Pods项目的Supported Platforms
有时更改为macOS
,而Valid Architectures
更改为i386 x86_64
。假设该项目适用于iOS,然后选择Pods项目并将Supported Platforms
更改为iOS
,将Valid Architectures
更改为arm64 arm64e armv7 armv7s
,则可以执行每个目标,但是如果您有多个Pod,则需要更长的时间。另外,书面Swift中的Swift version
框架有时会设置为错误的版本。
答案 72 :(得分:0)
关于Xcode 10+和1.用Xcode版本<10,2.创建的项目的另一个建议。包含一个子项目,该子项目具有主项目所依赖的框架。问题是Xcode会将编译后的框架放在子项目中指定的目录中,该目录可能与主项目构建目录不同。
检查文件>项目设置。现在,单击“高级...”,然后选择“传统”以外的其他内容作为构建路径,例如“唯一”。在那种情况下,Xcode会将所有构建的组件放到一个文件夹中,并且它应该能够找到“缺失”模块。
答案 73 :(得分:-7)