在Xcode 6 Beta 4中运行应用程序时,“文件“ MyApp.app”无法打开,因为您没有查看权限”


273

每当我尝试在Xcode 6 Beta 4中运行我的应用程序时,都会收到错误消息:

The file "MyApp.app" couldn't be opened because you don't have permission to view it.

无论我针对哪种模拟器或设备,都会出现此错误。

我努力了:

  • 在Xcode中从管理器中删除所有派生数据
  • 修复驱动器上的权限
  • 手动提升内置MyApp.app的权限
  • 重新启动电脑

还有其他人遇到这个问题并找到解决方案吗?

屏幕截图


1
我在XCode 6.1中遇到相同的问题。最初,问题只在于模拟器,现在,在遵循了本文中的一些线索之后,我在运行目标手机时也遇到了相同的错误。
巴马科2014年

1
我关注了@YuAn解决方案。它对于模拟器非常有效。谢谢但是,当我尝试在设备上构建它时,仍然收到消息“我无权查看它”。即使在删除派生数据的内容后尝试构建后,xcode的products目录中以及派生数据目录中的myapp.app文件也显示为已阻止。
Srinivasan N

4
触发此问题的另一种(愚蠢的)方法:编译仅包含资源而没有源文件的应用程序。不要问我我怎么知道的:)
Krumelur 2015年

4
产品>清洁为我解决这个问题
mazorati

就我而言,这些都不起作用!!一旦我从Xcode中删除了pilst文件,并再次附加到项目中,它的工作就像一个魅力!希望能帮助你们!
拉维

Answers:


252

我使用Xcode6 GM。我遇到了同样的问题。我要做的是转到“构建设置”->“构建选项”。然后,我将“ C / C ++ / Objective-C编译器”的值更改为“默认编译器”。在此处输入图片说明


146

DEVICE上也有问题(不仅仅是模拟器)?


其他解决方案仅在模拟器上(而非设备)为我修复了该问题。

对我来说,当我尝试更改主info.plist时,会发生此问题(在Xcode 6中)属性,同时尝试更改应用程序名称时发生的。

info.plist中,我已将Executable File名称更改为默认名称以外的名称${EXECUTABLE_NAME} ...

我将该字段误认为是更改跳板上图标下的应用程序名称的字段。


10
就我而言,这很有效,谢谢。我一直在更改我的<appname> -Info.plist文件中的其他类似字段,并且一旦按照您的建议将Executable File更改回$ {EXECUTABLE_NAME},它就会生成并运行。
Slowburner 2014年

谢谢..我的情况也一样
Bala Vishnu

非常感谢@Albert Renshaw,您的回答解决了我的问题。自最近两天以来,我一直在寻找解决方案。
Nilesh Kikani'1

同样的问题,字段名称是“捆绑显示名称”,用于在图标下更改名称
WebOrCode

1
这导致我找到解决方案,当我将外部库的源代码包含到我的代码中时,我得到了一个额外的Info.plist,并且他们在其资产组文件夹中有一个Info.plist。删除多余的Info.plist解决了我的问题。
chadbag '18

145

在Xcode中执行以下操作

窗口->管理器->项目->带有问题的应用程序->派生数据中的删除按钮。

然后我清理了项目,瞧

作品


我关注了@YuAn解决方案。它对于模拟器非常有效,但是当我尝试在设备上构建它时,仍然收到消息“我没有查看它的许可”。即使在删除派生数据的内容后尝试构建后,xcode的products目录中以及派生数据目录中的myapp.app文件也显示为已阻止。任何想法出了什么问题吗?
Srinivasan N

这对我有用,但它一直在发生。每当我想在模拟器中运行应用程序时,我都无法连续删除派生数据...
zumzum 2015年

我正面临着同样的问题,尝试了各种解决方案,但没有为我工作。帮助将不胜感激
Giriraj.Mulay


45

我已经通过清理构建文件夹来修复它。只需转到“产品”菜单,然后单击Option +单击“清洁”。之后,问题解决了。


30

项目的Info.plist存在问题。我在Xcode 6 beta 4中创建了一个同名的新项目,然后用新项目替换了实际项目的Info.plist。然后,该项目便建成并运行良好。

看一下diff,看来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>

是的,我有类似的问题。Info.plist文件为二进制文件格式。不得不进行转换
卡·托雷拉

28

