Xcode 16 上传AppStore遇到第三方库 bitcode 的问题

news/2024/9/29 1:22:29/

Xcode 16 上传AppStore遇到第三方库 bitcode 的问题

  • 最近两天更新了Xcode 16,然后正好要发布新版本的App,打包Adhoc没问题,但是上传AppStoreConnect或者TestFlight就不行
    • 解决方案
    • 参考资料

AppStoreConnectTestFlight_2">最近两天更新了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)endframework_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

http://www.ppmy.cn/news/1531335.html

相关文章

足球预测模型理论:足球数据分析——XGBoost算法实战

简介:本文将探讨如何使用XGBoost算法进行足球数据分析,特别是足球运动员身价估计。我们将通过实例和生动的语言,解释XGBoost算法的原理和实际应用,帮助读者理解复杂的技术概念,并提供可操作的建议和解决问题的方法。 足…

Android LiveData 数据倒灌

相关类型的文章很多,这里只做个人总结和其余的方法推荐 1.什么是数据倒灌? 所谓的“数据倒灌”:其实是类似粘性广播那样,当新的观察者开始注册观察时,会把上次发的最后一次的历史数据传递给当前注册的观察者。 一方…

汽车信息安全 -- 存到HSM中的密钥还需包裹吗?

目录 1.车规芯片的ROM_KEY 2.密钥加密与包裹 3.瑞萨RZ\T2M的密钥导入 4.小结 在车控类ECU中,我们通常把主控芯片MCU中的HSM以及HSM固件统一看做整个系统安全架构的信任根。 所以大家默认在HSM内部存储的数据等都是可信的,例如CycurHSM方案中使用HSM…

如何在银河麒麟操作系统中关闭IPv6

如何在银河麒麟操作系统中关闭IPv6 1、临时关闭IPv62、永久关闭IPv6方法一:通过sysctl.conf方法二:通过GRUB配置 1、3、 验证IPv6是否已关闭 💖The Begin💖点点关注,收藏不迷路💖 在当前的网络环境中&#…

计算机网络第四章——网络层

网络层的主要任务就是把分组从源端传到目的端,为分组交换网上的不同主机提供通信服务。网络层的传输单位是数据报。 网络层的主要功能: 功能一:路由选择与分组转换 功能二:异构网络互联 功能三:拥塞控制 一.SDN 路由…

时序必读论文13|ICLR24 “又好又快”的线性SOTA时序模型FITS

论文标题:FITS: Modeling Time Series with 10k Parameters 开源代码:https://anonymous.4open.science/r/FITS/README.md 前言 FITS(Frequency Interpolation Time Series Analysis Baseline)这篇文章发表于ICLR2024&#xff…

机器学习常用的评价指标原理和代码

最近面试的时候,很多面试官问道了我项目中的一些评价指标的算法和原理,我觉得这确实也是一个很重要的内容,所以趁这个机会综合起来一块复习一下,在刷力扣的时候也不能忘记项目最常用的内容嘛。当然还包括一些深度学习的例如我项目…

WPF 中的线程池

WPF 中的线程池 在 WPF 中,虽然应用程序主要运行在 UI 线程上,但我们可以使用 线程池 来执行后台任务而不会阻塞 UI 线程。WPF 中常用的线程池是 .NET 线程池,可以通过 ThreadPool 类或 Task 来管理后台任务。以下是 WPF 中如何使用线程池及…