validation错误:该软件包包含不允许的文件“Frameworks”

我和这个家伙 , 这个家伙 ,还有这个家伙一样,都有同样的问题(我不确定他们是否都是家伙)。

他们最终都find了自己的解决scheme,但没有一个适用于我的问题。 我在我的iOS 8应用程序中使用包含扩展名的Xcode 6.1。 应用程序和扩展都依赖于包含的框架。 当我尝试将应用程序提交到app store时,我收到的validation警告是"ERROR ITMS-9000: Invalid bundle. The bundle at 'xxxxx.appex' contains disallowed file 'Frameworks'".

我甚至找不到一个名为Frameworks的文件。 共享框架应该保存在/ Library / Frameworks,这是Apple推荐的保存位置。 该项目也使用Cocoapods,这是我唯一可能的罪魁祸首,因为它的configuration文件中引用了$ FRAMEWORK_PATH(尽pipebuild文件夹不包含具有该名称的文件或文件夹)。

好的为未来的观众这里是修复:

当您创build自己的iOS框架(我正在使用Xcode 6.1)时,最终产品在框架捆绑包中包含一个“框架”文件夹。 即MyFramework.framework / Frameworks。 即使您没有指定复制文件/embedded框架构build阶段,也会发生这种情况。

你必须做的是进入你的框架包,find空的框架文件夹,并删除它。 这不应该以任何方式影响您的应用程序的function。 然后构build您的应用程序并检查embedded式框架没有按计划的框架文件夹。

您的存档现在不应该包含有问题的文件夹,错误应该消失!

我更改了生成设置>打包>在我的扩展中将模块设置为YES,并观看应用程序目标。 为我工作得很好。

在我的情况下,解决scheme如下:

尝试创build脚本“有问题的目标” – >“构build阶段”,然后点击+并selectNew Run Script Phase ,运行脚本应该去所有其他人。 插入:

 cd "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/" if [[ -d "Frameworks" ]]; then rm -fr Frameworks fi 

然后清理项目并尝试再次创build一个存档。 以下问题提供了这些答案:

我希望这可以帮助你。

继续工作,我注意到我的共享扩展有一个“Embed Frameworks”构build阶段,目标设置为“Frameworks”目录。 我把它改为“共享框架”,错误消失了。

但是,另一个错误仍然是:“…包含不允许的嵌套包”。 我认为这是由于原来的一种伞误差警告。 我会为那一个打开另一个问题。