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

公司做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:上传图片不知道怎么回事出现的都是❓不显示,很烦躁,还有一些原因暂时没遇到过,先不写了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VSCode 是一款非常流行的集成开发环境,它支持丰富的插件和扩展,可以方便地搭建各种不同平台的开发环境。要在 VSCode 搭建 arm64 远程开发环境,首先需要安装 Remote-SSH 插件,这个插件可以让你在远程服务器上进行开发工作。 首先,我们需要在 arm64 架构的远程服务器上安装 OpenSSH 服务器,并确保能够通过 SSH 协议连接到服务器。然后在 VSCode 安装 Remote-SSH 插件,并在插件设置添加远程服务器的连接信息,如 IP 地址、用户名、密码等。连接成功后,就可以在 VSCode 像在本地开发环境一样对远程服务器进行代码编辑、调试和运行。 针对 arm64 架构的开发,我们还可以使用 Remote-SSH 插件连接到远程服务器后,再在服务器上安装适用于 arm64 架构的开发工具链和依赖环境,比如编译器、调试器、库文件等。通过 VSCode 的终端和文件管理器,可以远程进行各种开发工作,无需在本地搭建繁琐的 arm64 开发环境。 搭建 arm64 远程开发环境后,我们可以方便地进行 arm64 架构的应用程序开发、调试和运行。而且因为是在远程服务器上进行开发,即使本地设备的性能有限,也能够流畅地进行开发工作。同时,远程开发还能保障代码的安全性和稳定性,是一种高效的开发方式。VSCode 的强大插件和便捷操作,进一步提高了 arm64 远程开发的效率和便利性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值