第一步在:targets中将搜索bitcode 将enable bitcode设置成NO
第二步如果是cocopods管理的第三方库,可以再podfile文件中添加:
objectivec
post_install do |installer|
# 解决xcode16打包的bitcode问题
bitcode_strip_path = `xcrun --find bitcode_strip`.chop!
def strip_bitcode_from_framework(bitcode_strip_path, framework_relative_path)
framework_path = File.join(Dir.pwd, framework_relative_path)
command = "#{bitcode_strip_path} #{framework_path} -r -o #{framework_path}"
puts "Stripping bitcode: #{command}"
system(command)
end
# 这里是关键!需要替换为你报错的框架的实际路径
framework_paths = [
"Pods/YYSocketKit/YYSocketKit/Classes/Framework/YYSocketIOKit.framework/YYSocketIOKit", # 替换为实际路径
"Pods/AliPlayerSDK_iOS/AlivcConan.framework/AlivcConan", # 替换为实际路径
"Pods/AliPlayerSDK_iOS/AliyunMediaDownloader.framework/AliyunMediaDownloader", # 替换为实际路径
"Pods/AliPlayerSDK_iOS/AliyunPlayer.framework/AliyunPlayer", # 替换为实际路径
"Pods/HyphenateLite/HyphenateLite.framework/HyphenateLite", # 替换为实际路径
"Pods/LQBaseLib/LQBaseLib/Classes/Vendor/RobotPenSDK/RbtBezierLib.framework/RbtBezierLib", # 替换为实际路径
"Pods/LQBaseLib/LQBaseLib/Classes/Vendor/RobotPenSDK/RbtCloudRecog.framework/RbtCloudRecog", # 替换为实际路径
"Pods/LQBaseLib/LQBaseLib/Classes/Vendor/RobotPenSDK/RobotPen.framework/RobotPen", # 替换为实际路径
"Pods/LQBaseLib/LQBaseLib/Classes/Vendor/RobotPenSDK/RobotSimpleWhiteboard.framework/RobotSimpleWhiteboard", # 替换为实际路径
"Pods/AliPlayerSDK_iOS/alivcffmpeg.framework/alivcffmpeg" # 替换为实际路径
# 确保路径正确,否则脚本会执行失败
]
framework_paths.each do |framework_relative_path|
strip_bitcode_from_framework(bitcode_strip_path, framework_relative_path)
end
-
找到正确的框架路径:
-
这些路径通常在
Pods/
目录下,对应着各个第三方库的pod名称。 -
最可靠的方法是去你项目目录下的
Pods
文件夹里手动查看 ,确认每个报错框架的具体路径。例如,YYSocketIOKit
框架的实际路径可能类似于Pods/YYSocketIOKit/YYSocketIOKit.framework/YYSocketIOKit
。 -
路径结构通常是
"Pods/[Pod名称]/[框架名].framework/[框架名]"
。注意最后一个 [框架名] 是没有后缀的可执行文件。
-
-
执行 Pod Install :保存
Podfile
的修改后,在终端中运行pod install
或pod update
。这会应用更改,并在安装完成后执行你添加的脚本。如果脚本执行成功,你会在终端日志中看到类似"Stripping bitcode: ..."
的输出信息。 -
重新打包 :完成后,清理构建文件夹 (Clean Build Folder, Shift+Cmd+K) ,然后重新进行
Archive
和上传。
验证 Bitcode 是否已移除
你可以在终端中使用以下命令来检查指定框架的 Bitcode 是否已被成功移除123:
bash
otool -l <framework_path> | grep __LLVM | wc -l
-
将
<framework_path>
替换为框架的实际路径(例如Pods/YYSocketIOKit/YYSocketIOKit.framework/YYSocketIOKit
)。 -
如果命令返回
0
,则表示该框架的 Bitcode 已被成功移除。