巷に転がっている方法ではなぜか動かなったが、苦戦しつつも解決できたので誰かの助けになればと思い書く。
結論から言うと
- XVim2のブランチがXcode9.2対応ブランチでなかった
Xcode/Plug-ins/XVim2/XVim2/Info.plist
の15〜19行目にUUIDが記述されているが、ここに筆者が使っているXcodeのUUIDがないこと
が原因だった。
手順
ざっくりすると以下の手順。
- Xcode9.2対応ブランチに切り替える
- Xcode9.2のUUIDを追加しているコミットを取り込む
- make、update_xcode_pluginsをしてインストール
コマンドまとめ
コミット番号とか変わるはずがないので以下のコマンドを打っていけば動作するはず。 急いでいる方はこちらをどうぞ。
# Xcodeのプラグイン置き場に移動 cd ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins # XVim2を落としてくる git clone git://github.com/XVimProject/XVim2 XVim2 # ここからはXVim2ディレクトリの中で作業を行う cd XVim2 # Xcode9.2対応ブランチを作成 git checkout -b xcode9.2 refs/tags/xcode9.2 # XCode9.2のUDIDを追加しているプルリクエストをローカルに持ってくる git fetch origin pull/96/head:unchartedworks # UDIDを追加したコミットを取り込む git cherry-pick e85d3ed83018022d571474ce3bdaad3278a940f7 # XVim2をXcodeにインストール make update_xcode_plugins defaults delete com.apple.dt.Xcode DVTPlugInManagerNonApplePlugIns-Xcode-9.2
以上で無事XVim2が動くはず。
詰まった箇所1:masterブランチはXcode9.2に対応していない
git log
を見ていたら以下のコミットを発見
commit cca1fff54ed29798b54eb80a906260e88be4e366 Author: pebble8888 <pebble8888@gmail.com> Date: Sun Apr 1 15:01:47 2018 +0900 support Xcode9.3 (not support Xcode9.2 and lower)
おやおやまさかな、、、と思い初心に帰ってREADMEを見る。
tags xcode9.2 xcode9.4 Please use appropriate tags or branches.
最初からREADME見ろよと言いたい。「適切なブランチを使ってね」と書いてある。
Xcode9.2対応ブランチに切り替える方法
git log
をして「tag」で検索すると以下のような箇所が見つかるためコミット番号をコピーしてcheckoutする。
Xcode9.2対応ブランチに切り替える
git checkout 66c6dc44edfca8a032b78294a03721ee7c51dd95 -b xcode9.2
もしくはシンプルにこっち。
git checkout -b xcode9.2 refs/tags/xcode9.2
Xcode9.2のUUIDを追加しているコミットを取り込む
ブランチを切り替えただけではXVim2は動かなかった。あとで気づいたがどうやら筆者のXcodeのUUIDがXVim2/Info.plistに記述されていないことが原因だった。
以下の記事を参考に該当のコミットを取り込む。
プルリクをローカルに引っ張ってくる
git chery-pick
するために該当コミットをしているブランチをローカルに落とす必要がある。
git fetch origin pull/96/head:unchartedworks
コミットを取り込む
githubのプルリクからコミット番号を確認してgit cherry-pick
でコミットを取り込む
git cherry-pick e85d3ed83018022d571474ce3bdaad3278a940f7
詰まった箇所2:update_xcode_plugins --unsignの罠にはまる
あとはmake
してupdate_xcode_plugins --unsign
を終了!と思いきや壁にぶつかる。
どこのページを見てもupdate_xcode_plugins --unsign
のコマンドを実行しているが、以下のエラーが出る。
▶update_xcode_plugins --unsign Looking for Xcode... Didn't find any signed Xcode 8+ on your system.
念の為以下のコマンドでインストールしなおした。
sudo gem install update_xcode_plugins
しかし結果は変わらない。一度restoreした。
update_xcode_plugins --restore
ふとここでなんのためにupdate_xcode_plugins --unsign
をするのか気になったので調べてみた。
どうやらサードパーティ・プラグインをXcodeで利用する場合、署名を変更しないと、Xcodeの起動がすごく遅くなる、とのこと。
それなら別にとりあえずXVim2を使いたいなら--unsignしなくてもいいんじゃね?と思ったので--unsign
を外してみた。
▶update_xcode_plugins Found: - Xcode (9.2) [B395D63E-9166-4CD6-9287-6889D507AD6A]: /Applications/Xcode.app Plugins: - XVim2 (1.0) Updating... Finished! 🎉 It seems that you have Xcode 8+ installed! Some plugins might not work on recent versions of Xcode because of library validation. See https://github.com/alcatraz/Alcatraz/issues/475 Run `update_xcode_plugins --unsign` to fix this.
なんかうまくいっているっぽいのでこれで良しとした。
Xcode起動時にXVim2を読み込む
defaults delete com.apple.dt.Xcode DVTPlugInManagerNonApplePlugIns-Xcode-9.2
を打ち込みXcodeを起動する。すると以下のようなアラートが表示されるので「Load Bundle」をクリック。
プロジェクトを開くと、、、
感無量。
てかgit cherry-pick
とか使わず普通にInfo.plistに書き込めばよかったんじゃね...