SlideShare a Scribd company logo
1 of 20
Download to read offline
打造你專屬的Xcode plugin 
Michael Chen 
KKBOX
Overview 
• Xcode plugin template 
• 窺探Xcode runtime 
• 寫plugin⼀一些⼩小撇步 
• 好東⻄西要與好朋友分享
Xcode plugin有百百種...
⾃自⼰己的plugin⾃自⼰己刻 
⾃自⼰己的GA⾃自⼰己刻
Xcode plugin簡介 
• 附檔名為.xcplugin 
• 放在~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/
Xcode template 
• Infos.plist 
! 
$ defaults read /Applications/Xcode.app/Contents/Info.plist | grep 
DVTPlugInCompatibilityUUID 
DVTPlugInCompatibilityUUID = "A2E4D43F-41F4-4FB9-BB94-7177011C9AED";
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的附檔名
其實也不⽤用這麼⿇麻煩... 
https://github.com/kattrali/Xcode5-Plugin-Template
可以開始寫 
• 新增⼀一個主要class,跟Principal class名稱⼀一樣。 
• plugin初始化 + (void)pluginDidLoad:(NSBundle *)bundle
⼩小撇步1 
• 設定Scheme,讓Xcode⾃自⼰己對⾃自⼰己debug
⼩小撇步2 
• class-dump xcode 
• https://github.com/luisobo/Xcode-RuntimeHeaders
⼩小撇步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
⼤大功告成 
• MCLog - 利⽤用Regular Expression過濾console log 
https://github.com/yuhua-chen/MCLog
好東⻄西不分享嗎?
上架吧 
• GitHub 
• Alcatraz - The package manager for Xcode. 
http://alcatraz.io/ 
• clone下來 
• package.json加上資訊 
• 發pull request
Twitter轉發, blog分享
意外收穫
太爽拉! 
• Trending repositories 成就達成!
謝謝各位! 
Michael Chen 
@yuhua_twit

More Related Content

What's hot

應用 Sikuli 在 Android 設備上執行自動化測試
應用 Sikuli 在 Android 設備上執行自動化測試應用 Sikuli 在 Android 設備上執行自動化測試
應用 Sikuli 在 Android 設備上執行自動化測試Jz Chang
 
Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲
Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲
Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲ChinaNetCloud
 
Angular js twmvc#17
Angular js twmvc#17Angular js twmvc#17
Angular js twmvc#17twMVC
 
使用 ASP.NET 5 實戰開發雲端應用程式
使用 ASP.NET 5 實戰開發雲端應用程式使用 ASP.NET 5 實戰開發雲端應用程式
使用 ASP.NET 5 實戰開發雲端應用程式Will Huang
 
給 iOS 工程師的 Flutter 開發
給 iOS 工程師的 Flutter 開發給 iOS 工程師的 Flutter 開發
給 iOS 工程師的 Flutter 開發Weizhong Yang
 
Angular 7 全新功能探索 (Angular Taiwan 2018)
Angular 7 全新功能探索 (Angular Taiwan 2018)Angular 7 全新功能探索 (Angular Taiwan 2018)
Angular 7 全新功能探索 (Angular Taiwan 2018)Will Huang
 
Visual Studio 2017 新功能探索 (Study4.TW)
Visual Studio 2017 新功能探索 (Study4.TW)Visual Studio 2017 新功能探索 (Study4.TW)
Visual Studio 2017 新功能探索 (Study4.TW)Will Huang
 
進擊的前端工程師:今天就用 JSON Server 自己打造 API 吧!
進擊的前端工程師:今天就用 JSON Server 自己打造 API 吧!進擊的前端工程師:今天就用 JSON Server 自己打造 API 吧!
進擊的前端工程師:今天就用 JSON Server 自己打造 API 吧!Will Huang
 
玩轉 .NET Interactive Notebooks 一次就上手
玩轉 .NET Interactive Notebooks 一次就上手玩轉 .NET Interactive Notebooks 一次就上手
玩轉 .NET Interactive Notebooks 一次就上手Poy Chang
 
容器與 Gitlab CI 應用
容器與 Gitlab CI 應用容器與 Gitlab CI 應用
容器與 Gitlab CI 應用Philip Zheng
 
Angular 4 新手入門攻略完全制霸
Angular 4 新手入門攻略完全制霸Angular 4 新手入門攻略完全制霸
Angular 4 新手入門攻略完全制霸Will Huang
 

