iOS 打包上线_报错All object files and libraries for bitcode...

本文详细解释了Bitcode的概念及其在Xcode7项目中的作用,面对在上传iOS应用至App Store时遇到的Archive失败问题,提供了两种有效的解决方法:一是确保第三方库支持Bitcode,二是关闭Bitcode配置。同时,文章阐述了如何通过调整Xcode设置来实现这两个解决方案,并特别指出了Bitcode在不同平台上的适用情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

xcode7项目上线的时候, Archive不过, 报错:

xxx does not contain bitcode. You must rebuild it with bitcode enabled (Xcodesetting ENABLE_BITCODE), obtain an updated library from the vendor, or disablebitcode for this target. for architecture arm64

纠结半天没搜索到, 包括设置c,c++编译方式都不行, 最终找到原因是第三方库不包含bitcode

那么bitcode 是神马:

Distribution Guide–App Thinning (iOS, watchOS)一节中,找到了下面这样一个定义:

Bitcode is an intermediate representationof a compiled program. Apps you upload to iTunes Connect that contain bitcodewill be compiled and linked on the App Store. Including bitcode will allowApple to re-optimize your app binary in the future without the need to submit anew version of your app to the store.

说的是bitcode是被编译程序的一种中间形式的代码。包含bitcode配置的程序将会在App store上被编译和链接。bitcode允许苹果在后期重新优化程序的二进制文件,而不需要重新提交一个新的版本到App store上。

而在What’s New in Xcode-New Features in Xcode 7中,还有一段如下的描述:

Bitcode. When you archive for submission tothe App Store, Xcode will compile your app into an intermediate representation.The App Store will then compile the bitcode down into the 64 or 32 bitexecutables as necessary.

当提交程序到App store上时,Xcode会将程序编译为一个中间表现形式(bitcode)。然后App store会再将这个botcode编译为可执行的64位或32位程序。
bitcode内部就是对包进行了一些优化.

错误解决

1:让第三方库支持bitcode
2:关闭bitcode

1:让第三方库支持bitcode

这种方法显然不大实用, 除非像我一样,碰到这个问题的时候, 联系某xxx第三方库, 客服和我说2个小时左右会上线一个新版本, 将修复此问题, 那么就可以等两个小时用新版本库, 否则还是去用第二种方法吧…

2:关闭bitcode

在Xcode 7中,我们新建一个iOS程序时,bitcode选项默认是设置为YES的。我们可以在”Build Settings”->”Enable Bitcode”选项中看到这个设置。不过,我们现在需要考虑的是三个平台:iOS,Mac OS,watchOS。

对于iOS,bitcode是可选的;对于watchOS,bitcode是必须的;而Mac OS是不支持bitcode。
这里写图片描述

如果我们开启了bitcode,在提交包时,下面这个界面也会有个bitcode选项:
这里写图片描述

### 解决 Linux 下 Oracle 登录时遇到的 `libsqlplus.so` 共享库加载错误 当尝试在 Linux 上启动 SQL*Plus 或其他 Oracle 客户端工具并收到类似于 "error while loading shared libraries: libsqlplus.so: cannot open shared object file: No such file or directory" 的错误消息时,这通常意味着环境变量设置不正确或共享库路径未被正确配置。 #### 设置 Oracle 环境变量 为了使 Oracle 能够找到所需的共享库文件,需要确保设置了正确的 `$ORACLE_HOME` 和 `$LD_LIBRARY_PATH` 变量。这些可以在用户的 shell 配置文件中定义,比如 `.bash_profile` 或者通过执行特定脚本来完成: ```sh export ORACLE_HOME=/u01/app/oracle/product/9.2.0 export PATH=$PATH:$ORACLE_HOME/bin export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib:/lib ``` 上述命令会将 `/u01/app/oracle/product/9.2.0/lib` 添加到动态链接器查找路径中[^1]。 #### 创建必要的目录结构与权限调整 如果缺少某些必需的目录,则应创建它们,并赋予适当的所有权和访问权限给相应的用户组。例如: ```sh su - root mkdir -p /u01/app/oracle/product/9.2.0 chown -R oracle.oinstall /u01 mkdir /var/opt/oracle chown oracle.dba /var/opt/oracle chmod 755 /var/opt/oracle ``` 此操作可以确保 Oracle 进程能够正常读取所需资源。 #### 执行根用户脚本 对于多节点 RAC(Real Application Clusters)安装,在所有节点上运行 `root.sh` 是非常重要的一步。该脚本负责配置集群件和其他依赖项,从而允许应用程序顺利工作。具体做法如下所示: ```sh [root@rac2 ~]# /oracle/app/grid/product/11.2.0/root.sh ``` 注意:如果有尚未处理的问题存在,可能还需要应用补丁来解决问题后再继续执行这个脚本[^3]。 #### 检查现有文件属性 确认目标机器上的 `libsqlplus.so` 文件确实存在于预期位置并且具有可执行权限是非常有帮助的。可以通过下面的方式验证这一点: ```sh ls -l $ORACLE_HOME/lib/libsqlplus.so ``` 理想情况下,输出应该显示类似 `-rwxr-x--x` 的模式,表明文件是可以被执行的[^2]。 #### 总结建议 为了避免未来再次发生此类问题,推荐定期审查系统的环境配置以及保持软件版本更新至最新稳定版。此外,遵循官方文档中的指导来进行任何更改总是最安全的做法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值