apple官方的公告:
SDK 最低要求
自此日期起: 2025 年 4 月 24 日
上传至 App Store Connect 的 App 必须使用 Xcode 16 或更高版本以及适用于 iOS 18、iPadOS 18、Apple tvOS 18、visionOS 2 或 watchOS 11 的 SDK 来构建。
(xcode16对应的macOS系统:macOS Sequoia 15.2 或更高版本。)
会出现的问题:
升级Xcode后打包,可能会出现bitcode问题:网易云信的库报bitcode问题.jpg
解决方式:
一,单个framework:
xcrun bitcode_strip 是一个命令行工具,用于手动去除对应 framework 的 Bitcode,命令格式如下
xcrun bitcode_strip -r ${framework_path} -o ${framework_path}
//${framework_path} 是一个占位符,表示 framework 的二进制文件路径。在实际使用命令时,您需要将 ${framework_path} 替换为具体的文件路径。
otool -l ${framework_path} | grep __LLVM | wc -l
//此命令是检测framework 是否包含 bitcode,返回 0 即为不包含。
以网易云信的NIMSDK.framework为例:
1,通过 cd 命令进入到 NIMSDK.framework 的路径(framework里面)
2,执行命令检查 framework 是否包含 bitcode
3,如果包含则执行命令移除bitcode
示例
二.pod集成的项目
对于cocoapods集成的文件,可以用podfile文件统一处理
在podfile文件中添加:
post_install do |installer|
# 移除 Bitcode 操作:与上面方案一中的单个framework移除Bitcode同理
def strip_bitcode_from_framework(bitcode_strip_path, framework_relative_path)
framework_path = File.join(Dir.pwd, framework_relative_path)
command = "#{bitcode_strip_path} -r #{framework_path} -o #{framework_path}"
system (command)
end
bitcode_strip_path = `xcrun --find bitcode_strip`.chop!
# 以两个nertc的framework为例子:
framework_paths = ["/Pods/NERtcSDK/NERTC/NERtcSDK/NERtcAiDenoise.framework/NERtcAiDenoise",
"/Pods/NERtcSDK/NERTC/NERtcSDK/NERtcAiHowling.framework/NERtcAiHowling",]
# 执行命令
framework_paths.each do |path|
strip_bitcode_from_framework(bitcode_strip_path, path)
end
end