ideplugin を使えるようにするまで

By | 2015年5月4日

最近は Tuna をもっぱら作っているのですが、DebggerUI.ideplugin を使いたくて少し試行錯誤したのでメモを残しておこうかなと思います。

そもそも ideplugin とはなんなのか

Xcode の Plugin として、この形式で提供されています。
/Applications/Xcode.app/Contents/PlugIns 以下にあります。

組み込み方

最初は framework みたいに project に追加すれば使えるようになると思ったのですが違うみたいです。
そうすると以下みたいなエラーがでます。

Undefined symbols for architecture x8664:
"
OBJCCLASS$IDEBreakpointEditorPopoverViewController", referenced from:
objc-class-ref in Tuna.o
ld: symbol(s) not found for architecture x86
64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

シンボルがみつからないようですね。

しばらくググると、「Question about linking a framework(ideplugin)」にいきつきました。
これを見る限り、どうやらこのままだと Resource のコピーしか行われないです。

DebuggerUI.ideplugin の場合ですと

  1. /Applications/Xcode.app/Contents/PlugIns/DebuggerUI.ideplugin を project に追加 (Resource のコピー)
  2. /Applications/Xcode.app/Contents/PlugIns/DebuggerUI.ideplugin/Contents/MacOS/DebuggerU を project に追加 (これ重要!)

これでめでたく使えるようになりましたとさ。

余談

使い方はバイナリからヘッダーを出力する class-dump というコマンドを使います。
これでヘッダーを出力して後はヘッダーから使い方を推測して、トライアンドエラーを繰り返します。

class-dump /Applications/Xcode.app/Contents/PlugIns/DebuggerUI.ideplugin

class-dump でヘッダーを出力しているからあれなんですが、型が id だらけなので本当につらいですね。
これをやっていると、はやく型がある世界にもどっていきたい衝動にかられます。

あと、メジャーなクラスだと github で検索すれば使い方がわかるんでいいんですけど
Breakpoint 関連のクラスは全くないのがとても悲しいです。

とはいえ Tuna 自体、着々とバージョンアップしていっているのでよければ使って頂ければと。

ではでは。

追記 2015/07/09 21:30

Alcatraz からインストールするとビルドに失敗してました。
理由としては DebuggerUI.ideplugin が Xcode 上、相対パスになっていたためビルド時に clang: error: no such file or directory: になっていたためです。

というわけで絶対パスに変更して解決しました。
ideplugin を使う際は気をつけないといけませんね。

あと、Alcatraz からインストールして動かない場合は以下のコマンドを実行して挙動を確認することができます。

$ cd "~/Library/Application Support/Alcatraz/Plug-ins/Tuna"
$ xcodebuild clean build

Tuna v0.9.1 リリースしました

By | 2015年3月28日

Tuna を使っていて少し不便なことがあったので更新しましたので、そのアナウンスです。

Tuna について少し説明すると、Aciton 付き Breakpoint を簡単に設定できる Plugin です。
Action 付き Breakpoint はすごい便利なんですけど、いかんせん設定がめんどくさすぎて気軽に使おうと思うようなものではありませんでした。

第18回yidevで「まだNSLogで消耗しているの?」を発表してきました 」が参考になるかなと思います。

v0.9.1 で追加された機能

今後、更新情報があれば Changes をアップデートしていこうと思います。
Alcatraz でインストールしている人は、一旦削除してから再インストールしてください。
自分でインストールしている人は pull して再度ビルドしてもらえれば最新版になります。

menu の位置を変更

Edit から Debug に変更しました。

Generally, Edit menu has menus for editing a TEXT itself.
Tuna's menu is used to put Breakpoints to source code.

In Xcode, menu items which use to control breakpoints are gathered in the Debug menu.
Because, I think that it might better to move Tuna menu into 'Debug' menu.

Toggle Breakpoint(Breakpoint の有効/無効を切り替える)

Breakpoint のアイコンをタップして有効/無効を切り替えることはできるんですけど、ショートカットとしては提供されていません。
わざわざマウスに持ち替えるのめんどくさいですよね?
というわけで Tuna でサポートしました。
デフォルトのショートカットとして Command + Shift + [ を設定しています。

Clear All File Breakpoint(Breakpoint を一括で削除)

Shared, Symbolic Breakpoint などは削除せずに、ファイルに紐付いている Breakpoint のみを一括で削除します。
Tuna を利用してデバッグしていると、至る所に Breakpoint の残骸だらけになってしまいます。
選択して削除するのもめんどくさいですし、
デフォルトのショートカットとして Command + Shift + ] を設定しています。

今後

ユーザーが独自で Action 付き Breakpoint を定義できるようにし、その設定を外部ファイルで管理するようにしようと思っています。

import, export もつけるつもりですけど、設定ファイルの保存場所を自由に設定できるようにしておこうかなと。
保存場所を Dropnbox にしておけば簡単に自分の設定を全ての端末で共有できるので便利ですよね。

それができれば public beta を取り除こうかなと思います。

何が要望などあれば気軽にコンタクトください。ではでは。

iOSアプリ開発に必要な証明書をXcodeから自動で作成してみた

By | 2014年12月10日

Request Certificates with Xcode

Xcode is the easiest way to request certificates. Connect your device to your Mac and click Use for Development in Xcode's Organizer window. Sign in with the Apple ID associated with your iOS Developer Program membership and Xcode will automatically generate your certificates.

とあるので、手動では何度かやってるので Xcode から証明書を自動で作成してみました。

手動のやり方は「よく分かる!iOS アプリ開発に必要な証明書ファイルの作成方法 | アドカレ2013 : SP #4」をみると分かりやすいかと思います。

iOS Developer Program に加入し、Activate までは済ませた状態とします。

Development 証明書

General > Identity > Team を設定すれば iOS Development:~ が作成された。

※ もしかしたら Team の下にある Fix-issue を押す必要があるかもしれません。

Production 証明書

Archive を実行し、その後に Validation を実行すれば iOS Distribution:~ が作成された。

※ もしからしたら Archive だけで作成されているのかもしれません。

昔、証明書を作ったときは iPhone Development:~ みたいな名前になって気がするけど、時がたって変わったのかそれとも Xcode から作成したため名前が変わったのかは分からないんです。。。

まとめ

端末をつなげて実行すれば自動で Devices の登録もしてくれるので、 Activate さえ済ましていれば Xcode から離れずに実機で動かすまでが簡単にできるようになっていましたとさ。

とりあえず試したいって人にはいいかも

“attaching to [appname]”で止まり起動しなくなった時の対処法

By | 2011年8月26日

Simulator を起動すると “attaching to [appname]” で hang する状態になってしまった。
そして無駄に時間を費やすハメに。。。

色々いじるも拉致があかず実機に転送してみるとThe application does not have a valid signature.というポップアップが!!
Titanium を使ってた際にこれでハマったことがあったので助かった。

原因は .app の直下に contents というフォルダを作っていたためでした。
詳細はここで説明していますのでそちらでどうぞ。
contents というフォルダをリネームすると起動したり実機に転送することができた。
Titanium だけと思ってたけども違ったみたい。それにしても、もう少しワーニングなりなんなり出してほしいものですね。

その他にも以下のような原因でもなるらしいです。
XCode 4 hangs at “Attaching to (app name)”
XCode4でSimulatorで動かそうとしたらAttaching to…で固まる
Xcode4: Attaching to MyApp

とにかく contents というフォルダを .app 直下に作らないことが吉です。