What's hot (11)

應用 Sikuli 在 Android 設備上執行自動化測試
應用 Sikuli 在 Android 設備上執行自動化測試應用 Sikuli 在 Android 設備上執行自動化測試
應用 Sikuli 在 Android 設備上執行自動化測試
 
Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲
Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲
Dev-Ops与Docker的最佳实践 QCon2016 北京站演讲
 
Angular js twmvc#17
Angular js twmvc#17Angular js twmvc#17
Angular js twmvc#17
 
使用 ASP.NET 5 實戰開發雲端應用程式
使用 ASP.NET 5 實戰開發雲端應用程式使用 ASP.NET 5 實戰開發雲端應用程式
使用 ASP.NET 5 實戰開發雲端應用程式
 
給 iOS 工程師的 Flutter 開發
給 iOS 工程師的 Flutter 開發給 iOS 工程師的 Flutter 開發
給 iOS 工程師的 Flutter 開發
 
Angular 7 全新功能探索 (Angular Taiwan 2018)
Angular 7 全新功能探索 (Angular Taiwan 2018)Angular 7 全新功能探索 (Angular Taiwan 2018)
Angular 7 全新功能探索 (Angular Taiwan 2018)
 
Visual Studio 2017 新功能探索 (Study4.TW)
Visual Studio 2017 新功能探索 (Study4.TW)Visual Studio 2017 新功能探索 (Study4.TW)
Visual Studio 2017 新功能探索 (Study4.TW)
 
進擊的前端工程師:今天就用 JSON Server 自己打造 API 吧!
進擊的前端工程師:今天就用 JSON Server 自己打造 API 吧!進擊的前端工程師:今天就用 JSON Server 自己打造 API 吧!
進擊的前端工程師:今天就用 JSON Server 自己打造 API 吧!
 
玩轉 .NET Interactive Notebooks 一次就上手
玩轉 .NET Interactive Notebooks 一次就上手玩轉 .NET Interactive Notebooks 一次就上手
玩轉 .NET Interactive Notebooks 一次就上手
 
容器與 Gitlab CI 應用
容器與 Gitlab CI 應用容器與 Gitlab CI 應用
容器與 Gitlab CI 應用
 
Angular 4 新手入門攻略完全制霸
Angular 4 新手入門攻略完全制霸Angular 4 新手入門攻略完全制霸
Angular 4 新手入門攻略完全制霸
 

Viewers also liked

Berg hind joseph_credentials
Berg hind joseph_credentialsBerg hind joseph_credentials
Berg hind joseph_credentialsBerghind
 
What do you_know_about_the_usa
What do you_know_about_the_usaWhat do you_know_about_the_usa
What do you_know_about_the_usaAntshil
 
Ottimizzatore di tensione news
Ottimizzatore di tensione newsOttimizzatore di tensione news
Ottimizzatore di tensione newsElio Pellegrino
 
Guide to open suse 13.2 by mustafa rasheed abass & abdullah t. tua'ama (update)
Guide to open suse 13.2 by mustafa rasheed abass & abdullah t. tua'ama (update)Guide to open suse 13.2 by mustafa rasheed abass & abdullah t. tua'ama (update)
Guide to open suse 13.2 by mustafa rasheed abass & abdullah t. tua'ama (update)Mustafa AL-Timemmie
 
Ungheni About High Schools
Ungheni About High SchoolsUngheni About High Schools
Ungheni About High SchoolsDoina Morari
 
Systéme nerveux et plongée fassas
Systéme nerveux et plongée fassasSystéme nerveux et plongée fassas
Systéme nerveux et plongée fassasIslem Soualhi
 
Bach 14 peças faceis
Bach 14 peças faceisBach 14 peças faceis
Bach 14 peças faceisGilmar Silva
 
Bitcoin USA.com ATM Network
Bitcoin USA.com ATM NetworkBitcoin USA.com ATM Network
Bitcoin USA.com ATM NetworkBitcoinz USA
 
Developments Under the Clean Air Act Implications and Ramifications
Developments Under the Clean Air Act  Implications and RamificationsDevelopments Under the Clean Air Act  Implications and Ramifications
Developments Under the Clean Air Act Implications and RamificationsQuarles & Brady
 
Literate environment analysis presentation
Literate environment analysis presentationLiterate environment analysis presentation
Literate environment analysis presentationEvangelineOrr
 
