apple官方的公告:
SDK 最低要求
自此日期起: 2025 年 4 月 24 日
上傳至 App Store Connect 的 App 必須使用 Xcode 16 或更高版本以及適用于 iOS 18、iPadOS 18、Apple tvOS 18、visionOS 2 或 watchOS 11 的 SDK 來構(gòu)建。
(xcode16對應的macOS系統(tǒng):macOS Sequoia 15.2 或更高版本。)
會出現(xiàn)的問題:
升級Xcode后打包,可能會出現(xiàn)bitcode問題:
網(wǎng)易云信的庫報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 即為不包含。
以網(wǎng)易云信的NIMSDK.framework為例:
1,通過 cd 命令進入到 NIMSDK.framework 的路徑(framework里面)
2,執(zhí)行命令檢查 framework 是否包含 bitcode
3,如果包含則執(zhí)行命令移除bitcode

示例
二.pod集成的項目
對于cocoapods集成的文件,可以用podfile文件統(tǒng)一處理
在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",]
# 執(zhí)行命令
framework_paths.each do |path|
strip_bitcode_from_framework(bitcode_strip_path, path)
end
end