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

  • 58
    いいね
  • 9
    コメント
この記事は最終更新日から1年以上が経過しています。

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 の数によって多少メッセージが異なりますが大体こんな感じです
popup

これが曲者で、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 がやってきたわけですね。
みなさんガンガンおくりましょう。

感想

ただただつらい...

補足

ふむふむ