"How to Operate a Website that Complies with Today’s Accessibility and Privac...
"How to Operate a Website that Complies with Today’s Accessibility and Privac..."How to Operate a Website that Complies with Today’s Accessibility and Privac...
"How to Operate a Website that Complies with Today’s Accessibility and Privac...Quarles & Brady
 
Get connected bender
Get connected benderGet connected bender
Get connected benderDoina Morari
 
Современные организации и корпоративные культуры
Современные организации и корпоративные культурыСовременные организации и корпоративные культуры
Современные организации и корпоративные культурыEkaterina Trubilo
 

Viewers also liked (19)

PD: Bab 2
PD: Bab 2PD: Bab 2
PD: Bab 2
 
Hasan bin thabit
Hasan bin thabitHasan bin thabit
Hasan bin thabit
 
Berg hind joseph_credentials
Berg hind joseph_credentialsBerg hind joseph_credentials
Berg hind joseph_credentials
 
What do you_know_about_the_usa
What do you_know_about_the_usaWhat do you_know_about_the_usa
What do you_know_about_the_usa
 
GoGoJob - employer
GoGoJob - employerGoGoJob - employer
GoGoJob - employer
 
Ottimizzatore di tensione news
Ottimizzatore di tensione newsOttimizzatore di tensione news
Ottimizzatore di tensione news
 
свято осені
свято осенісвято осені
свято осені
 
Guide to open suse 13.2 by mustafa rasheed abass & abdullah t. tua'ama (update)
Guide to open suse 13.2 by mustafa rasheed abass & abdullah t. tua'ama (update)Guide to open suse 13.2 by mustafa rasheed abass & abdullah t. tua'ama (update)
Guide to open suse 13.2 by mustafa rasheed abass & abdullah t. tua'ama (update)
 
Socrates
SocratesSocrates
Socrates
 
Ungheni About High Schools
Ungheni About High SchoolsUngheni About High Schools
Ungheni About High Schools
 
Systéme nerveux et plongée fassas
Systéme nerveux et plongée fassasSystéme nerveux et plongée fassas
Systéme nerveux et plongée fassas
 
Calcimax
CalcimaxCalcimax
Calcimax
 
Bach 14 peças faceis
Bach 14 peças faceisBach 14 peças faceis
Bach 14 peças faceis
 
Bitcoin USA.com ATM Network
Bitcoin USA.com ATM NetworkBitcoin USA.com ATM Network
Bitcoin USA.com ATM Network
 
Developments Under the Clean Air Act Implications and Ramifications
Developments Under the Clean Air Act  Implications and RamificationsDevelopments Under the Clean Air Act  Implications and Ramifications
Developments Under the Clean Air Act Implications and Ramifications
 
Literate environment analysis presentation
Literate environment analysis presentationLiterate environment analysis presentation
Literate environment analysis presentation
 
"How to Operate a Website that Complies with Today’s Accessibility and Privac...
"How to Operate a Website that Complies with Today’s Accessibility and Privac..."How to Operate a Website that Complies with Today’s Accessibility and Privac...
"How to Operate a Website that Complies with Today’s Accessibility and Privac...
 
Get connected bender
Get connected benderGet connected bender
Get connected bender
 
Современные организации и корпоративные культуры
Современные организации и корпоративные культурыСовременные организации и корпоративные культуры
Современные организации и корпоративные культуры
 

Similar to 打造你專屬的Xcode plugin

Flutter 踩雷心得
Flutter 踩雷心得Flutter 踩雷心得
Flutter 踩雷心得Weizhong Yang
 
Google app engine安裝教學
Google app engine安裝教學Google app engine安裝教學
Google app engine安裝教學勝億 曾
 
Clojure cnclojure-meetup
Clojure cnclojure-meetupClojure cnclojure-meetup
Clojure cnclojure-meetupsunng87
 
Eclipse開發平台快速入門
Eclipse開發平台快速入門Eclipse開發平台快速入門
Eclipse開發平台快速入門Luo Korth
 
How to avoid check style errors
How to avoid check style errorsHow to avoid check style errors
How to avoid check style errorsGuo Albert
 
Java Build Tool course in 2011
Java Build Tool course in 2011Java Build Tool course in 2011
Java Build Tool course in 2011Ching Yi Chan
 
NodeJS基礎教學&簡介
NodeJS基礎教學&簡介NodeJS基礎教學&簡介
NodeJS基礎教學&簡介GO LL
 
