Xcode插件开发
创始人
2024-09-25 07:26:31
0

Xcode插件开发

文章目录

  • Xcode插件开发
    • 一、插件开发流程
      • 创建插件
      • Extension文件介绍
      • 文件说明
    • 二、插件使用安装说明

一、插件开发流程

创建插件的过程并不复杂,只是官方教程,过于简单,所以这里补充下创建细节

创建插件

环境:Xcode 15.2
先创建一个Mac App
选择 Xcode - File - New - Project,选择macOS - App - Next,跟创建iOS App类似
在这里插入图片描述

然后Target里添加一个Extension
选择 Xcode - File - New - Target,选择macOS - Xcode Source Editor Extension
在这里插入图片描述

创建后文件目录
在这里插入图片描述

这里可能需要重新引用下,否则在Xcode中,会找不到该插件
选择Targets - TestDemoExtension - General - Frameworks and Libraries,添加XcodeKit,并将XcodeKit修改为Embed&Sign
在这里插入图片描述

这样一个Xcode插件就创建完成了,这时我们没有修改任何代码,直接选择Extension然后运行,就会出现一个重新启动一个新的Xcode(在Xcode15之前是显示为灰色图标的,Xcode15之后是带颜色的,如下图),是作为调试的Xcode,使用该Xcode打开的Project,在菜单栏的Editor,就会出现我们开发的插件了
在这里插入图片描述

在这里插入图片描述

选中Project中的任意一个.swift文件或者.h/.m文件,Editor - TestDemoExtension - Source Editor Command
在这里插入图片描述

Extension文件介绍

上面运行后能看到插件的名称以及默认选项,是因为创建Extension时,会自动创建一个默认的选项,在Info.plist文件中,我们可以根据自己的业务需要修改,或者添加其他的定义

添加或修改插件的菜单名称和命令,有两种方式:
第一种:直接在Info.plist文件中添加或修改
在这里插入图片描述

XCSourceEditorCommandClassName:处理此菜单的类名
XCSourceEditorCommandIdentifier:此菜单的标识,可以在处理类中用户判断点击了哪一个菜单(如果有多个的情况)
XCSourceEditorCommandName:菜单的名称

运行结果:
在这里插入图片描述

第二种:修改SourceEditorExtension.swift代码文件添加或修改
在这里插入图片描述

nameKey: 菜单的名称
identifierKey:菜单的标识,可以在处理类中用于判断点击了哪一个菜单(如果有多个的情况)
classNameKey:处理此菜单的类名,这里我们直接使用className()获取,如果你直接写字符串记得在类名前加上模块名

运行结果:
在这里插入图片描述

可以看到经过上面的验证,SourceEditorExtension.swift文件中的返回值优先级高于info.plist文件,实际情况中我们使用一种设置即可。

文件说明

  • SourceEditorExtension:设置插件的菜单键以及对应的配置信息,包括菜单的名称、菜单的唯一标识以及菜单的处理类
  • SourceEditorCommand:就是对应菜单的处理类,需要遵守XCSourceEditorCommand协议,并且实现以下方法,用作点击菜单的具体处理逻辑:
