前言
前段时间在开发过程中遇到一个iOS打包报错Ignoring file XXX missing required architecture arm7 in file XXX的问题,然后回想了一下问题所在,是因为集成了ijk播放器插件,然后ijk三方库不支持arm7造成的报错。
报错信息
具体的错误提示如下所示:
Undefined symbol:_OBJC_CLASS_$_IJKFFOptions
Undefined symbol: _IJKMPMoviePlayerVideoRotationRotateUserInfoKey
Undefined symbol: _IJKMPMoviePlayerVideoRotationNotification
Undefined symbol: _IJKMPMoviePlayerPlaybackStateDidChangeNotification
Undefined symbol: _IJKMPMoviePlayerPlaybackDidFinishReasonUserInfoKey
Undefined symbol: _IJKMPMoviePlayerPlaybackDidFinishNotification
Undefined symbol: _OBJC_CLASS_$_IJKFFMoviePlayerController
Undefined symbol: _IJKMPMoviePlayerLoadStateDidChangeNotification
Undefined symbol: _IJKMPMediaPlaybackIsPreparedToPlayDidChangeNotification
项目具体报错截图如下所示:
分析
这个报错也不是什么新问题,但是没有遇到的就会无从下手,会觉得是第三方库的锅,其实不是的,看错误提示就可以直接看到arm7相关的提示。只要定位到具体的问题点,那么问题就很好解决了。
结论
原因就是,如果一些程序中使用的静态库不支持armv7,而你的工程支持armv7时,就会出现“Ignoring file XXX missing required architecture arm7 in file XXX"的编译错误,想要解决这个问题,有两个方法:
1.如果使用的是开源的库,能够找到源代码,则可以用源代码重新打一个支持armv7的libaray, 或者在项目工程中直接使用源代码,而不是静态库。
2.如果是闭源代码库,就直接修你的工程不支持armv7,或者等着三方库更新添加支持armv7的库(一般没人傻傻的等而耽误了开发周期的)。
具体的解决该问题的操作步骤如下所示:
1、打开项目工程,然后找到TARGETS目录下的项目名称,然后点击选择Build Settings—>Valid Architectures选项;
2、鼠标单击选中Valid Architectures选项,然后点击右侧的值,单击打开下拉弹出框;
3、找到下拉弹出框里面的arm7选项,然后点击选中,然后点击底部的“-”按钮,移除arm7选项;
4、关闭弹出框,点击项目编译按钮,重新打包,不再报错,问题解决。
最后
上述内容就是关于在iOS开发过程中打包程序时候报错Ignoring file XXX missing required architecture arm7 in file的解决方法,开发者再遇到同款问题就可以很好的解决了,这里不再赘述。以上就是本章的全部内容,欢迎关注三掌柜的微信公众号“程序猿by三掌柜”,三掌柜的新浪微博“三掌柜666”,欢迎关注!