docker intro
docker introdocker intro
docker introkoji lin
 
Cloudstack dev/user sharing
Cloudstack dev/user sharingCloudstack dev/user sharing
Cloudstack dev/user sharinggavin_lee
 
Phalcon2014 Startup
Phalcon2014 StartupPhalcon2014 Startup
Phalcon2014 StartupSteve Luo
 
icecream / icecc:分散式編譯系統簡介
icecream / icecc:分散式編譯系統簡介icecream / icecc:分散式編譯系統簡介
icecream / icecc:分散式編譯系統簡介Kito Cheng
 
VSCode Remote Development
VSCode Remote DevelopmentVSCode Remote Development
VSCode Remote DevelopmentPhilip Zheng
 
VSCode Remote Development 介紹
VSCode Remote Development 介紹VSCode Remote Development 介紹
VSCode Remote Development 介紹Philip Zheng
 
Docker 最佳实践
Docker 最佳实践Docker 最佳实践
Docker 最佳实践YuLing Liu
 
GDG Taichung - Flutter and Firebase.pdf
GDG Taichung - Flutter and Firebase.pdfGDG Taichung - Flutter and Firebase.pdf
GDG Taichung - Flutter and Firebase.pdfDuran Hsieh
 
Workflow Overview
Workflow OverviewWorkflow Overview
Workflow OverviewKevin Cao
 
jsdoc-toolkit
jsdoc-toolkitjsdoc-toolkit
jsdoc-toolkitsatans17
 
Composer 套件管理
Composer 套件管理Composer 套件管理
Composer 套件管理Shengyou Fan
 
CodeIgniter 2.0.X
CodeIgniter 2.0.XCodeIgniter 2.0.X
CodeIgniter 2.0.XBo-Yi Wu
 

Similar to 打造你專屬的Xcode plugin (20)

Flutter 踩雷心得
Flutter 踩雷心得Flutter 踩雷心得
Flutter 踩雷心得
 
Google app engine安裝教學
Google app engine安裝教學Google app engine安裝教學
Google app engine安裝教學
 
Clojure cnclojure-meetup
Clojure cnclojure-meetupClojure cnclojure-meetup
Clojure cnclojure-meetup
 
Eclipse開發平台快速入門
Eclipse開發平台快速入門Eclipse開發平台快速入門
Eclipse開發平台快速入門
 
How to avoid check style errors
How to avoid check style errorsHow to avoid check style errors
How to avoid check style errors
 
Java Build Tool course in 2011
Java Build Tool course in 2011Java Build Tool course in 2011
Java Build Tool course in 2011
 
NodeJS基礎教學&簡介
NodeJS基礎教學&簡介NodeJS基礎教學&簡介
NodeJS基礎教學&簡介
 
docker intro
docker introdocker intro
docker intro
 
Cloudstack dev/user sharing
Cloudstack dev/user sharingCloudstack dev/user sharing
Cloudstack dev/user sharing
 
Html5
Html5Html5
Html5
 
Phalcon2014 Startup
Phalcon2014 StartupPhalcon2014 Startup
Phalcon2014 Startup
 
icecream / icecc:分散式編譯系統簡介
icecream / icecc:分散式編譯系統簡介icecream / icecc:分散式編譯系統簡介
icecream / icecc:分散式編譯系統簡介
 
VSCode Remote Development
VSCode Remote DevelopmentVSCode Remote Development
VSCode Remote Development
 
VSCode Remote Development 介紹
VSCode Remote Development 介紹VSCode Remote Development 介紹
VSCode Remote Development 介紹
 
Docker 最佳实践
Docker 最佳实践Docker 最佳实践
Docker 最佳实践
 
GDG Taichung - Flutter and Firebase.pdf
GDG Taichung - Flutter and Firebase.pdfGDG Taichung - Flutter and Firebase.pdf
GDG Taichung - Flutter and Firebase.pdf
 
Workflow Overview
Workflow OverviewWorkflow Overview
Workflow Overview
 
jsdoc-toolkit
jsdoc-toolkitjsdoc-toolkit
jsdoc-toolkit
 
Composer 套件管理
Composer 套件管理Composer 套件管理
Composer 套件管理
 
CodeIgniter 2.0.X
CodeIgniter 2.0.XCodeIgniter 2.0.X
CodeIgniter 2.0.X
 

打造你專屬的Xcode plugin