XZ_iOS之更新Xcode插件技巧

Xcode插件更新指南
本文介绍了Xcode更新后导致插件失效的原因及解决方法。通过手动修改或命令行批量更新插件的UUID,使插件与新版Xcode兼容。

很多时候,我们更新了Xcode之后,发现插件都不能用了,

为什么升级Xcode之后,插件就失效了?
  1. 每个版本的Xcode都由一个UUID;
  2. 插件如果要想在Xcode上运行,必须指定支持的UUID;

前往-资源库/Application Support/Developer/Shared/Xcode/Plug-ins 
查看Xcode插件

右击 "VVDocumenter-Xcode.xcplugin”-显示包内容-Contents-Info.plist 双击打开,里面有一个数组“DVTPlugInCompatibilityUUIDs”,在这个数组里面是所有支持的Xcode的UUID,如果更新Xcode之后不支持了,可以把最新的Xcode的UUID填进来既可。
下图是 "VVDocumenter-Xcode.xcplugin”中支持的Xcode版本的UUID:

最新的Xcode的UUID的查看方式:Finder-应用程序-Xcode-显示包内容-Contents-Info.plist 中的DVTPlugInCompatibilityUUID”对应的就是

手动修改
但是,如果Xcode插件较多,每一个都这么整的话,比较费事,我们可以使用命令行,一句即可
把读取到Xcode的UUID添加到所有插件设置中

find ~/Library/ApplicationSupport/Developer/Shared/Xcode/Plug-ins -name Info.plist -maxdepth 3| xargs -I{} defaults write {} DVTPlugInCompatibilityUUIDs -array-add`defaults read /Applications/Xcode.app/Contents/Info.plist DVTPlugInCompatibilityUUID`

当命令行执行完毕,我们发现插件中Info.plist多了一行,那就说明成功了。
Xcode完全退出,然后重启一下,界面会出现Load Bundles和Skip Bundles,注意选择Load Bundles!

如果点击了 Skip Bundles,可以在前往-资源库-Application Support-Developer-Shared-Xcode-Plug-ins中右键第三方资源库-显示包内容-Contents-Info.plist 打开,找到DVTPlugInCompatibilityUUIDs这一项,删除最后一个,然后将Xcode全部退出,然后再打开Xcode,在命令行中再次执行添加Xcode的UUID的语句,然后再全部退出Xcode,再重启,这时候就会出现Load Bundles按钮了。
  
说明:
查找安装插件的 Info.plist 文件
find ~/Library/ApplicationSupport/Developer/Shared/Xcode/Plug-ins -name Info.plist

向前一步命令结果的 Info.plist 中写入数据,向  DVTPlugInCompatibilityUUID 数据添加数据 
xargs -I{} defaults write {} DVTPlugInCompatibilityUUIDs -array-add

其中 ‘|' 是管道,将前一个命令的结果当做参数传递给后一个命令

之前我写的时候,一直不对,明明都是对的,后来发现,原来就是一个符号之差造成的,这个符号(`)不对造成的,这个符号叫反单引号,在苹果键盘上,切换到英文输入法下,按住fn键和~键即可。如下图:


### Xcode 16 和 iOS 17 环境下运行 fastbot_iOS 的配置及适配问题解决方法 在 Xcode 16 和 iOS 17 环境下运行 fastbot_iOS 时,可能会遇到一些适配问题。以下是常见的配置和解决方案: #### 1. **Bitcode 配置** 如果在构建过程中遇到类似 `invalid Executable, the executable contains Bitcode` 的错误,可以尝试禁用 Bitcode。这可以通过以下步骤实现: - 打开项目设置,进入 `Build Settings`。 - 搜索 `Enable Bitcode` 并将其值设置为 `No`[^2]。 - 清理并重建项目(使用快捷键 `Shift + Command + K` 进行清理,然后使用 `Command + B` 进行重建)。 #### 2. **iOS SDK 下载失败问题** 在 Xcode 更新后,如果出现 `no fund iOS17 sdk` 或类似提示,并且下载安装失败,可以参考苹果官方提供的解决方案。确保从苹果开发者官网下载最新版本Xcode 或者单独下载所需的 iOS SDK 文件[^1]。 #### 3. **UITableView 的 sectionHeaderTopPadding 适配** iOS 15 引入了 `sectionHeaderTopPadding` 属性,默认会给每个 section header 增加 22px 的间距。如果需要兼容 iOS 17 并调整此行为,可以在代码中进行如下设置: ```swift if #available(iOS 15.0, *) { tableView.sectionHeaderTopPadding = 0 } ``` 对于 Objective-C: ```objective-c if (@available(iOS 15.0, *)) { tableView.sectionHeaderTopPadding = 0; } ``` 此配置同样适用于 iOS 17 的适配[^3]。 #### 4. **Podfile 中移除 Bitcode** 如果依赖库中包含 Bitcode,可能需要在 Podfile 中添加脚本以移除 Bitcode。例如: ```ruby 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 bitcode_strip_path = `xcrun --find bitcode_strip`.chomp framework_paths = [ "Pods/TXIMSDK_iOS/ImSDK.framework/ImSDK", ] framework_paths.each do |framework_relative_path| strip_bitcode_from_framework(bitcode_strip_path, framework_relative_path) end ``` 该脚本会在安装 Pods 时自动移除指定框架中的 Bitcode[^4]。 #### 5. **fastbot_iOS 特定配置** fastbot_iOS 是一款用于自动化测试的工具,其运行环境可能需要额外的依赖或权限配置。确保以下几点: - 安装所有必要的依赖项(如 CocoaPods 或 Carthage)。 - 检查项目的最低支持版本是否与 iOS 17 兼容。 - 如果涉及动态库加载或插件集成,确保这些组件已正确配置并适配最新的 iOSXcode 版本。 ### 注意事项 - 确保 Xcode 和相关工具链是最新版本。 - 如果使用自定义脚本或插件,检查其是否兼容 Xcode 16 和 iOS 17。 - 在调试过程中,可以启用详细的日志输出以便定位问题。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值