打开模块“Swift”的导入文件权限被拒绝

Posted

技术标签:

【中文标题】打开模块“Swift”的导入文件权限被拒绝【英文标题】:Opening import file for module 'Swift' Permission denied 【发布时间】:2015-05-12 16:20:10 【问题描述】:

我是在 Xcode 和 swift 中工作的新手。 我在我的 macbook 上做一个 ios 项目(在度假时),我一直在使用 github 版本控制,我现在已经回到家里,现在在我的 mac mini 上工作。 目前在 Xcode 6.3.1 中工作,目标是 iOS 8.3

所以我在 mac mini 上克隆了我的项目,打开并尝试构建项目时出现错误:

打开模块“Swift”的导入文件:权限被拒绝

我正在查看错误,它似乎是 4 个问题,我的 AppDelegate.swift 和 3 个 ViewController.swift 文件(我目前只有 3 个)

我在这里查看了另一个问题 - Opening import file for module 'Swift': Permission denied,但这与我的问题无关。

我注意到的几件事是

    我的一些框架,即解析和螺栓以红色突出显示, 我将它们指向我的 mac mini 上的这些位置(不确定是否 这是正确的做法),但它们没有突出显示 没有了。 在 products 文件夹下,我的 .app 和 .xctest 文件被突出显示 红色的。不知道如何解决这个问题

有没有人遇到过这种情况?非常感谢你们的帮助。

干杯 加雷斯

【问题讨论】:

我遇到了同样的问题,我刚刚创建了另一个项目并且工作正常。你在使用头文件吗? 不,我没有任何头文件。 【参考方案1】:

在我们的例子中,错误在于某些框架是在 OSX 10.10 上使用 XCode 7.1 构建的,然后将二进制文件上传到依赖项管理器 (Carthage)。

失败的项目是在 OSX 10.11 上使用 XCode 7.1 编译的,它正在从 Carthage 中提取这些框架。

显然,OSX 版本的不匹配导致了问题。在 OSX 10.11 上重新编译所有框架后,它就停止了失败。

请注意,有时它会在我们的一个框架上出现permission denied 失败,有时在CoreData 上出现permission denied。用 10.11 构建的二进制文件替换框架二进制文件解决了这个问题。 附带说明一下,使用 10.11 构建的框架似乎在 10.10 上运行良好。

【讨论】:

感谢 Marco... 总是很高兴有其他修复示例以供将来参考 :)【参考方案2】:

所以我弄清楚是什么导致了这个问题。是“构建设置”下的“搜索路径”在错误的位置寻找我的框架。类似于 Apple Mach-O 链接器错误修复

它在我的 macbook pro 上搜索框架,我删除了“框架搜索路径”,然后重新添加了我的 Parse.framework、Bolts.framework 和 FBSDKCoreKit.framework。

项目现在可以正常构建和运行,没有任何问题。

【讨论】:

【参考方案3】:

对于仍有问题的任何人,这是我的解决方案:

我尝试了所有推荐的方法,从删除任何用户数据到从头开始设置项目再到重新安装 Xcode - 对我没有任何帮助。

最后,事实证明我使用的框架取决于错误消息中提到的库(Opening import file for module 'FRAMEWORK' Permission denied,在我的例子中是 CoreLocation)。我构建了其中的几个,并且该项目在另一台 Mac 上构建得很好。从 Github 拉取这个版本时,构建的框架抛出了上述错误。所以我从头开始构建每个框架,并将这些框架嵌入到我的最终项目中。这次一切正常,就像在另一台 Mac 上一样。

就我的两分钱,因为到目前为止我所看到的一切都可以通过与此不同的方式解决。

【讨论】:

这解决了我的问题,因为我在优胜美地有一台 mac,另一台在 El Capitan 上【参考方案4】:

我通过删除Build Settings下Xcode Search Paths中的framework search path of other User解决了这个问题,这个错误发生在我尝试在两个用户之间移动项目,删除路径时一切正常。

【讨论】:

我的情况和你一样,但是我删除了路径,没有任何效果。您是如何设法解决任何其他细节的? 你说的作品还是一样的。还是同一个问题,还是另一个问题? 我有不同的 mac 用户和不同的 apple-id 我想通过这两个帐户进行开发,但新的 mac 用户无法构建代码。我认为我们的情况与您所说的在两个用户之间移动的情况相同。 我通过将 Build Setting 下的 framework search pathlibrary search path 替换为 "$(PROJECT_DIR) /",只要确保你有正确的路径。没有任何棘手的步骤。哈哈 。希望我的经验能很快帮到你。【参考方案5】:

对于遇到此问题的其他人,这是我为解决此问题所做的工作。我尝试了上述海报建议的一切,但没有成功。这是我的设置:

MacOS Sierra 10.12.5 Xcode 8.2 Carthage 0.22 在我们的 CI 基础架构上构建的框架

我收到内部构建框架的“权限被拒绝”错误。

如果我将所有框架替换为在我的机器上使用 Carthage 构建的框架,那么一切都会正常工作。如果我使用从 CI 构建的那些,我会看到“Permission Denied”错误。

我仔细检查了操作系统版本和 Xcode 版本是否相同。我将在我的机器上构建的框架的 Info.plist 值与来自 CI 基础架构的框架的值进行了比较。我仔细检查了 Xcode 下所有 Carthage 构建的框架和内部框架的文件权限。

如果我用我在本地构建的框架替换了麻烦的内部构建框架,然后错误就会移动并在来自 Apple 的 UserNotifications 模块上给我一个“权限被拒绝”错误。这毫无意义。

除了重新安装 MacOS 之外,我什么都没做。

事实证明,在我向我的机器添加了一个新的管理员用户以测试其他内容之后,问题就开始了。该用户只使用了 git。

在我删除该用户后,我能够再次构建,不管你信不信。

【讨论】:

【参考方案6】:

就我而言,当我将项目从 git 克隆到新的 Mac(macOS Sierra 和 Xcode 7.3)时。这是我的错误消息:“正在打开模块‘MobileCoreServices’的导入文件:权限被拒绝”。

我尝试重新安装 Xcode,但没有任何效果。

最后,我通过重新安装 macOS Sierra 解决了这个问题。

我的建议是:我在新Mac上新建一个管理员账号,切换到新账号,然后删除旧管理员账号,也许我不应该删除旧管理员账号。

【讨论】:

我不完全确定这是重新安装 OSX Sierra 的最佳解决方案,重新安装整个操作系统有点过头了。

以上是关于打开模块“Swift”的导入文件权限被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

Carthage:打开模块的导入文件 * 权限被拒绝

无法打开输出文件,权限被拒绝

无法打开流或文件:无法打开流:权限被拒绝[重复]

使用 PHP 打开或创建文件时权限被拒绝

Swift Realm模拟器权限被拒绝

无法打开流或文件:无法打开流:权限被拒绝