class SourceEditorCommand: NSObject, XCSourceEditorCommand {          func perform(with invocation: XCSourceEditorCommandInvocation, completionHandler: @escaping (Error?) -> Void ) -> Void {         // Implement your command here, invoking the completion handler when done. Pass it nil on success, and an NSError on failure.                  completionHandler(nil)     }      } 

如果有多个菜单,为了独立开来,可以自行创建一个处理类,比如,上面添加的三个菜单都是引用同一个处理类,那么代码会集中在同一个文件,为了区分,为菜单2创建单独的处理类Menu2Command.swift,代码如下

import Foundation import XcodeKit  class Menu2Command: NSObject, XCSourceEditorCommand {          func perform(with invocation: XCSourceEditorCommandInvocation, completionHandler: @escaping (Error?) -> Void ) -> Void {         // Implement your command here, invoking the completion handler when done. Pass it nil on success, and an NSError on failure.                  print("点击菜单2")         completionHandler(nil)     }      } 

运行结果,分别点击菜单2、菜单1、菜单3,打印结果:
在这里插入图片描述

  • Info.plist:插件菜单的管理类,可以直接在Info中添加,在上面也有介绍

二、插件使用安装说明

1、选择Mac App,然后Xcode - product - Archive,然后导出ipa包,导出方式跟iOS App类似,这里如果不发布的话,可以直接选择Debuging
在这里插入图片描述

2、导出后,将ipa包直接拖入应用程序中,并且首次需要打开一下,然后在Mac 设置 - 隐私与安全性 - 扩展 - Xcode Source Editor 中就可以看到此插件的名称
在这里插入图片描述
在这里插入图片描述

勾选所需要的插件,默认应该是勾选
在这里插入图片描述
3、然后重新启动正版的Xcode,选择Editor,便可以看到所安装的插件了
在这里插入图片描述

相关内容

热门资讯

秒懂教程!拼三张房卡多少钱一张... 拼三张是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:71319951许多玩家在游戏中会购买房卡来享...
微信炸金花房间房卡怎么买/微信... 炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:8488009许多玩家在游戏中会购买房卡来享受...
微信好友炸金花房卡在哪里买/微... 炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:33903369许多玩家在游戏中会购买房卡来享...
秒懂教程!微信里面斗牛链接房卡... 斗牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:66336574许多玩家在游戏中会购买房卡来享受...
软件不支持安卓系统,揭秘软件为... 你有没有遇到过这种情况?买了一款心仪的手机,却发现心仪的软件不支持安卓系统,心里那个滋味啊,就像吃了...
怎么创建拼三张房间卡房卡/新鸿... 拼三张是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:55051770许多玩家在游戏中会购买房卡来享...
拼三张房卡如何充值/新蓝鲸大厅... 拼三张是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:8488009许多玩家在游戏中会购买房卡来享受...
安卓系统的钓鱼之王,揭秘钓鱼软... 你知道吗?在安卓系统的世界里,有一个大名鼎鼎的家伙,它就像是个钓鱼高手,专门钓那些不小心上钩的用户。...
安卓系统免费观看视频,解锁海量... 亲爱的手机控们,你是不是也和我一样,对免费观看视频的安卓系统应用情有独钟?没错,在这个信息爆炸的时代...
安卓系统换成ios系统数据怎么... 你有没有遇到过这种情况:手机从安卓系统换成iOS系统后,突然发现之前积累的数据不翼而飞,心里那个急啊...
安卓原车机系统,安卓原车机系统... 你有没有发现,现在很多车都开始变得智能起来呢?这不,安卓原车机系统就悄悄地走进了我们的生活。想象坐在...
安卓车机通用系统下载,智能驾驶... 你有没有发现,现在汽车界也开始流行智能化了?没错,就是那个我们平时挂在嘴边的安卓车机通用系统。今天,...
安卓原生系统应用商店,一站式应... 你有没有发现,每次打开你的安卓手机,那个应用商店总是那么默默地陪在你身边?它就像一个贴心的助手,帮你...
安卓系统怎么样安装wd系统,安... 你有没有想过给你的安卓手机来个“变身”大改造?没错,就是将安卓系统升级为WD系统!听起来是不是有点酷...
安卓系统升级速度,从快速迭代到... 你有没有发现,每次打开手机,安卓系统总在默默地进行升级?这就像是我们的小助手,时不时地给自己充充电,...
安卓苹果系统流畅性,系统流畅性... 你有没有发现,现在手机的世界里,安卓和苹果两大巨头就像是在赛跑,你追我赶,谁都不愿意落后。今天,咱们...
浩顺收银系统下载安卓,助力商家... 你有没有想过,在繁忙的商场里,那些收银员是如何快速而准确地完成每一笔交易的?这其中,浩顺收银系统可是...
安卓系统怎么降级吗,轻松实现系... 你有没有发现,手机用久了,系统更新换代的速度简直比兔子还快!这不,你的安卓手机可能也跟着潮流升级到了...
安卓系统外接鼠标设置吗,轻松实... 你有没有想过,给你的安卓手机或者平板电脑配上一个鼠标,让它瞬间变身成一台迷你电脑呢?这听起来是不是很...
微信拼三张房卡哪里有卖/狂飙大... 拼三张是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:33903369许多玩家在游戏中会购买房卡来享...