「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
でもリセットできるみたいです!
追記終わり
- Xcode を閉じる
-
~/Application Support/Developer/Shared/Xcode/Plug-ins
の名前を変更する - Xcode を起動
-
~/Application Support/Developer/Shared/Xcode/Plug-ins
に名前を戻す - Xcode を再起動
こうすれポップアップが表示されるので "Load Bundle" を選択しましょう
メニューを表示する方法
これは Xcode Plugin 開発者用ですね。
どうやら pluginDidLoad:
が呼ばれたタイミングだと -[[NSApp mainMenu] itemWithTitle:]
が nil
を返すようになったのが原因です。
NSMenuDidChangeItemNotification
を Observe するようにしてメニューを設定するようにすれば出るようになります。
Tuna の場合はこんな感じで対応しました。
PR おくれば大抵マージされると思うので空前の GitHub Chance がやってきたわけですね。
みなさんガンガンおくりましょう。
感想
ただただつらい...
補足
ふむふむ
ロードタイミングがはやくなってる感じやね。しかしアラート選択ミスると辛いな。 "Xcode 6.3.2 で Plugin を動くようにするまで - Qiita" http://t.co/iAKSHn5Uhh
— hetima (@hetima) May 21, 2015
pluginDidLoad: 時点で対象クラスが未ロードだったので、 NSApplicationDidFinishLaunchingNotification で対処した。 https://t.co/HbEEHGq1zs
— hetima (@hetima) May 21, 2015