如何防止SwiftSupport库被包含两次

当我们将我们的应用程序, Firefox for iOS ,导出到SwiftSupport文件时, SwiftSupport目录包含两次:

 ./Payload/Client.app/Frameworks/libswiftCore.dylib ./Payload/Client.app/Frameworks/libswiftCoreAudio.dylib ./Payload/Client.app/Frameworks/libswiftCoreGraphics.dylib ./Payload/Client.app/Frameworks/libswiftCoreImage.dylib ./Payload/Client.app/Frameworks/libswiftDarwin.dylib ./Payload/Client.app/Frameworks/libswiftDispatch.dylib ./Payload/Client.app/Frameworks/libswiftFoundation.dylib ./Payload/Client.app/Frameworks/libswiftObjectiveC.dylib ./Payload/Client.app/Frameworks/libswiftSecurity.dylib ./Payload/Client.app/Frameworks/libswiftUIKit.dylib ./SwiftSupport/libswiftCore.dylib ./SwiftSupport/libswiftCoreAudio.dylib ./SwiftSupport/libswiftCoreGraphics.dylib ./SwiftSupport/libswiftCoreImage.dylib ./SwiftSupport/libswiftDarwin.dylib ./SwiftSupport/libswiftDispatch.dylib ./SwiftSupport/libswiftFoundation.dylib ./SwiftSupport/libswiftObjectiveC.dylib ./SwiftSupport/libswiftSecurity.dylib ./SwiftSupport/libswiftUIKit.dylib 

这是从一个释放configuration文件构build并导出为App Store分发.ipa文件。

有没有人见过这个? 我在苹果开发者论坛上问了两次没有回应。

不幸的是,IPA大小对于AppleWatch来说仍然很重要,因为如果大小超过了50MB的限制(包括所有的膨胀),它会引发validation错误。

幸运的是,将Apple Watch应用程序目标中的“embedded式内容包含Swift”设置为NO将Apple Watch的大小减less了16.5 MB,从而通过validation。

注:我的整个应用程序是用Swift编写的,embedded式的基于Swift的framworks。 但代码是在WatchKit扩展,而不是应用程序!

我已经在论坛上问过这个解决scheme是否合适,还没有答复。另外,我已经提交了这个构build到iTunes连接,它已经处理了30分钟(叹气)。 将回到这里,或者如果我遇到了这种方法的问题,请删除答案。

您可以在下面的屏幕截图中看到WatchKit应用程序如何丢失较新存档中的Frameworks文件夹,删除16.5 MB

在这里输入图像说明

根据苹果技术支持关于移动到Swift 2 / iOS9后的IPA大小 :

IPA中libswiftCore.dylib的大小,以及一般IPA的大小,这些日子都没什么意义。 商店中新的细化function会在交付给特定设备时从您的应用程序中删除不必要的内容,即使您的应用程序没有,libswiftCore.dylib也包含位代码。 在您的应用下载到客户设备之前,该位代码被删除。

尽pipe如此,我同意Firefox的iOS Devs,并且在App Store上遇到同样的问题。