兼容-記錄Xcode8.0恢復(fù)插件全過程

前言

Xcode 的插件大大豐富了 Xcode 的功能,而且有了 Alcatraz 匀归,插件的管理也非常容易坑资,但是有個非常惱人的問題:一旦升級 Xcode ,插件就失效穆端!終于有時間來寫下自己恢復(fù)Xcode8.0插件的全過程了袱贮。也算無語,我在回復(fù)插件的時候嘗試了兩個不同的方法体啰。不管怎樣最后還是回復(fù)了插件的使用了攒巍。


Xcode8為什么禁止外來插件

我們可以看到在Xcode8中支持了開發(fā)插件工程,并且為我們提供了一個插件模板荒勇,開發(fā)的插件可以上傳到App Store下載柒莉。蘋果這么做有一個原因在于,之前Xcode和插件是運行在同一個進程的沽翔,所以插件的崩潰也會導(dǎo)致Xcode崩潰兢孝。蘋果現(xiàn)在將插件作為一個單獨的應(yīng)用程序,分開進程運行仅偎,不會對Xcode帶來其他影響跨蟹。


插件的工作原理

讓我們首先了解下,插件是怎樣在Xcode中其作用的橘沥。Xcode 的插件放置在 ~/Library/Application Support/Developer/Shared/Xcode/Plug-ins 目錄下喷市,為 .xcplugin 格式。通過 Show Content 可以看到 xcplugin 中存在一個 Info.plist威恼,其中有一項為 DVTPlugInCompatibilityUUIDs,而這就是插件失效的原因寝并。

由于 Apple 沒有公開插件開發(fā)的相關(guān)資料箫措,這里我只能通過命名跟值猜測 DVTPlugInCompatibilityUUIDs 的作用:插件通過 DVTPlugInCompatibilityUUIDs 來指定能夠運行此插件的 Xcode 版本。因此衬潦,DVTPlugInCompatibilityUUIDs 中存放的是 Xcode 版本對應(yīng)的 UUID斤蔓,Xcode 在啟動加載控件時,將當(dāng)前 UUID 同插件 Info.plist 中 DVTPlugInCompatibilityUUIDs 存放的 UUID 數(shù)組進行匹配镀岛,如果沒有匹配項弦牡,說明此插件無法在該版本的 Xcode 運行,插件也就失效了漂羊。

Snip20161208_6.png

Snip20161208_7.png

解決辦法:將當(dāng)前版本的 UUID 加到 DVTPlugInCompatibilityUUIDs 中即可驾锰。更多查看

一.通過xcode_plugins 破解Xcode 簽名保護

  • 復(fù)制一份xcode8出來,對其進行unsign.

  • 然后用這個unsign的xcode繼續(xù)愉快的和插件玩耍;( 通過update_xcode_plugins這個庫)

  • 當(dāng)我們需要打包的時候走越,我們可以繼續(xù)回到安全的xcode上工作椭豫。

可以參考:update_xcode_plugins里面有很詳細的步驟
需要注意的是里面有一個說明:(if still having problems: sudo gem install -n /usr/local/bin update_xcode_plugins)
當(dāng)你輸入命令行時可以直接輸入這里的,我當(dāng)時輸入前面的命令行時有問題赏酥,輸入這里的才可以喳整。

Snip20161208_8.png

需要說明的是 (Choose which Xode.app you would like to copy and unsign (use arrows) ) 時,箭頭指的是鍵盤上方向鍵的 上下鍵B惴觥?蚨肌!呵晨!

Snip20161208_3.png

終端輸入命令行中報了錯:

  • 權(quán)限問題


    Snip20161208_1.png

這是因為要執(zhí)行這些操作時必須有管理員的權(quán)限(比如更新軟件)
You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.
** 只需要在命令前加上sudo,** 例如:sudo gem install cocoapods即可.sudo是獲取管理員權(quán)限,現(xiàn)在按照步驟輸入管理員密碼即可.

  • Unable to download data from http:// ruby.taobao.org/ - bad response Not Found 404..

原因:需要升級http://ruby.taobao.org/https://ruby.taobao.org/
官網(wǎng)中看到:我們已經(jīng)停止基于 HTTP 協(xié)議的鏡像服務(wù), 請在配置中使用 HTTPS 協(xié)議代替
$ gem sources --add https://ruby.taobao.org/ --remove http://ruby.taobao.org/

二.通過證書重簽

我為什么沒有詳細描述上個方法的步驟魏保?因為那個方法我試過了,但是沒有效果:渭浴囱淋! T_T

