如何在* .framework包内省略或签名未签名的文件

任何人都可以解释这些未签名的文件(下面的图片中没有突出显示的文件)是如何进入框架(Cocoa Touch Framework)包以及如何将这些文件从那里拿走的?

另外,是否可以安全地从那里手动删除它们?

这是结果应用程序中的框架文件夹

为了得到并看到这些文件,我做了如下:

  1. 构build应用程序
  2. find并解压缩* .ipa文件
  3. 然后Payload – > App – >“Show Package Contents” – > Frameworks

注意! 对于框架项目中的每个* .swift文件,都会在其中创build这些文件的集合:

每个swift文件的文件集


这是我如何解决问题。

  1. 在Objectvie-C中创build基础项目或者采用任何旧的维护的Objective-C项目
  2. 在Swift中创build并实现一个框架(Cocoa Touch Framework)项目
  3. 为该框架创buildpodspec并将其上传到存储库
  4. 使用CocoaPods将该框架包含到基础项目中
  5. 在模拟器和有线设备上构build和运行应用程序是可以的(一切按预期工作)
  6. build立和/或上传到iTunesConnect是不行的,它失败了!

下面是关于这种情况的更详细的讨论use_frameworks签名错误! 和独特的configuration文件

我怀疑XFeature.framework中的所有非高亮文件都不属于那里。 为什么?

因为当我上传ipa包到iTunesConnect与这些文件包括它引发此错误(对于每个非高亮的文件):

错误ITMS-90171无效的包结构 – 不允许使用二进制文件“XApp.app/Frameworks/XFeature.framework/XView.o”。 您的应用程序不能包含独立的可执行文件或库,除了受支持的软件包的CFBundleExecutable。 有关iOS应用程序捆绑结构的信息,请参阅https – : – // developer.apple.com/go/?id=bundle-structure中的“捆绑软件编程指南”。

另一方面,当我删除它们(手动简单地删除),然后错误消失,上传成功。

所以我猜这些文件或者不是必需的,或者他们没有正确签名。

从哪里走?

  1. find一种方法,让这些文件远离框架内容
  2. 或者find一个如何签署这些文件的方法

任何帮助,欢迎!

好的,所以我用自己的方式解决了这个问题。 通常情况下,解决scheme比以前想象的更容易。

错误原因错误ITMS-90171是这次在cocoa pod的* .podspec文件中的一个指令。

这一个: s.resource = 'MyPod/*'

不知道我是怎么错过的,但是'MyPod / *'字面意思是,除了graphics资源包含* .swift文件之外,还包括MyPod目录中的所有内容。

所以,因为我只需要graphicsaasets包括作为资源,然后通过更改该行一点点修复: s.resource = 'MyPod/Graphics.xcassets'解决了这个问题。 没有错误ITMS-90171了。


此外,Cocoapods团队已经创造了增强的问题,以帮助避免这样的事情在未来。 在spec.resources#5794中find的文件上添加一个linter