Mik*_*ike 150 xcode itunesconnect ios
我正在尝试使用Xcode6 GM提交应用程序,我在验证时遇到此错误.该应用程序具有动作扩展和动态框架,在扩展和应用程序本身之间共享.
我在项目的任何地方都没有名为'Frameworks'的文件,所以我真的不确定这是什么意思.有没有人得到这个问题或有任何想法?
Mik*_*ike 285
事实证明错误与使用Swift(应用程序和扩展程序都使用Swift)有关.
对于应用程序,我必须设置:
Embedded Content Contains Swift Code: YES
Run Code Online (Sandbox Code Playgroud)
并为扩展:
Embedded Content Contains Swift Code: NO
Run Code Online (Sandbox Code Playgroud)
Xcode 8和9
看起来这已Always Embed Swift Standard Libraries在Xcode 8和9中重命名.因此,对于应用程序:
Always Embed Swift Standard Libraries: YES
Run Code Online (Sandbox Code Playgroud)
并为扩展:
Always Embed Swift Standard Libraries: NO
Run Code Online (Sandbox Code Playgroud)
Rom*_*man 115
对我有用的唯一解决方案是将此运行脚本添加到App Extension目标:
cd "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/"
if [[ -d "Frameworks" ]]; then
rm -fr Frameworks
fi
Run Code Online (Sandbox Code Playgroud)
资料来源:https://github.com/CocoaPods/CocoaPods/issues/4203
Vin*_*ong 43
因此,从构建设置修复此问题需要3个步骤
Embedded Content Contains Swift Code: YESEmbedded Content Contains Swift Code: NO@executable_path/../../FrameworksDan*_*ney 16
在我的情况下,我刚刚升级到CocoaPods 1.0.1,这似乎是一个新的bug.
Pod更新向我的Extension目标添加了一个运行脚本,该目标创建了Frameworks文件夹.我找到了它,因为我要添加@ Roman的运行脚本来删除它.
解决方案是从我的扩展的构建阶段删除此脚本.这是需要去的...
Max*_*eod 11
上述答案都不适合我.这是因为错误不是由父应用程序或它的扩展引起的.相反,其中一个链接库存在错误.
要确认,首先使用Xcode进行存档,然后使用管理器选择条目并使用"在Finder中显示"进行定位.这将显示该.xcarchive文件.
选择该文件,然后选择"显示包内容".
在Products/Applications文件夹中选择.app,然后再次选择"Show Package Contents".
在Frameworks文件夹中找到有问题的模块.例如,如果错误是:
ERROR ITMS-90206: "Invalid Bundle. The bundle at 'MyApp.app/Frameworks/MyLib.framework' contains disallowed file 'Frameworks'."
Run Code Online (Sandbox Code Playgroud)
然后在Frameworks/MyLib.framework下面可能会看到:
../Frameworks/libswiftContacts.dylib
../Frameworks/libswiftCore.dylib
../Frameworks/libswiftCoreData.dylib
../Frameworks/libswiftCoreGraphics.dylib
../Frameworks/libswiftCoreImage.dylib
../Frameworks/libswiftCoreLocation.dylib
../Frameworks/libswiftDarwin.dylib
../Frameworks/libswiftDispatch.dylib
../Frameworks/libswiftFoundation.dylib
../Frameworks/libswiftLocalAuthentication.dylib
../Frameworks/libswiftObjectiveC.dylib
../Frameworks/libswiftPassKit.dylib
../Frameworks/libswiftUIKit.dylib
../Frameworks/libswiftWebKit.dylib
Run Code Online (Sandbox Code Playgroud)
这些是因为父应用程序包含的链接库或模块具有 EMBEDDED_CONTENT_CONTAINS_SWIFT = YES;
在Xcode中找到依赖模块并更新标志:
请注意,在克服此问题后,应用程序仍可能会被iTunes Store中的解释性电子邮件拒绝:
Invalid Swift Support - The Watch OS application has Swift libraries at both...
Run Code Online (Sandbox Code Playgroud)
这又回到了EMBEDDED_CONTENT_CONTAINS_SWIFT国旗.确保只有父应用程序将此设置为YES.WatchKit应用程序和扩展程序都必须将此标志设置为NO.这在@ Mike的答案中详细说明.
在我的情况下,解决方案是从我的扩展的嵌入式二进制文件中删除我的框架,并将其添加到我的扩展的Linked Frameworks和Libraries.(两者都可以在扩展程序的常规选项卡中找到.)
我无法找到任何设置,Embedded Content Contains Swift Code但我能够找到一个设置Always Embed Swift Standard Libraries并将其设置为NO,因为我的框架确实解决了这个问题.
上述答案对我不起作用。我做了以下事情。
请检查目标扩展程序的每个设置。
| 归档时间: |
|
| 查看次数: |
34162 次 |
| 最近记录: |