Xcode升级16遇到的问题和解决方式

1.libarclite 文件缺失问题解决方案

编译报错信息:

Showing Recent Messages
SDK does not contain 'libarclite' at the path '/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_iphoneos.a'; try increasing the minimum deployment target

报错原因:

由报错信息可知,Xcode 默认的工具链中缺少一个 工具库libarclite_iphoneos.a
我们只需要找回或者补充这个工具库就行了。

解决方法:

1.arc文件包:
下载地址
2.前往路径

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/

3.将下载的arc文件夹复制到上述lib文件夹下。

2.HandyJSON 报错

Command SwiftCompile failed with a nonzero exit code

解决方法:

修改一下HandyJSON库的编译模式:

Pods -> target 中 选中 HandyJSON -> BuildSettings -> Compilation Mode -> Release -> Incremental

如下图:


e9f24124-3a53-442f-bc29-c6d9436228cb.png

3.打包后上传出错

Validation failed
Invalid Executable. The executable ‘xxx’ contains bitcode.(ID: xxx)

出错原因:

Bitcode 是一种中间表示形式,在 Xcode 中打包提交到 App Store 审核时,如果出现包含 Bitcode 的报错,这通常意味着您的应用没有正确包含 Bitcode。Bitcode 是苹果的一项要求,它允许苹果在 App Store 中对您的应用进行进一步的优化。

当提交应用到 App Store 时出现与 Bitcode 相关的问题,您需要手动移除 framework 中的 Bitcode。framework 是指 macOS 和 iOS 项目中的一个软件框架,它是一种包含代码、资源和其他文件的包,用于实现特定的功能或服务。framework 通常用于提供应用程序的某些部分,如用户界面元素、数据处理功能或其他服务。

解决方法

1.工具介绍
xcrun bitcode_strip 是一个命令行工具,用于手动去除对应 frameworkBitcode,命令格式如下:

xcrun bitcode_strip -r ${framework_path} -o ${framework_path}

${framework_path} 是一个占位符,表示 framework 的二进制文件路径。在实际使用命令时,您需要将 ${framework_path} 替换为具体的文件路径。

2.举例使用:
一个名为 xxxx.framework 的三方库,并且它位于 /path/~/xxxx.framework 路径(如果用Pod管理三方库,请去项目中Pods下寻找),那么您可以按照以下方式处理:

步骤一:
通过 cd 命令进入到 xxxx.framework 的路径。
如果是通过 pod install 获取的 SDK,则进入 pods 文件夹。
步骤二:
执行以下命令检查 framework 是否包含 bitcode,返回 0 即为不包含。

otool -l xxxx | grep __LLVM | wc -l

// 例子查询 AliyunPlayer.framework 是否包含 bitcode
otool -l AliyunPlayer | grep __LLVM | wc -l

步骤三:
如果检测结果不是 0,则继续执行以下命令移除 xxxx.frameworkBitcode

xcrun bitcode_strip -r xxxx -o xxxx

// 例子去除 AliyunPlayer.framework 的 bitcode
xcrun bitcode_strip -r AliyunPlayer -o AliyunPlayer

4.编译报错

Sandbox: rsync.samba(96559) deny(1) file-write-unlink xxx

升级Xcode16项目并且引入pod后,编译报错。

解决办法:Build Settings -> 搜索 sandbox -> Build Options -> User Script Sandboxing -> NO

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容