每当我尝试在 Xcode 6 Beta 4 中运行我的应用程序时,我都会收到错误消息:
The file "MyApp.app" couldn't be opened because you don't have permission to view it.
无论我针对什么模拟器或设备,都会出现此错误。
我努力了:
从 Xcode 中的 Organizer 中删除所有派生数据
修复我的驱动器上的权限
手动提升已构建的 MyApp.app 的权限
重新启动我的电脑
有没有其他人遇到过这个问题并找到了解决方案?
https://i.stack.imgur.com/4ZSJN.png
https://i.stack.imgur.com/XbR5N.png
DEVICE 也有问题(不仅仅是模拟器)?
其他解决方案仅在模拟器上为我修复它,而不是设备。
对我来说,当我尝试更改主要 info.plist 属性同时尝试更改我的应用程序名称时,就会出现这个问题(在 Xcode 6 中)。
在 info.plist 中,我已将 Executable File
名称更改为默认 ${EXECUTABLE_NAME}
以外的名称...
我把这个字段误认为是在跳板上的图标下更改应用程序名称的字段。
在 Xcode 中执行以下操作
窗口 --> 管理器 --> 项目 --> 有问题的应用程序 --> 派生数据中的删除按钮。
然后我清理了项目,瞧
作品
对我来说,一个简单的 Product -> Clean 效果很好
我已经通过清理构建文件夹来修复它。刚刚进入“产品”菜单并选项+单击“清洁”。之后一个问题就解决了。
项目的 Info.plist 有问题。我在 Xcode 6 beta 4 中创建了一个同名的新项目,然后用新项目替换了真实项目的 Info.plist。然后该项目构建并运行良好。
看看差异,看起来 plist 可能以某种方式与操场的 plist 混淆了。捆绑包标识符是“com.apple.dt.playground.iOS-18300-13”,可执行文件和捆绑包名称是“iOS”以及其他一些奇怪的东西。
这是完整的差异,以防有人需要参考:
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
- <string>iOS</string>
+ <string>${EXECUTABLE_NAME}</string>
<key>CFBundleIdentifier</key>
- <string>com.apple.dt.playground.iOS-18300-13</string>
+ <string>com.myCompany.${PRODUCT_NAME:rfc1034identifier}</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
- <string>iOS</string>
+ <string>${PRODUCT_NAME}</string>
<key>CFBundlePackageType</key>
- <string>AAPL</string>
+ <string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
- <key>CFBundleSupportedPlatforms</key>
- <array>
- <string>iPhoneSimulator</string>
- </array>
+ <key>CFBundleSignature</key>
+ <string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
- <key>DTPlatformName</key>
- <string>iphonesimulator</string>
- <key>DTSDKName</key>
- <string>iphonesimulator8.0</string>
- <key>LSBackgroundOnly</key>
- <true/>
<key>LSRequiresIPhoneOS</key>
<true/>
+ <key>UIMainStoryboardFile</key>
+ <string>Main</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
+ <key>UISupportedInterfaceOrientations</key>
+ <array>
+ <string>UIInterfaceOrientationPortrait</string>
+ <string>UIInterfaceOrientationLandscapeLeft</string>
+ <string>UIInterfaceOrientationLandscapeRight</string>
+ </array>
</dict>
</plist>
我在 Xcode 8.2 中也遇到过同样的错误。我发现的原因是在我的项目中添加了另一个 Info.plist,同时添加了库(手动复制)。
所以 Xcode 对选择正确的 Info.plist 感到困惑。
我刚刚从添加的库中删除了那个 Info.plist。
然后它在没有任何许可警报的情况下工作正常。
请检查您是否已将 Executable file => $(EXECUTABLE_NAME) 更改为任何其他名称。如果您更改了此名称,则会显示此错误。请用 $(EXECUTABLE_NAME) 替换它。
Product -> Clean (command shift K) 为我修复了它
我的天啊!!我花了几个小时来解决这个问题。
在 XCode 7.3 上,我的项目没有问题。
我犯的错误
我刚刚添加了物理文件夹并将我的文件移动到其中,问题开始了。
我尝试了一切
默认编译器
清洁和建造
重置模拟器和重启模拟器,Xcode,iPhone甚至mac
更新了 Info.plist
删除派生数据
编辑项目文件夹的权限
检查我的架构
没有任何效果:(
我是如何解决的
我正要创建新项目,然后我刚刚删除了我添加的那些物理文件夹,干净的构建和是的!
有用!!
https://i.stack.imgur.com/ETC1e.png
尝试“cmd+shift+k”来清理项目并重建。至少它对我有用
有时在新版本的 Xcode 中打开旧项目会收到此消息。
转到问题导航器并按照警告提示“更新到重新设置的设置”。
砰,魔法!
对于下载的示例代码,我遇到了类似的问题(xCode 6.2)。我尝试将 Executable Name
设置为 Default in Info.plist
但这没有用。
而是将 C/C++/Objective-C 的编译器更改为默认编译器 (Apple LLVM 6.0),而不是项目的 Unsupported Compiler(com.apple.compilers.llvmgcc42)。
https://i.stack.imgur.com/fWcIl.png
我的应用程序在 XCode 9.4 上运行良好,但是当我在 XCode 10 中打开我的项目时,我遇到了这个问题。对我来说,问题是构建设置。我在此页面 https://forums.developer.apple.com/thread/112141 中找到了答案。
简而言之,转到 File > Workspace Settings... > Build System 并将其更改为“Legacy Build System”
1)首先构建选项。
2) 然后将“Compiler for C/C++/Objective-C”的值更改为 Default Compiler。
清洁和工作:-)
我发现在构建选项中将编译器更改为 LLVM 6.0 对我来说已经足够了(xcode 6.1)
https://i.stack.imgur.com/4pxgg.png
对于 4 年前提交的从 gitHub 下载的项目,我在 Xcode 6.1.1 上遇到了同样的错误。对我来说,将 Architectures 设置为默认值 Standard architectures(armv7,arm64) 并将 Compiler for C/C++/Objective-C 设置为 Building Settings 中的 Default Compiler 有效。
我在我的项目中遇到了同样的问题。后来发现项目中使用的第三方(fmdb for SQLite)文件包含Info.plist。
只需删除 Info.plist 文件对我有用!
https://i.stack.imgur.com/2yYnu.png
我最近在 Xcode 6.0.1 中运行旧项目(最初在 Xcode 4.x 中创建)时遇到了同样的问题。
我通过将 Building Settings 中的 Architectures 更改为默认值“Standard architectures(armv7,arm64)”解决了这个问题。
希望这可以帮助遇到类似问题的任何人:)
我的许多旧项目都出现了这个错误,我要从橱柜里拿出来更新。似乎出于某种原因,将 Xcode 6 与旧代码一起使用似乎会导致这种情况。
我已通过以下方式在我完成此操作的所有项目中修复了此问题:
删除产品中的派生数据:干净地转到项目目标中的构建设置并转到构建选项并将“C/C++/Objective-C 编译器”的值更改为“默认编译器”。
就我而言,我只是将 info.plist
中的 Bundle Name
和 Executable file
值重命名为与项目名称相同。它对我有用。
我尝试了所有列出的答案,但没有一个有用。问题是由于存在通过 cocoapods 从子模块链接的另一个 plist 文件。幸运的是这是我自己的模块,所以我只是从子模块项目中删除了这个 plist 并重新安装了 pod。
解决方案
后来我明白问题的关键在于第二个 plist 的名称:只是 info.plist
。您可以重命名文件并通过子模块的 sources
部分重新链接它
第二个 plist 文件有一个唯一的名称,因此 Xcode 不应该感到沮丧。甚至我的目标设置也指向主 plist,而不是 info.plist
。看起来 Xcode 对这个名字有特殊的考虑
Xcode 6.4 和 Xcode 7.0 中重现的错误
Info.plist
,它属于一些不相关的依赖项。
我所做的是在这里:
我从项目中删除了 VALIDARCHS
我从 Target 中删除了 VALIDARCHS
仅构建活动架构 = YES(用于调试)架构
标准架构 $(ARCHS_STANDARD)
此外,文件 -> 项目/工作区设置 == 新构建系统
Xcode 版本 12.0 (12A7209)
我有这个类似的问题。不知何故,我对关键可执行文件的价值混淆了。只需将其改回 ${EXECUTABLE_NAME} (在您的项目 > 信息下)。为我工作!
如果您在 Google 上搜索此错误消息的文本,您会在 StackOverflow、Apple 开发论坛、Reddit 等中找到大约 20 个关于 Xcode 无法运行带有此错误消息的已编译可执行文件的线程。
在这些线程中,您会发现许多人提供有关如何解决问题的各种建议:更改产品名称以匹配项目名称、更改构建阶段选项、使用 info.plist 的内容、将编译器更改为 Clang 或从 Clang 更改编译器等。大概这些建议是真诚地提供,因为他们为某人解决了问题,但答案多种多样,很明显错误消息是通用的,如果您收到它,这一点很重要:这个错误似乎意味着有问题二进制文件。忽略它的实际文本:它可能与权限无关。
这个错误没有通用的解决方案。错误消息是完全通用的;假设它的意思是“坏的二进制文件”。如果您收到它,解决方案取决于您要做什么,发生了什么变化,为什么突然看到这个错误。谷歌你的具体情况,而不是这个错误消息。
在我的情况下,我感觉这是一个常见的情况,我试图做的是在现代 Xcode 上构建一个旧的 iOS 项目,我想是九岁了。解决方案是导致编译错误的 switch to the legacy build system,因为在旧项目中没有现代架构目标,which could be fixed by manually adding them。
在我的情况下,包含 main(...) 函数的 main.m 未包含在“构建阶段”的“编译源”列表中。要检查是否是这种情况,请进入构建阶段并查看您的 main.m 是否出现在“编译源”列表中。
不知道问题是否相关,但也许它可以成为像我这样拉扯头发的人的解决方案。
就我而言,我有一个有很多目标的项目。每个目标都是该基础项目的定制,即 Cocoa Touch Static Library
和目标 Applications
。即使将 main
文件添加到库编译中,但不是在每个目标中,也会出现该错误消息。那我做了什么?手动将 main
文件添加到 Compile Sources
部分中的每个目标和宾果游戏,一切正常。
对我来说,错误出现在键 CFBundleExecutable
处的 .plist 文件中。我重命名了可执行文件,删除了两个单词之间的空格。 (例如:从“Wild Racer”到“WildRacer”)。花了1天时间才发现!!
Xcode 在调试中太无用了!
为我解决的问题是将“仅构建活动架构”从“否”设置为“是”。
使用 X 代码 6.3.2
[构建设置] 选项。 [全部]-[构建选项]-[C/C++/Objective-C 编译器]-[默认编译器 (Apple LLVM 6.1)]
然后重建项目,它运行正常。