安装失败“无效参数”当试图运行今天应用程序扩展。

35

我添加了一个纯净的“Today”应用程序扩展,并使用XCode创建的新方案运行。
在构建完成后(“Build Succeeded”弹出),它立即失败并显示以下错误:

安装失败
无效参数

我已经尝试寻找答案6个小时了,但迄今为止没有成功。 请帮忙!


可能是重复的问题:安装失败:无效参数-iOS扩展 - GreenAsJade
@GreenAsJade。这不是另一个问题的重复,而是我包含了一个名为“contents”的引用文件夹。 - eric
11个回答

77

检查 Info.plist 文件中 Bundle Identifier 是否为空


4
我升级了一个旧的XCode项目,它让我用$(PRODUCT_BUNDLE_IDENTIFIER)替换了Info.plist中的硬编码字符串。我不得不将那个硬编码字符串放入新的“包装”类别下的“产品包标识符”部分。 - esilver
升级到推荐设置,将我的 plist 重置为空值...不得不回退! - karim
这对我不起作用。下面的答案确实有效。 - andrewmclean
如果还有其他人在苦苦寻找为什么会抛出这个错误,而且这个答案没有帮助到你的话,请检查一下你的实际捆绑标识符是否设置在Targets->yourtarget->general->Bundle Identifier中。我的是空的。 - Minimi

39

试试这个:

  1. 退出 Xcode
  2. 手动清空 ~/Library/Developer/Xcode/DerivedData
  3. 运行命令 rm -rf "$(getconf DARWIN_USER_CACHE_DIR)/org.llvm.clang/ModuleCache"
  4. iOS 模拟器 > 重置内容和设置

是的,这对我也有效。当我从6.3更新到Xcode 6.4时出现了错误。 - MilanPanchal
非常感谢 :) 我尝试了很多解决方案,但这个解决了我的问题。 :) - iamyogish
我不得不做这个,并且使用“通过切换到组/手动引用来修复从文件系统添加资源文件夹”的技巧。 - geerlingguy
应该是被接受的答案。这里也可以工作。谢谢! - Gabe
应用以上步骤后,我不得不关闭Xcode并重新打开它,然后它就可以工作了。谢谢。 - DILIP KOSURI

18

也许您正在捆绑引用了冲突的“contents”文件夹(蓝色)。

提示:更改所述“contents”文件夹的名称 :)


3
哈!太棒了!我曾经一度感到非常困惑。谢谢你指出这个问题。此外,可能需要重新启动 Xcode。我删除了派生数据,并重启了 Xcode,以解决这个问题(在重命名我的文件夹后)。 - eric
5
如果文件夹名称是“资源”,那么它就是同样的问题。还需要清理DerivedData。 - amarkovits
@amarkovits +1,如果您引用了“资源”文件夹,则无法安装。 - derpoliuk
1
"Resources" 是个恶魔。 - J.Wang

8
这也可能会发生在Xcode 7中,因为“升级到推荐设置”会将CFBundleIdentifier更改为指向$(PRODUCT_BUNDLE_IDENTIFIER)而不是旧的$(BUNDLE_IDENTIFIER)
苹果在Xcode 7发布说明中表示, PRODUCT_BUNDLE_IDENTIFIER 现在是“建议为目标设置Bundle标识符的地方”。因此,如果您在项目中的其他位置使用了BUNDLE_IDENTIFIER,请确保将其更改为PRODUCT_BUNDLE_IDENTIFIER以保持同步。

1
这种情况最近发生在我身上。当我查看目标(在“通用”下)的Bundle Identifier字段时,它是空的,即使Info.plist有正确的标识符也是如此。还有一个警告,即配置文件中的包标识符与之不匹配。我输入了Bundle Identifier,警告消失了,然后我就可以正常运行了。我猜这就是所谓的“无效参数”。 - QBit

8
这个问题出现在我的手机内存太低无法安装应用程序时。我已经清理了手机,问题解决了!另一个提示可能是这个帖子

3

我曾经在不同的情况下遇到相同的错误,后来才意识到我不小心通过搜索和替换操作搞乱了Info.plist文件(感谢user2866588!)。

一旦修复了那个文件,错误就消失了。虽然机会不大,但你永远都不知道...


2

当我的测试手机剩余内存较低(约为288MB)时,我遇到了这个错误。重启并清除一些缓存数据后,我成功安装了我的应用程序。


2

这里是图片描述。!! 我遇到了这个错误,只需输入Bundle标识符即可解决。(您可以通过右键单击info.plist并转到打开方式然后选择源代码来获取bundle标识符,在此处找到CFBundleURLSchemes,在其下面的字符串标记中包含您的bundle标识符)复制Bundle标识符并将其粘贴到TARGET选择常规现在在Identity下,您将看到Bundle标识符,将其粘贴并输入。然后只需运行代码。Happy Coding!!!

输入图像描述

输入图像描述

输入图像描述


1
我发现info.plist文件不应该被本地化!我试图本地化我的项目,并尝试在所有的plist和字符串文件上启用本地化。结果是,我无法将我的应用程序安装到模拟器上,出现了无效的参数错误。
我花了1.5天的时间试图找到原因。我尝试了所有上面列出的解决方案,但没有成功。最后,放弃了所有本地化更改,重新开始。这一次,我先尝试本地化一个文件,然后编译代码,尝试在模拟器上运行我的应用程序。
问题在于info.plist文件。你可以对它进行本地化。结果是,en版本被移动到en.lproj文件夹中。也就是说,在项目文件夹中不再有info.plist文件。因此,Xcode找不到它并引发异常。
另一种验证方法是检查您的项目设置。选择您的目标和常规选项卡。身份应该像:

enter image description here

如果您的项目设置类似于这样,您需要找到info.plist,这意味着info.plist丢失了。

enter image description here

你只需从项目设置中的en.lproj文件夹中定位本地化的info.plist

enter image description here

不要直接本地化info.plist文件。您可以通过本地化infoplist.strings文件来进行本地化。
这可能是导致无效参数异常的原因之一,就像在我的情况下一样。
我也在this上写了一篇博客。

0
我在安装新的pods(AWS)到我的项目后遇到了这个错误。不知何故,关于Info.plist文件的Build Settings中的条目被清除了。通过输入正确的文件路径(可以在Finder中找到),我的项目最终又编译成功了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接