我将在这里添加2美分(以一种不太吓人的方式:-)。我从供应商那里遇到了很多胖库,由于某些原因,它们由于将它们添加到Frameworks
Apple记录的目录中而无法正常工作。我们能够使它们起作用的唯一方法是,将其.framekwork
右移到项目目录中,Embedded Frameworks
并Link Binary with Libraries
在“构建设置”中手动链接和。这似乎没有任何问题,但是,对于任何胖库,它们都与无关的Simulator体系结构i386
以及体系结构x86_64
一起提供arm
。
检查Fat库上体系结构的快速方法是
$ cd 'Project_dir/Project'
$ lipo -info 'YourLibrary.framework/YourLibExec`
哪个应该吐这样的输出
Architectures in the fat file: YourLibrary.framework/YourLibExec are: i386 x86_64 armv7 arm64
这确认您需要在iTunesConnect存档上传之前从框架中“删除繁琐”(即i386
&x86_64
),因为该架构不允许这些架构(因为iOS不支持它们)。
现在,这里的所有答案(或至少一些答案)都提供了这些奇妙的运行脚本,我确信它们确实可以很好地运行,但前提是您的框架位于Frameworks
目录中。现在,除非您是一个shell脚本迷,否则未经修改的那些脚本将不适用于我在上面说明的场景。但是,有一种非常简单的方法可以从框架中删除i386
&x86_64
架构。
在项目目录中打开终端。
将目录直接更改为.framekwork
,例如
cd YourProjectDir/YourProject/YourLibrary.framework
运行一系列命令,如下所示-
$ mv YourLibrary YourLibrary_all_archs
$ lipo -remove x86_64 YourLibrary_all_archs -o YourLibrary_some_archs
$ lipo -remove i386 YourLibrary_some_archs -o YourLibrary
$ rm YourLibrary_all_archs YourLibrary_some_archs
这里需要注意的几件事- lipo -remove
每个架构都必须删除一次。lipo
不会修改输入文件,它只会生成一个文件,因此您必须lipo -remove
为x86_64
和运行一次i386
。上面的命令通过首先重命名可执行文件,然后最终删除所需的拱门,然后清理剩余的文件来简单地做到这一点。就是这样,您现在应该在Application Loader档案上传到iTunesConnect中看到一个绿色的复选标记。
注意事项:以上步骤仅应在生产构建时执行,因为.framework
将剥离模拟器体系结构,因此在模拟器上构建将停止工作(这是预期的)。在开发环境中,.framework
由于您希望能够在模拟器和物理设备上进行测试,因此无需从文件中剥离体系结构。如果您的胖图书馆位于Frameworks
项目的文件夹中,请查看接受的答案。