开发中遇到arm64之类的报错多种解决方案

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wang_Bo_JustOne/article/details/79583798

公司做SDK开发难免遇到用户使用SDK遇到各种各样的原因,固然使用文档说明排除的大部分,但难免会有用户自己的工程报其他错而怀疑是SDK的问题,不得不一一去协助解决,下面关于arm64指令集不支持的错误总计:

部分报错内容

 Undefined symbols for architecture arm64:

  "_OBJC_CLASS_$_WBAuthorizeResponse", referenced from:
      objc-class-ref in Payment(MCHApi.o)
  "_OBJC_CLASS_$_WBAuthorizeRequest", referenced from:
      objc-class-ref in Payment(MCHLoginView.o)
  "_OBJC_CLASS_$_WeiboSDK", referenced from:
      objc-class-ref in Payment(MCHApi.o)
      objc-class-ref in Payment(MCHLoginView.o)
  "_OBJC_CLASS_$_BaiduOAuthSDK", referenced from:
      objc-class-ref in Payment(MCHApi.o)

      objc-class-ref in Payment(MCHLoginView.o)

先说一下关于指令集的详细内容,不用指令集代表不同的设备

对于iOS设备来说iOS的指令集有armv6、armv7、armv7s、arm64这样四种,不同型号的iOS设备使用不同的指令集,下面是各自的区别:

  • armv6
    • iPhone、iPhone 3G
    • iPod 1G、iPod 2G
  • armv7
    • iPhone 3GS、iPhone 4
    • iPod 3G、iPod 4G、iPod 5G
    • iPad、iPad 2、iPad 3、iPad Mini
  • armv7s
    • iPhone 5、iPhone 5C
    • iPad 4
  • arm64
    • iPhone 5S   iPhone 6   iPhone 6Plus
    • iPad Air, Retina iPad Mini

关于报错总结一下几点原因:

1.build setting里面的 Architectures设置问题


Architectures 设置所支持的指令集

Build Active Architectures Only  YES的时候是针对所测试的设备去生成所对应的二进制包(例如此刻是iPhone6 ,那么就只会生成一套arm64指令集的二进制),NO的时候回生成所有支持指令集的二进制包,当然这样会消耗资源。

Valid Architectures 该编译项指定可能支持的指令集,该列表和Architectures列表的交集,将是Xcode最终生成二进制包所支持的指令集。

比如,你的Valid Architectures设置的支持arm指令集版本有:armv7/armv7s/arm64,对应的Architectures设置的支持arm指令集版本有:armv7s,这时Xcode只会生成一个armv7s指令集的二进制包。

比如,你的Valid Architectures设置的支持arm指令集版本有:armv7/armv7s/arm64,对应的Architectures设置的支持arm指令集版本有:armv7s,这时Xcode只会生成一个armv7s指令集的二进制包。

2.是所用的静态库有的可能不支持arm64等指令集,那么就需要我们去重新获取一份支持arm64的静态库文件


3.就是用到SVN版本控制器的时候,默认忽略几种类型的文件的,例如.a  .o

1.在finder需要去查找cornerstone的文件 ,com+shift+G  ,或者点开finder-前往-前往文件夹, 把该路径 ~/.subversion/config 粘贴到上面,点击 前往


2、打开config文件,在里面搜索 global-ignores ,你会看到下面这行,

#global-ignores = .o .lo .la .al .libs .so .so.[0-9]* .a .pyc .pyo # .rej ~ ## .#* .*.swp .DS_Store

将其修改为

global-ignores = .o .lo .la .al .libs .so .so.[0-9]* .pyc .pyo#  .rej ~ ## .# .*.swp .DS_Store


保存后,再打开svn进行上传就不会丢失.a文件了

PS:上传图片不知道怎么回事出现的都是❓不显示,很烦躁,还有一些原因暂时没遇到过,先不写了

猜你喜欢

转载自blog.csdn.net/wang_Bo_JustOne/article/details/79583798
今日推荐