简体   繁体   English

Xamarin.iOS - 发布应用程序 - 无效的Swift支持

[英]Xamarin.iOS - Publishing App - Invalid Swift Support

I've been struggling publishing my iOS app for review with the following error: 我一直在努力发布我的iOS应用程序以进行审核,但出现以下错误:

Invalid Swift Support - The SwiftSupport folder is missing. 无效的Swift支持 - 缺少SwiftSupport文件夹。 Rebuild your app using the current public (GM) version of Xcode and resubmit it. 使用当前公共(GM)版本的Xcode重建您的应用程序并重新提交。

I'm using Xamarin.iOS to develop this app, and i receive the above error if i use Visual Studio to Sign and Export the IPA or if i use Xcode to publish. 我正在使用Xamarin.iOS来开发这个应用程序,如果我使用Visual Studio签名和导出IPA或者如果我使用Xcode发布,我会收到上述错误。

Tool versions: 工具版本:

  • Xcode 9.0.1 Xcode 9.0.1
  • Visual Studio Enterprise 2017 for Mac 7.2 适用于Mac 7.2的Visual Studio Enterprise 2017
  • Xamarin.iOS 11.2.0.11 Xamarin.iOS 11.2.0.11

I have tried the following suggestions: 我尝试了以下建议:

  1. IPA Packager (also Auto Packager) IPA Packager(也是Auto Packager)
  2. Manual packaging using this guide 使用本指南手动包装

The second suggestion didn't give a different response. 第二个建议没有给出不同的回应。 Using the IPA Packager gave the following response from iTunes Store: 使用IPA Packager从iTunes Store获得以下响应:

Invalid Swift Support - The files libswiftAVFoundation.dylib, libswiftDarwin.dylib, libswiftQuartzCore.dylib, libswiftFoundation.dylib, libswiftCoreAudio.dylib, libswiftCoreGraphics.dylib, libswiftCoreLocation.dylib, libswiftCore.dylib, libswiftCoreImage.dylib, libswiftDispatch.dylib, libswiftPhotos.dylib, libswiftObjectiveC.dylib, libswiftCoreMedia.dylib, libswiftUIKit.dylib don't match /Payload/App.iOS.app/Frameworks/libswiftAVFoundation.dylib, /Payload/App.iOS.app/Frameworks/libswiftDarwin.dylib, /Payload/App.iOS.app/Frameworks/libswiftQuartzCore.dylib, /Payload/App.iOS.app/Frameworks/libswiftFoundation.dylib, /Payload/App.iOS.app/Frameworks/libswiftCoreAudio.dylib, /Payload/App.iOS.app/Frameworks/libswiftCoreGraphics.dylib, /Payload/App.iOS.app/Frameworks/libswiftCoreLocation.dylib, /Payload/App.iOS.app/Frameworks/libswiftCore.dylib, /Payload/App.iOS.app/Frameworks/libswiftCoreImage.dylib, /Payload/App.iOS.app/Frameworks/libswiftDispatch.dylib, /Payload/App.iOS.app/Frameworks/libsw 无效的Swift支持 - 文件libswiftAVFoundation.dylib,libswiftDarwin.dylib,libswiftQuartzCore.dylib,libswiftFoundation.dylib,libswiftCoreAudio.dylib,libswiftCoreGraphics.dylib,libswiftCoreLocation.dylib,libswiftCore.dylib,libswiftCoreImage.dylib,libswiftDispatch.dylib,libswiftPhotos.dylib, libswiftObjectiveC.dylib,libswiftCoreMedia.dylib,libswiftUIKit.dylib与/Payload/App.iOS.app/Frameworks/libswiftAVFoundation.dylib,/Payload/App.iOS.app/Frameworks/libswiftDarwin.dylib,/ Payload / App不匹配。 iOS.app/Frameworks/libswiftQuartzCore.dylib,/Payload/App.iOS.app/Frameworks/libswiftFoundation.dylib,/Payload/App.iOS.app/Frameworks/libswiftCoreAudio.dylib,/Payload/App.iOS.app/Frameworks /libswiftCoreGraphics.dylib,/Payload/App.iOS.app/Frameworks/libswiftCoreLocation.dylib,/Payload/App.iOS.app/Frameworks/libswiftCore.dylib,/Payload/App.iOS.app/Frameworks/libswiftCoreImage.dylib, /Payload/App.iOS.app/Frameworks/libswiftDispatch.dylib,/Payload/App.iOS.app/Frameworks/libsw iftPhotos.dylib, /Payload/App.iOS.app/Frameworks/libswiftObjectiveC.dylib, /Payload/App.iOS.app/Frameworks/libswiftCoreMedia.dylib, /Payload/App.iOS.app/Frameworks/libswiftUIKit.dylib. iftPhotos.dylib,/ Payload / App.iOS.app / Frameworks / libswiftObjectiveC.dylib,/ Payload / App.iOS.app / Frame / libswiftCoreMedia.dylib,/ Payload / App.iOS.app / Frameworks / libswiftUIKit.dylib。 Make sure the files are correct, rebuild your app, and resubmit it. 确保文件正确无误,重建您的应用程序,然后重新提交。 Don't apply post-processing to /Payload/App.iOS.app/Frameworks/libswiftAVFoundation.dylib, /Payload/App.iOS.app/Frameworks/libswiftDarwin.dylib, /Payload/App.iOS.app/Frameworks/libswiftQuartzCore.dylib, /Payload/App.iOS.app/Frameworks/libswiftFoundation.dylib, /Payload/App.iOS.app/Frameworks/libswiftCoreAudio.dylib, /Payload/App.iOS.app/Frameworks/libswiftCoreGraphics.dylib, /Payload/App.iOS.app/Frameworks/libswiftCoreLocation.dylib, /Payload/App.iOS.app/Frameworks/libswiftCore.dylib, /Payload/App.iOS.app/Frameworks/libswiftCoreImage.dylib, /Payload/App.iOS.app/Frameworks/libswiftDispatch.dylib, /Payload/App.iOS.app/Frameworks/libswiftPhotos.dylib, /Payload/App.iOS.app/Frameworks/libswiftObjectiveC.dylib, /Payload/App.iOS.app/Frameworks/libswiftCoreMedia.dylib, /Payload/App.iOS.app/Frameworks/libswiftUIKit.dylib. 不要将后处理应用于/Payload/App.iOS.app/Frameworks/libswiftAVFoundation.dylib,/Payload/App.iOS.app/Frameworks/libswiftDarwin.dylib,/Payload/App.iOS.app/Frameworks/libswiftQuartzCore .dylib,/ Payload / App.iOS.app / Frameworks / libswiftFoundation.dylib,/ Payload / App.iOS.app / Framerame / libswiftCoreAudio.dylib,/ Payload / App.iOS.app / Framerame / libswiftCoreGraphics.dylib,/ Payload /App.iOS.app/Frameworks/libswiftCoreLocation.dylib,/Payload/App.iOS.app/Frameworks/libswiftCore.dylib,/Payload/App.iOS.app/Frameworks/libswiftCoreImage.dylib,/Payload/App.iOS。 app / Frameworks / libswiftDispatch.dylib,/ Payload / App.iOS.app / Frameworks / libswiftPhotos.dylib,/ Payload / App.iOS.app / Frame / libswiftObjectiveC.dylib,/ Payload / App.iOS.app / Frameworks / libswiftCoreMedia .dylib,/ Payload / App.iOS.app / Frameworks / libswiftUIKit.dylib。