下面說的這個方法是有效的,詳細介紹下餐塘。
這個方法是在Alcatraz的issue里面看到的:https://github.com/XVimProject/XVim/blob/master/INSTALL_Xcode8.md親測可用妥衣,并且修改過后的xcode可用正常打包上架,不必擔(dān)心

  • 更新Xcode戒傻,目前最新版本是8.1税手;

  • 由于安裝插件會影響原來的Xcode打包上傳,我們在應(yīng)用程序里復(fù)制一個Xcode需纳,并重命名為XcodeSigner芦倒;


    1481074788147366.png

    XcodeSigner

  • 打開鑰匙串,創(chuàng)建新證書不翩,名稱填XcodeSigner兵扬,證書類型選擇代碼簽名(Code Signing);


    1481074627830091.png

    創(chuàng)建證書

1481074640411631.png

填寫證書信息

  • 在終端命令中輸入:sudo codesign -f -s XcodeSigner /Applications/XcodeSigner.app口蝠,耐心等待命令執(zhí)行完畢器钟。
Paste_Image.png

這里我要說一下,這個時間很長妙蔗,長的很傲霸,反正我當(dāng)時等了半個小時也沒有好,最后下班后放那里回家了眉反,第二天來了昙啄,反正是好了。

  • 安裝Alcatraz寸五,如果重啟xcode沒有顯示load bundle梳凛,在終端運行如下代碼 添加xcode8的id給插件 應(yīng)該可以解決大部分插件的問題

find ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins -name Info.plist -maxdepth 3 | xargs -I{} defaults write {} DVTPlugInCompatibilityUUIDs -array-add defaults read /Applications/Xcode.app/Contents/Info.plist DVTPlugInCompatibilityUUID

PS:有可能在終端輸入命令行時會報如下錯誤提示:

this identity cannot be used for signing code
此時是因為你在生成 證書的時候 證書類型選擇的不是 “代碼簽名”這個類型,導(dǎo)致的錯誤播歼。

最后

Snip20161209_4.png

最后 1 部分出現(xiàn)了妻怎,可是 2部分沒有出現(xiàn)。因為Xcode屏蔽了插件绵疲,打開插件功能扰付,打開終端:

 sudo /usr/libexec/xpccachectl

然后重啟電腦即可生效。一定要重啟電腦才行

一些好用的插件

AMMethod2Implement


AutoCompletion

Auto-Importer-for-Xcode

AutoHighlightSymbol

CocoaControlsPlugin


cocoapods-xcode-plugin

extract-localizable-string-plugin-xcode


FastCoding-Xcode-Plugin

FastStub-Xcode







findit-for-xcode

FKRealGroup

HCTemplet

HOStringSense-for-Xcode


JSPatchX

MLAutoReplace




Xcode-Quick-Localization

RTTinyPNGWebAPIPlugin


https://github.com/rickytan/RTTinyPNGWebAPIPlugin/raw/master/ScreenShots/s1.png

https://github.com/rickytan/RTTinyPNGWebAPIPlugin/raw/master/ScreenShots/s2.png

https://github.com/rickytan/RTTinyPNGWebAPIPlugin/raw/master/ScreenShots/s3.png

StringManage


?

StringsValidator


小結(jié)

至此,Xcode8 的插件就可以恢復(fù)使用了。

參考文章
參考文章

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市拢肆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌靖诗,老刑警劉巖郭怪,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異刊橘,居然都是意外死亡鄙才,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門促绵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來攒庵,“玉大人,你說我怎么就攤上這事败晴∨埃” “怎么了?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵尖坤,是天一觀的道長稳懒。 經(jīng)常有香客問我,道長慢味,這世上最難降的妖魔是什么场梆? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮纯路,結(jié)果婚禮上辙谜,老公的妹妹穿的比我還像新娘。我一直安慰自己感昼,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布罐脊。 她就那樣靜靜地躺著定嗓,像睡著了一般。 火紅的嫁衣襯著肌膚如雪萍桌。 梳的紋絲不亂的頭發(fā)上宵溅,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天,我揣著相機與錄音上炎,去河邊找鬼恃逻。 笑死雏搂,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的寇损。 我是一名探鬼主播凸郑,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼矛市!你這毒婦竟也來了芙沥?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤浊吏,失蹤者是張志新(化名)和其女友劉穎而昨,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體找田,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡歌憨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了墩衙。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片务嫡。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖底桂,靈堂內(nèi)的尸體忽然破棺而出植袍,到底是詐尸還是另有隱情,我是刑警寧澤籽懦,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布于个,位于F島的核電站,受9級特大地震影響暮顺,放射性物質(zhì)發(fā)生泄漏厅篓。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一捶码、第九天 我趴在偏房一處隱蔽的房頂上張望羽氮。 院中可真熱鬧,春花似錦惫恼、人聲如沸档押。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽令宿。三九已至,卻和暖如春腕窥,著一層夾襖步出監(jiān)牢的瞬間粒没,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工簇爆, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留癞松,地道東北人爽撒。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像响蓉,于是被迫代替她去往敵國和親硕勿。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,802評論 2 345

推薦閱讀更多精彩內(nèi)容