我在Xcode 8.2中遇到了同样的错误。我找到我的原因是另一个Info.plist是,在添加库(手动复制)时,在我的项目中添加了。

因此,Xcode对于选择正确的Info.plist感到困惑。

我刚刚从添加的库中删除了该Info.plist。

然后,它工作正常,没有任何权限警报。


您还可以将Info.plist的名称更改为FRAMEWORK_NAME_HEREInfo.plist
Jeremy Kelleher

同样,从另一个项目复制
Firas Shrourou

这正是我的问题所在。我添加了另一个swift文件文件夹,其中有一个plist文件。我删除了该plist文件,一切都很好..谢谢!
Lkabo

17

请检查您是否将可执行文件=> $(EXECUTABLE_NAME)更改为任何其他名称。如果您更改了此名称,则会显示此错误。请用$(EXECUTABLE_NAME)替换它。


是的,尝试更改应用名称时发生在我身上。因此,当季开发人员心不在p地进入plist并更改了“可执行文件”,而实际上我的意思是更改“捆绑包名称”
MobileMon 2015年

这为我解决了。重命名项目后发生了这种情况。谢谢。
emiliomarin

14

产品->清洁(命令转换K)为我修复了它


提醒您,有时简单的解决方案是可行的。
Pescolly 2015年

在Xcode 7.2.1下,这里需要干净的Xcode重新启动。单靠清理就使我陷入了“未知错误”,而没有尝试进行构建。
汤米

13

我的天啊!!我花了几个小时来解决这个问题。

XCode 7.3上,我的项目没有问题。

我做错了

我只是添加了物理文件夹并将文件移入其中,问题开始了。

我尝试了一切

  • 默认编译器
  • 清理并建造
  • 重置模拟器并重启模拟器,Xcode,iPhone甚至Mac
  • 更新的Info.plist
  • 删除衍生数据
  • 编辑项目文件夹上的权限
  • 检查我的架构

没有任何效果:(

我如何解决

我准备创建一个新项目,然后删除了我添加的那些物理文件夹,清理了构建并确定了!

有用!!

在此处输入图片说明


1
是的,对我也是。
yeahdixon

这帮助了我。但我认为我可以使用文件夹引用。奇怪。
user1105951


11

对于示例代码下载,我遇到了类似的问题(xCode 6.2)。我试图设置Executable Name为,Default in Info.plist但这没有用。

相反,改变编译器C / C ++ / Objective-C的默认的编译器(苹果LLVM 6.0) ,而不是不支持的编译器(com.apple.compilers.llvmgcc42)项目。

屏幕截图


@iOSRocks:欢迎好友!
Jayprakash Dubey 2015年

10

1)首先选择构建选项。

2)然后将“ C / C ++ / Objective-C编译器”的值更改为“默认编译器”。

清洁和工作:-)


1
要清除它:1.转到“构建设置”(“ 全部”和“ 合并”)2.搜索“ 构建选项” 3.将“ C / C ++ / Objective-C编译器”设置为“ 默认编译器”
nburk 2014年

人们为什么要投票最多评分此副本?
Kiran 2015年

10

有时在新版本的Xcode中打开旧项目会收到此消息。

转到问题导航器,并按照警告提示“更新为已确认的设置”。

oom,魔​​术!


10

我发现在Build Options中将编译器更改为LLVM 6.0对我来说已经足够(xcode 6.1)

在此处输入图片说明


10

对于从gitHub下载的一个项目,我在Xcode 6.1.1上遇到了相同的错误,该错误是4年前提交的。对我而言,在“ 建筑设置” 中将“架构”设置为默认值“ 标准架构”(armv7,arm64)“ C / C ++ / Objective-C的编译器为“默认编译器”是可行的


9

我最近遇到了在Xcode 6.0.1中运行旧项目(最初在Xcode 4.x中创建)的相同问题。

我通过改变固定的问题架构建设设定 s到默认值,这是“ 标准架构(ARMv7的,arm64) ”。

希望这可以对遇到类似问题的人有所帮助:)


此答案应标记为正确的答案@drewag
Fede Cugliandolo 2014年

看来这个错误消息背后有不同的问题,无论如何,这就是用XCode 6.1解决了我的问题的原因
Fabio Napodano 2014年

9

我从橱柜中进行更新的许多较旧的项目都出现了此错误。似乎将Xcode 6与较旧的代码一起使用似乎可以实现此目的。

