我目前在Swift编码,我有一个错误:
没有这样的模块社交
但我不明白,因为模块在我的项目中,在"链接框架和库"和"嵌入式二进制文件"中声明.
框架在Objective-C中,所以我为它编写了一个Bridge Header.
请问,我如何让Xcode识别框架?




cap*_*kaw 484
如果是星期五下午或凌晨1点之后的任何时间:
打开xcodeproj而不是xcworkspace会导致这样的错误......
小智 291
我不确定为什么会发生这种情况,但解决问题的一种方法是进入构建设置并将框架搜索路径定义到包含相关框架的文件夹.如果框架放在项目目录中,只需将框架搜索路径$(SRCROOT)设置为并将其设置为递归.
Gro*_*oot 44
确保子项目中的配置命名与"父"项目的配置相匹配.如果配置命名不完全匹配(区分大小写),Xcode将中止归档过程并显示错误"No such module ..."
也就是说,如果您的"父"项目具有名为"AppStore"的配置,则必须确保所有子项目也具有此配置名称.
请参阅我附带的屏幕截图.
nbu*_*urk 32
我使用Cocoapods和Swift也有同样的问题.我没有注意到Podfile中的以下行:
# Uncomment this line if you're using Swift
# use_frameworks!
Run Code Online (Sandbox Code Playgroud)
所以,我所要做的就是将其改为:
# Uncomment this line if you're using Swift
use_frameworks!
Run Code Online (Sandbox Code Playgroud)
... aaand有效:)
小智 18
我也遇到了这个问题.对我来说,修复是两个项目之间的档案方案不匹配.我有一个带有框架项目和应用程序项目的xcworkspace.问题是在我的应用程序的存档方案中,我使用的是不同于框架用于存档方案的不同构建配置.我将Build Configurations都设置为Release,这解决了这个问题.
mcs*_*rey 12
在我的情况下,经过多次尝试弄清楚导入框架的错误后,我最终发现框架本身就是问题.如果您没有从受信任的源获取框架,则应检查框架并确保它包含一个Modules文件夹,其中包含module.modulemap文件.如果module.modulemap不存在,您将收到"No such module'MyFramework'"错误.
如果Modules文件夹缺少"MyFramework.swiftmodule"文件夹,那么将找到框架,但Xcode将不知道其内容,因此您将得到不同的错误.
假设框架确实在那里并且在路径中等...删除〜/ Library/Developer/Xcode/DerivedData/ModuleCache目录(并清理项目并删除项目特定的派生数据以获得良好的衡量标准).
执行标准清理时,不会重建ModuleCache目录.
有几个潜在的错误配置可能会导致问题,
.xcworkspace但未打开.xcodeproj文件。还要确保在构建Social之前先构建TriviaApp。TriviaApps部署目标设置为9.0,Socials部署目标也需要设置为9.0。TriviaApp) and your used framework (Social) have same set of configurations. i.e. If your Project has three configurations, Debug, Release, ReleasePremium than your Social framework also need to have three configurations Debug, Release, ReleasePremium. Also make sure that the archive configuration is set same for both TriviaApp and Social. i.e. if your TriviaApps archive scheme is set to ReleasePremium, your Socials archive scheme also need to be set into ReleasePremium.Social in each .swift files when its already added in the Bridging-Header.h.#use_frameworks! into use_frameworks! from you Podfile. Sometime re installing pod works if Social has any dependency on pods.至于 xCode 12 和模拟器,
当您在项目导航器中导航到 Pods.xcodeproj 并在“排除的架构”下的构建设置中,对于每个调试和发布,选择值为arm64的“任何iOS模拟器SDK”时,该错误可能会消失。
确保,Find implicit Dependencies在Scheme中的Build选项中已经开启了!
解决苹果 iOS xcode 版本 12.3 (12C33) 的 Webview问题
方法1:只需执行3步:
打开项目.xcodeproj
退出 Xcode
重新打开项目从.xcworkspace
完毕
方法 2:只需执行 3 个步骤:
打开podfile -> 添加use_frameworks!podfile -> 保存pod文件
退出 Xcode
跑步pod install
重新打开项目从.xcworkspace
全做完了
几天前我也遇到了同样的错误.以下是我解决问题的方法:
错误是"找不到模块"
转到项目构建设置:
创建一个新的桥接头文件:例如TestProject-Bridging-Header.h并放在Swift编译器→Objective-C生成的接口头名称下(参见上图)
就这样.
没有这样的模块编译错误
这是编译时错误。你可以在很多情况下得到它:
.xcodeproj 被打开而不是 .xcworkspacemodule.modulemap或.swiftmodule[关于]Objective-C 库/框架目标
确保生成的二进制module.modulemap文件包含文件并且它的头文件位于Build Phases -> Headers section
Framework Search Paths
消费者 -> 框架
如果您尝试在不设置Framework Search Paths(消费者)的情况下构建应用程序。设置Framework Search Path为指向框架资源后,Xcode 将成功构建项目。但是,当您在模拟器中运行该应用程序时,会出现崩溃的原因:Image not found关于
它可以是绝对路径或相对路径,例如工作区$(SRCROOT)或$(SRCROOT)/..工作区
Import Paths
Swift 消费者 -> Swift 静态库
将Import Paths(消费者)应指向.swiftmodule
Find Implicit Dependencies
当您有隐式依赖但Find Implicit Dependencies被关闭时
可可豆
pod deintegrate
pod install
Run Code Online (Sandbox Code Playgroud)
可可豆 UI Test Bundle
用于App Target从 CocoaPods 使用附加依赖项的地方。为了解决它使用inherit![关于]中Podfile
我遇到了同样的错误
import Firebase
Run Code Online (Sandbox Code Playgroud)
但是后来注意到我没有将 pod 添加到主要目标部分,而只是添加到 Podfile 中的 Test 和 TestUI 目标。
随着命令
pod init
Run Code Online (Sandbox Code Playgroud)
对于 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
Run Code Online (Sandbox Code Playgroud)
因此,需要确保将 pod 添加到任何适当的占位符。
对我来说,对于选定的配置,仅构建活动架构被设置为是。这做到了:
从左侧的项目导航器中选择“Pods”> 选择“Build Settings”>“Build Active Architecture Only”到“ No”
如果要为tvOS之类的平台构建,请确保已选择Apple TV(即匹配)模拟器。
使用选定的iOS模拟器构建tvOS应用确实给了我这个错误。花了一个小时的大部分时间来寻找各种各样的构建问题。
小智 5
当我使用添加几个框架时,我遇到了同样的错误Cocoapods。如果我们在项目中使用 Pod,我们应该xcodeworkspace使用xcodeproject. 为了通过 xcodebuild 运行该项目,我-workspace <workspacename>在命令中添加了参数xcodebuild,它运行得很好。
在我的例子中,应用程序 IPHONEOS_DEPLOYMENT_TARGET 被设置为 9.3 而在我新创建的框架中它被设置为 10.2
隐式依赖解析器忽略了我的新框架,因为目标平台的要求高于应用程序要求。
在调整框架iOS 部署目标以匹配我的应用程序部署目标后,框架编译和链接成功。
小智 5
我在 xcode 10.3 上遇到了类似的问题。xCode 无法识别 pod 中的文件。这里我是这样解决的:
TL;DR:检查 Podfile 中特定目标的情况shared_pods
在我把头撞在墙上并尝试了上周发布的所有其他答案之后,我终于找到了解决方案。
我有两个不同的目标 - 一个用于发布,一个用于开发。开发目标是在发布目标很久之后创建的,这导致我忘记了该目标的一些设置步骤。
我能够使用我的发布目标正确编译我的项目,但我的开发目标有问题。
第二十次查看我的 Podfile 后,我注意到在我的shared_pods定义下只有以下内容:
target 'Release' do
shared_pods
end
Run Code Online (Sandbox Code Playgroud)
我需要做的是将第二个目标添加到我的 Podfile 中,这解决了问题:
target 'Release' do
shared_pods
end
target 'Development' do
shared_pods
end
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助某人避免几天的沮丧。
| 归档时间: |
|
| 查看次数: |
352192 次 |
| 最近记录: |