Edited at

Xcode 6.3.2 で Plugin を動くようにするまで

More than 3 years have passed since last update.

Xcode 6.3.2 で Plugin を動くようにするまで」から引用です


TL;DR


  • Xcode 6.3.2 用の DVTPlugInCompatibilityUUIDs を追加する

  • Xcode 起動時に Plugin を有効にするポップアップがでるようになった

  • 大抵の Plugin はメニューに表示されないが動作は初期設定の動作はする(設定で有効にしないと動かないようなものはダメ)

以下、それぞれの詳細です

追記 2015/05/22 14:04

人によって Plugin が入っている場所が違うので適宜変更してもらえればと。

パス

グローバル領域
/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins

ユーザー領域
~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins

追記終わり


DVTPlugInCompatibilityUUIDs を追加

以下のコマンドで一括して DVTPlugInCompatibilityUUIDs(E969541F-E6F9-4D25-8158-72DC3545A6C6) を追加

$ find ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins -name Info.plist | xargs -IFILE defaults write FILE DVTPlugInCompatibilityUUIDs -array-add E969541F-E6F9-4D25-8158-72DC3545A6C6


DVTPlugInCompatibilityUUIDs が異なる

追記 2015/05/22 14:04

FILE のところには plist を指定すれば問題ありませんでした。

使い方をミスってただけです。お騒がせしました。

$ defaults read /Applications/Xcode.app/Contents/Info.plist DVTPlugInCompatibilityUUID

追記おわり

普段 defaults read ...DVTPlugInCompatibilityUUIDs を確認してたので無駄にはまった。。。なんで違うのかはよくわかりません。僕の環境だけかもしれませんが defaults read ... は信じないと心に誓いました。

$ defaults read FILE DVTPlugInCompatibilityUUIDs /Applications/Xcode.app/Contents/Info.plist

(
"9F75337B-21B4-4ADC-B558-F9CADF7073A7"
)

$ cp /Applications/Xcode.app/Contents/Info.plist ~

$ plutil -convert xml1 ~/Info.plist
$ cat ~/Info.plist

...
<key>DVTPlugInCompatibilityUUID</key>
<string>E969541F-E6F9-4D25-8158-72DC3545A6C6</string>
...


Xcode 起動時に Plugin を有効にするポップアップがでるようになった

Plugin の数によって多少メッセージが異なりますが大体こんな感じです

これが曲者で、UUID 追加後に Xcode を起動すると初回のみ表示されます。

"Skip Bundle" を選択すると Plugin が無効になり、Xcode を再起動してもポップアップはでてきません

しかも default が "Skip Bundle" のため、適当に Enter を押すと Plugin が無効になるという悲しさ...


ポップアップを再度表示する方法

追記 2015/05/22 14:04

コメントから教えてもらいました。



defaults delete com.apple.dt.Xcode DVTPlugInManagerNonApplePlugIns-Xcode-6.3.2



でもリセットできるみたいです!

追記終わり


  1. Xcode を閉じる


  2. ~/Application Support/Developer/Shared/Xcode/Plug-ins の名前を変更する

  3. Xcode を起動


  4. ~/Application Support/Developer/Shared/Xcode/Plug-ins に名前を戻す

  5. Xcode を再起動

こうすれポップアップが表示されるので "Load Bundle" を選択しましょう


メニューを表示する方法

これは Xcode Plugin 開発者用ですね。

どうやら pluginDidLoad: が呼ばれたタイミングだと -[[NSApp mainMenu] itemWithTitle:]nil を返すようになったのが原因です。

NSMenuDidChangeItemNotification を Observe するようにしてメニューを設定するようにすれば出るようになります。

Tuna の場合はこんな感じで対応しました。

PR おくれば大抵マージされると思うので空前の GitHub Chance がやってきたわけですね。

みなさんガンガンおくりましょう。


感想

ただただつらい...


補足

ふむふむ