I have also tried publishing the app without stripping Swift symbols, when publishing from Xcode 从Xcode发布时,我也试过发布应用程序而不剥离Swift符号 在此输入图像描述 This gave yet another result: 这给出了另一个结果:

This bundle is invalid - Your archive contains paths that are not allowed: ( "AppThinning.plist" ) 此捆绑包无效 - 您的归档包含不允许的路径:(“AppThinning.plist”)

I'm out of ideas how to solve this. 我没有想法如何解决这个问题。 It's a strange feeling being so close to publish the app, and then struggling with this in the last step of the process. 如此接近于发布应用程序,然后在流程的最后一步中与此斗争,这是一种奇怪的感觉。

To manually fix this problem per build, you will need to do the following: 要为每个版本手动修复此问题,您需要执行以下操作:

  1. Archive your app for Publishing. 存档您的应用程序以进
  2. When the Archives window pops up, go to it in Finder (right click on it and select "Reveal in Finder"). 弹出Archives窗口时,在Finder中转到它(右键单击它并选择“在Finder中显示”)。
  3. When Finder appears, we need to access the archive's content (right click and select "Show Package Contents"). 当Finder出现时,我们需要访问存档的内容(右键单击并选择“显示包内容”)。
  4. Inside of the archive package, create a folder called "SwiftSupport". 在存档包的内部,创建一个名为“SwiftSupport”的文件夹。
  5. Inside of the package navigate to "Product/Applications/YourAppName.app/Frameworks" (You will need to right click on the .app and select "Show Package Contents"). 在软件包内部导航到“Product / Applications / YourAppName.app / Frameworks”(您需要右键单击.app并选择“Show Package Contents”)。
  6. Copy all the swift ".dylib" files inside of the Frameworks directory. 复制Frameworks目录中的所有swift“.dylib”文件。
  7. Navigate back to "SwiftSupport" and paste those copied libraries. 导航回“SwiftSupport”并粘贴这些复制的库。
  8. Now Launch Xcode and load Organizer (Window -> Organizer). 现在启动Xcode并加载管理器(窗口 - >管理器)。
  9. Find your app in the Archives and "Upload to App Store...". 在档案馆和“上传到App Store ...”中找到您的应用。

I was only able to get this to work using Xcode Organizer, using Xamarin always failed. 我只能使用Xcode Organizer工作,使用Xamarin总是失败。

Note: I am using Visual Studio for Mac Community 7.3.2 (build 12). 注意:我使用的是Visual Studio for Mac社区7.3.2(版本12)。

This is copied from my answer found here . 这是从我在这里找到的答案中复制的。

Okay, so i solved my issue. 好的,所以我解决了我的问题。 It turns out that Xamarin doesn't yet provide support for Swift bindings. 事实证明,Xamarin尚未提供对Swift绑定的支持。 A library i was using ( Xamarin.iOS.CameraViewController ) was using Swift bindings, using Xamarin.Swift3.Support . 我正在使用的库( Xamarin.iOS.CameraViewController )正在使用Swift绑定,使用Xamarin.Swift3.Support However, this version does not work with Xcode 9.0.1 as Xcode changes structure for the Swift libraries for each version according to the author of Xamarin.Swift3.Support. 但是,此版本不适用于Xcode 9.0.1,因为Xcode根据Xamarin.Swift3.Support的作者更改了每个版本的Swift库的结构。

I removed Xamarin.iOS.CameraViewController and all Xamarin.Swift3 references and the app completed processing. 我删除了Xamarin.iOS.CameraViewController和所有Xamarin.Swift3引用和应用程序完成处理。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM