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,便可以看到所安装的插件了
在这里插入图片描述

相关内容

热门资讯

安卓出厂系统和最新系统,全面升... 亲爱的数码控们,你是否也像我一样,对手机系统的新鲜玩意儿充满好奇?今天,咱们就来聊聊安卓出厂系统和最...
掌上医院安卓系统,智慧医疗新时... 掌上医院安卓系统:你的私人健康小助手想象你正躺在床上,手机轻轻一滑,就能预约挂号、查看报告、了解医生...
安卓系统如何冻结程序,提升手机... 手机里那些占内存、耗电快的应用,是不是让你头疼不已?别急,今天就来教你怎么用安卓系统冻结这些“捣蛋鬼...
手机变身安卓系统,探索系统转换... 哇塞,你有没有想过,你的手机竟然可以变身成为安卓系统的小能手?没错,就是那个我们日常离不开的智能手机...
window平板转安卓系统,转... 亲爱的平板用户们,你是否曾想过,你的Windows平板电脑也能变身成为安卓小精灵呢?没错,今天我要跟...
安卓系统qq离线设置,畅享无打... 亲爱的安卓手机用户们,你们是不是也有过这样的烦恼:明明想安静地放松却总是被QQ消息打扰得心烦意乱?别...
安卓刷win系统体验,刷机攻略... 哇塞,你有没有想过,你的安卓手机也能变身成Windows系统的超级英雄?没错,就是那个我们熟悉的Wi...
安卓设备的系统刷写,操作步骤、... 你有没有想过,你的安卓手机其实就像一个等待你发挥创意的画布呢?没错,就是那个你每天捧在手心里的宝贝—...
安卓系统双开的软件,实现多账号... 你有没有想过,在手机上同时运行两个相同的APP,是不是就像拥有两个超级英雄一样酷炫呢?没错,这就是安...
安卓系统绘画app推荐,全方位... 你有没有想过,在手机上也能画出美轮美奂的作品呢?没错,现在科技这么发达,安卓系统上的绘画app可是五...
安卓系统看广告视频,智能播放与... 你有没有发现,现在手机上那些安卓系统的应用,动不动就弹出来广告视频?真是让人又爱又恨啊!今天,就让我...
安卓系统安装歌曲软件,热门歌曲... 你有没有想过,手机里没有喜欢的歌曲,那感觉就像是没有了灵魂?别急,今天就来给你支个招,教你在安卓系统...
如何退出安卓升级系统,实用技巧... 手机突然弹出一个升级提示,你心里是不是有点小紧张呢?别担心,今天就来手把手教你如何退出安卓升级系统,...
安卓平板系统克隆软件,轻松实现... 你有没有想过,把你的安卓平板上的系统,像变魔术一样克隆到另一台平板上?听起来是不是很神奇?别急,今天...
小米8 是安卓系统,安卓系统下... 你有没有想过,手机的世界里,安卓系统就像是个万能的魔法师,而小米8就是那个挥舞魔杖的勇敢少年!今天,...
安卓系统的职业选手,职业选手的... 职场高手,安卓战场上的风云人物 ?亲爱的游戏迷们,你是否曾在王者荣耀的战场上,目睹过那些如风似电的操...
安卓系统后台耗电高,高效管理策... 亲爱的手机控们,你们是不是也和我一样,每天对着手机,却总是担心电量不够用呢?尤其是安卓系统的小伙伴们...
小米3安装安卓系统,操作指南与... 亲爱的手机控们,你是否曾对自家的小米3手机心生厌倦,渴望给它换一副新颜?别急,今天就来手把手教你如何...
警察恢复安卓手机系统,警察如何... 手机突然卡成“龟速”,应用动不动就闪退,是不是感觉自己的安卓手机被“诅咒”了?别急,警察叔叔来帮你恢...
安卓手机有双系统,安装、设置与... 你有没有想过,你的安卓手机其实是个“变形金刚”,可以瞬间变身成两个不同的世界?没错,就是安卓手机有双...