我已经通过以下方法解决了所有与此相关的项目:

  1. 删除衍生数据
  2. 产品:做一个干净的
  3. 请转到项目“目标”中的“生成设置”,然后转到“生成选项”,然后将“ C / C ++ / Objective-C 编译器 ” 的值更改为“ 默认编译器 ”。

9

我在项目中遇到了同样的问题。后来发现,第三方(FMDB项目中使用的SQLite的)文件中包含的Info.plist

只需删除Info.plist文件就可以为我工作!

信息清单


也为我工作。
mkll

9

我的应用程序在XCode 9.4上运行良好,但是当我在XCode 10中打开项目时,遇到了这个问题。对我来说,问题是构建设置。我在此页面https://forums.developer.apple.com/thread/112141找到了答案。

简而言之,转到“文件”>“工作区设置...”>“构建系统”,然后将其更改为“旧版构建系统”


8

在我的情况下,我只是将Bundle NameExecutable file值重命名info.plist为项目名称。它为我工作。


8

我尝试了所有列出的答案,但都没有用。问题是由于存在另一个通过子框从子模块链接的plist文件。幸运的是,这是我自己的模块,因此我只是从子模块项目中删除了此plist并重新安装了pod。

后来,我了解到问题的关键在于第二个plist的名称:简单地info.plist。您可以重命名文件并通过sources子模块的一部分重新链接它

第二个plist文件具有唯一的名称,因此不应使Xcode感到沮丧。甚至我的目标设置都指向主列表,而不是指向info.plist。看起来Xcode对该名称有特殊考虑

Xcode 6.4Xcode 7.0中再现的错误


我也发生了类似的事情。我的Info.plist配置不正确,因此XCode第一次Info.plist碰巧在项目文件夹中找到了该文件夹,该文件夹属于一些不相关的依赖项。
Ohad Schneider

谢谢上帝,您为我节省了数小时的毫无意义的Xcode调试”
Alex

6

我有这个类似的问题。不知何故,我对关键可执行文件的价值感到困惑。只需将其更改回$ {EXECUTABLE_NAME}(在您的项目>信息下)。为我工作!


1
需要注意的一件事是,我的设置为$(EXECUTABLE_NAME),并将其更新为$ {EXECUTABLE_NAME}可以解决我的问题。
埃里克

5

不知道问题是否相关,但是对于像我这样的人来说,这可能是一个解决方案。

就我而言,我有一个目标很多的项目。每个目标都是该基础项目的定制,目标是Cocoa Touch Static LibraryApplications。即使将main文件添加到库编译中,而不是添加到每个目标中,该错误消息也会出现。那我做了什么?手动将main文件添加到Compile Sourcessection和bingo 中的每个目标,一切正常。


谢谢,这对您有很大帮助。
JakeP 2015年

5

对我来说,错误是在关键的.plist文件中 CFBundleExecutable。我已将可执行文件重命名,删除了两个单词之间的空格。(例如:从“狂野赛车手”到“狂野赛车手”)。花了1天时间发现它!

Xcode对调试毫无帮助!


4

在我的情况下,包含main(...)函数的main.m未包含在“构建阶段”的“编译源”列表中。要检查是否存在这种情况,请进入“构建阶段”,然后查看main.m是否出现在“编译源”列表中。


1
我不知道您是怎么发现的,这不是我的确切问题,但是它使我想到了解决方案,谢谢!!
2015年

3

有什么解决它,我是设置构建有源体系仅


3

使用X代码6.3.2

[内部设置]选项。[全部]-[构建选项]-[C / C ++ / Objective-C的编译器]-[默认编译器(Apple LLVM 6.1)]

然后重建项目,它运行正常。



2

由于我今天早上也遇到了这个问题,没有一个答案能帮助我,特别是在我的情况下。经过数小时的尝试,我发现了问题所在。

实际上,在错误地使用情节提要时,我只是将“ Main.storyboard ” 重命名为“ .storyboard ”,然后将其更改回“ Main.storyboard ”即可解决我的问题。

解决方案(根据我的问题):可能是您重命名了任何文件,由于xcode无法加载该文件并引发了问题。例如:如上所述,更改“ 可执行文件 ”名称的情况
可能的问题区域:可能是您正在使用的最后几个文件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.