【iOS】打包报错:Found an unexpected Mach-O header code: 0x72613c21

写在前面

我的项目DDD是swift 的,然后其中一个projectA 是swift 的,然后projectA中有使用OC混编,还在projectA中做了module,最后projectA 的动态库给到DDD用,DDD在打包的时候如题

IMG_73.png

这里面也是踩了不少坑。建议Swift制作Framework一些配置项的设置参考这个

解决过程

网上的多是类似于这样的多数是说静态库放到enbed frameworks 里面了。但是我的framework就是动态库,所以问题还是要看日志

【iOS】打包报错:Found an unexpected Mach-O header code: 0x72613c21_第1张图片
1583671757959_6CF1E80C-FEA3-406D-8C55-1BEF642B63DD.png

【iOS】打包报错:Found an unexpected Mach-O header code: 0x72613c21_第2张图片
1583671714031_CC03A759-8DDE-4213-823B-CB07D1C7F3A5.png

查看verbose.log(如果这个没有东西,就挨个log,查看,总归不同的问题记录在不同的log的)
说的都是找不到libswiftXX的动态库

2020-03-08 12:15:29 +0000  [OPTIONAL] Can't have a profile, not a bundle at 

我的项目DDD是swift 的,然后log里有问题的全是libswiftXXX的dylib可执行文件

所以应该是和swift的编译有关。至少是swift的系统库

然后就把2020-3-8, 8.14 PM.xcarchive/Products/ Applications/Gloable.app/Frameworks/libswiftDarwin.dylib在finder 中去看看,发现报错中的那些信息都在啊

然后一顿搜索

解决

最后自己对照着新建的demo,网络上文章里的可能原因,一个个对比,终于找到原因了。

【iOS】打包报错:Found an unexpected Mach-O header code: 0x72613c21_第3张图片
1583678442176_D720493E-BEF4-481A-8EA1-1D2A3A5BBC02.png

我自己引入自己开发的swift 的framework 动静态设置没有问题,系统的动态库比如NetworkExtension.framework 如果你设置错,编译直接报错的。问题就在于这个Pods_[projectName].framework ,这是pods脚本创建的,我不知道啥时候改了它的embed属性,导致打包报错。把它改成不是embed的就可以打包了。这玩意影响了我swift项目对于系统库的编译引用。

总结

  1. swift 项目引入不同语言编写的动态静态库,对于编译设置有一定的要求,特别是混编的。所以,不可避免的一些配置属性可能不了解,这次又认识了几个,在参考部分我都罗列出来了
  2. framework和embed的关系是在target==>general==>Frameworks,Libraries,and Embeded Content 中配置的,其中的三个属性值,有三个,这次是搞清楚干啥的了
  3. 我的项目比Swift制作Framework一些配置项的设置里面的demo还要复杂一些,在文中开头有说结构,其中的modulemap也是花了我两天时间,但是没有做记录,因为那个玩意我还没有完全搞懂。
  4. 定好语言,能不混编就不要混编,用你最熟悉的一套搞下来,能省不少事。不过换个角度,尝试对自己而言的新东西总归要付出一定的时间精力的

参考

Embedding Content with Swift
dyld: Library not loaded: @rpath/libswiftCore.dylib
Swift制作Framework一些配置项的设置

你可能感兴趣的:(【iOS】打包报错:Found an unexpected Mach-O header code: 0x72613c21)