开发Xcode插件
苹果官方对于插件制作没有提供文档支持,但Xcode是默认开启了加载第三方插件的功能,插件是.xcplugin的文件(是bundle文件形式),存放于~/Library/Application Support/Developer/Shared/Xcode/Plug-ins文件夹中。
创建Xcode插件工程
创建一个插件工程, 就是直接创建bundle工程即可,然后通过修改后缀名为.xcplugin,放到~/Library/Application Support/Developer/Shared/Xcode/Plug-ins目录中即可,这个过程需要修改很多的工程配制,不过在Xcode的插件开发中,
Xcode-Plugin-Template很好的帮忙我们解决了创建Xcode plugin工程的繁琐过程,深受大家的喜欢。
安装 Xcode-Plugin-Template 打开https://github.com/kattrali/Xcode-Plugin-Template,发现竟然无法下载,提示404, 原来Xcode-Plugin-Template已经归入Alcatraz
安装Alcatraz
curl -fsSL https://raw.githubusercontent.com/supermarin/Alcatraz/deploy/Scripts/install.sh | sh
打开Xcode点击菜单Package Manager
搜索XCode Plugin并安装
新建项目
菜单里就会出现Xcode Plugin的选项
填入工程名称
点击完成,查看代码
- (void)didApplicationFinishLaunchingNotification:(NSNotification*)noti
{
//removeObserver
[[NSNotificationCenter defaultCenter] removeObserver:self name:NSApplicationDidFinishLaunchingNotification object:nil];
// Create menu items, initialize UI, etc.
// Sample Menu Item:
NSMenuItem *menuItem = [[NSApp mainMenu] itemWithTitle:@"Edit"];
if (menuItem) {
[[menuItem submenu] addItem:[NSMenuItem separatorItem]];
NSMenuItem *actionMenuItem = [[NSMenuItem alloc] initWithTitle:@"Do Action" action:@selector(doMenuAction) keyEquivalent:@""];
//[actionMenuItem setKeyEquivalentModifierMask:NSAlphaShiftKeyMask | NSControlKeyMask];
[actionMenuItem setTarget:self];
[[menuItem submenu] addItem:actionMenuItem];
}}
上面这段代码会在Xcode的Edit菜单下新增一个
Do Action
菜单
从Xcode5开始,插件都只能运行在特定版本的Xcode中。这也就意味着当新的Xcode更新安装后,所有的第三方插件都将失效,除非你添加了该版本Xcode的UUID。如果部分模板没有起作用,你也没看到一个新的菜单项,可能的原因之一就是因为没有对应版本的UUID,你需要添加对应该版本Xcode的支持
获取UUID:
defaults read /Applications/Xcode.app/Contents/Info DVTPlugInCompatibilityUUID
设置Info.plist文件的DVTPlugInCompatibilityUUIDs选项
运行此项目,会启动一个新的xcode实例,并点击
Do Action
菜单
Xcode的插件工程这里就创建完成!
Crasheye Xcode Plugin工程
Crasheye Xcode Plugin完成一键 Crasheye SDK 的安装、升级。
打开XCode工程
如果未安装或者有新版本时,会提示是否安装、升级
Crasheye Xcode Plugin的代码托管在了github,
工程地址 里面有关于Xcode IDE主要视图如果访问、获取、修改,如何修改工程配制等相关操作。