Xcode 16 上传AppStore遇到第三方库 bitcode 的问题
- 最近两天更新了Xcode 16,然后正好要发布新版本的App,打包Adhoc没问题,但是上传AppStoreConnect或者TestFlight就不行
- 解决方案
- 参考资料
最近两天更新了Xcode 16,然后正好要发布新版本的App,打包Adhoc没问题,但是上传AppStoreConnect或者TestFlight就不行
报错内容大概是说,我通过cocoapods引入的某个第三方库,enableBitcode为true,大家知道bitcode其实在Xcode 14的时候已经被废弃了。Xcode 16可能更为严格一些,目前来说在Xcode 15上面依然能够成功上传的,但Xcode 16不行。
解决方案
直接在终端中使用如下命令:
xcrun bitcode_strip -r YourFramework.framework/YourFramework -o YourFramework.framework/YourFramework
在我的项目中,报错的是网易七鱼SDK中的NIMSDK.framework,所以,我会打开终端,然后cd到目录下:xxx项目名称/Pods/NIMSDK_LITE/NIMSDK
NIMSDK.framework就在上述目录下。所以使用如下命令:
参考资料
https://discuss.bitrise.io/t/xcode-16-known-issues/24484
该文章还提供了直接修改podfile的方式,该方式我尝试了没有成功,况且可以直接用上面的命令来暂时解决,就直接用比较方便。毕竟pod之后一定会更新的,新版本就不需要那个脚本了应该。如果报错的framework恰好是很久很久不更新的那种,那么就可以尝试使用脚本的方式来实现了。
post_install do |installer|
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/LibraryA/LibraryA/dynamic/LibraryA.xcframework/ios-arm64_armv7/LibraryA.framework/LibraryA",
"Pods/LibraryB/LibraryB.xcframework/ios-arm64_armv7/LibraryB.framework/LibraryB"
]
framework_paths.each do |framework_relative_path|
strip_bitcode_from_framework(bitcode_strip_path, framework_relative_path)
end
end