打造你專屬的Xcode plugin
description
Transcript of 打造你專屬的Xcode plugin
![Page 1: 打造你專屬的Xcode plugin](https://reader030.fdocuments.net/reader030/viewer/2022013102/547e6e66b37959652b8b547c/html5/thumbnails/1.jpg)
打造你專屬的Xcode pluginMichael Chen
KKBOX
![Page 2: 打造你專屬的Xcode plugin](https://reader030.fdocuments.net/reader030/viewer/2022013102/547e6e66b37959652b8b547c/html5/thumbnails/2.jpg)
Overview
• Xcode plugin template
• 窺探Xcode runtime
• 寫plugin⼀一些⼩小撇步
• 好東⻄西要與好朋友分享
![Page 3: 打造你專屬的Xcode plugin](https://reader030.fdocuments.net/reader030/viewer/2022013102/547e6e66b37959652b8b547c/html5/thumbnails/3.jpg)
Xcode plugin有百百種...
![Page 4: 打造你專屬的Xcode plugin](https://reader030.fdocuments.net/reader030/viewer/2022013102/547e6e66b37959652b8b547c/html5/thumbnails/4.jpg)
⾃自⼰己的plugin⾃自⼰己刻
⾃自⼰己的GA⾃自⼰己刻
![Page 5: 打造你專屬的Xcode plugin](https://reader030.fdocuments.net/reader030/viewer/2022013102/547e6e66b37959652b8b547c/html5/thumbnails/5.jpg)
Xcode plugin簡介• 附檔名為.xcplugin
• 放在~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/
![Page 6: 打造你專屬的Xcode plugin](https://reader030.fdocuments.net/reader030/viewer/2022013102/547e6e66b37959652b8b547c/html5/thumbnails/6.jpg)
Xcode template• Infos.plist
!
$ defaults read /Applications/Xcode.app/Contents/Info.plist | grep DVTPlugInCompatibilityUUID
DVTPlugInCompatibilityUUID = "A2E4D43F-41F4-4FB9-BB94-7177011C9AED";
![Page 7: 打造你專屬的Xcode plugin](https://reader030.fdocuments.net/reader030/viewer/2022013102/547e6e66b37959652b8b547c/html5/thumbnails/7.jpg)
Xcode template• 設定Building Settings
參數名稱 值 說明
Installation Build Products Location
${HOME} Product根⺫⽬目錄
Installation Directory
/Library/Application Support/Developer/Shared/Xcode/Plug-ins
這是⼀一個相對路徑,會被上⾯面設定所影響。
Deployment Location YES Installation Directory
Wrapper Extension xcplugin Xcode plugin的附檔名
![Page 8: 打造你專屬的Xcode plugin](https://reader030.fdocuments.net/reader030/viewer/2022013102/547e6e66b37959652b8b547c/html5/thumbnails/8.jpg)
其實也不⽤用這麼⿇麻煩...https://github.com/kattrali/Xcode5-Plugin-Template
![Page 9: 打造你專屬的Xcode plugin](https://reader030.fdocuments.net/reader030/viewer/2022013102/547e6e66b37959652b8b547c/html5/thumbnails/9.jpg)
可以開始寫• 新增⼀一個主要class,跟Principal class名稱⼀一樣。
• plugin初始化 + (void)pluginDidLoad:(NSBundle *)bundle
![Page 10: 打造你專屬的Xcode plugin](https://reader030.fdocuments.net/reader030/viewer/2022013102/547e6e66b37959652b8b547c/html5/thumbnails/10.jpg)
⼩小撇步1• 設定Scheme,讓Xcode⾃自⼰己對⾃自⼰己debug
![Page 11: 打造你專屬的Xcode plugin](https://reader030.fdocuments.net/reader030/viewer/2022013102/547e6e66b37959652b8b547c/html5/thumbnails/11.jpg)
⼩小撇步2• class-dump xcode
• https://github.com/luisobo/Xcode-RuntimeHeaders
![Page 12: 打造你專屬的Xcode plugin](https://reader030.fdocuments.net/reader030/viewer/2022013102/547e6e66b37959652b8b547c/html5/thumbnails/12.jpg)
⼩小撇步3• Find a control http://stackoverflow.com/questions/2715534
• 接收所有的通知[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(listenAll:) name:nil object:nil];
• Hack private API swizzle method https://github.com/rentzsch/jrswizzle
![Page 13: 打造你專屬的Xcode plugin](https://reader030.fdocuments.net/reader030/viewer/2022013102/547e6e66b37959652b8b547c/html5/thumbnails/13.jpg)
⼤大功告成• MCLog - 利⽤用Regular Expression過濾console log
https://github.com/yuhua-chen/MCLog
![Page 14: 打造你專屬的Xcode plugin](https://reader030.fdocuments.net/reader030/viewer/2022013102/547e6e66b37959652b8b547c/html5/thumbnails/14.jpg)
好東⻄西不分享嗎?
![Page 15: 打造你專屬的Xcode plugin](https://reader030.fdocuments.net/reader030/viewer/2022013102/547e6e66b37959652b8b547c/html5/thumbnails/15.jpg)
上架吧• GitHub • Alcatraz - The package manager for Xcode.
http://alcatraz.io/ • clone下來 • package.json加上資訊 • 發pull request
![Page 16: 打造你專屬的Xcode plugin](https://reader030.fdocuments.net/reader030/viewer/2022013102/547e6e66b37959652b8b547c/html5/thumbnails/16.jpg)
![Page 17: 打造你專屬的Xcode plugin](https://reader030.fdocuments.net/reader030/viewer/2022013102/547e6e66b37959652b8b547c/html5/thumbnails/17.jpg)
Twitter轉發, blog分享
![Page 18: 打造你專屬的Xcode plugin](https://reader030.fdocuments.net/reader030/viewer/2022013102/547e6e66b37959652b8b547c/html5/thumbnails/18.jpg)
意外收穫
![Page 19: 打造你專屬的Xcode plugin](https://reader030.fdocuments.net/reader030/viewer/2022013102/547e6e66b37959652b8b547c/html5/thumbnails/19.jpg)
太爽拉!• Trending repositories 成就達成!
![Page 20: 打造你專屬的Xcode plugin](https://reader030.fdocuments.net/reader030/viewer/2022013102/547e6e66b37959652b8b547c/html5/thumbnails/20.jpg)
謝謝各位!Michael Chen @yuhua_twit