Hatena::ブログ(Diary)

iPhoneアプリケーション開発

2008-12-31

AppKiDo-for-iPhoneがリリース!

| 12:18

CococaプログラマならおなじみのUtility. AppKiDoのラインナップに、iPhoneアプリ開発に特化したAppKiDo for iPhoneが加わっています!! 待ってました!!!

http://homepage.mac.com/aglee/downloads


f:id:iphone_dev:20081231121907p:image


AppKiDoは、Cocoa APIのリファレンスのブラウザーです。XcodeのDocumentationのウィンドウとほとんど同じなのですが、単体のアプリケーションとして動作するため、より高速かつ簡単に使うことができます。特にクラスの継承関係をきちんと理解して表示してくれる点が非常に便利です。

どういうことかというと....

たとえば、NSMutableArrayのインスタンスメソッドを調べているとします。XcodeのDocumentationのウィンドウ、もしくはヘッダファイルを直接参照した場合、NSMutableArrayのインスタンスメソッドはすべて網羅できますよね。探しているメソッドが見つからなくて、おかしいなぁ... としばらく考えて、そのメソッドが実はNSMutableArrayのメソッドではなく、NSArrayから継承しているメソッドだった!と気づく... そんな経験をしたことはありませんか。

AppKidoならそんな悩みは無用です。NSMutableArrayのインスタンスメソッドと継承しているメソッドの両方を、またはどちらかをワンクリックで表示することができます!!

OS Xアプリの開発で重宝していたAppKiDoなんですが、いままではiPhone用のUIKitのAPIの表示には対応していませんでした(例のNDAのせいです)。先日、ようやくiPhone用のAppKiDoがリリースされ、これでXcodeのDocumentationともおさらばできそうです。

一度使い出すと手放せなくなるはず! こんなすばらしいアプリを無償で公開されている Andy Leeさんに感謝!!

http://homepage.mac.com/aglee/downloads


自作アプリをApp Storeで世界に向けて販売できる!! iPhone SDKプログラミング大全 (MacPeople Books)
自作アプリをApp Storeで世界に向けて販売できる!! iPhone SDKプログラミング大全 (MacPeople Books)木下 誠

アスキー・メディアワークス 2009-01-06
売り上げランキング : 55


Amazonで詳しく見る
by G-Tools



f:id:iphone_dev:20081231121405p:image

人妻人妻 2009/10/10 10:31 大興奮でノンストップ!!
大好きなことたくさん♪

2008-10-03

追記 - dSYMファイルの使い方

| 10:59

以前のポスト - dSYMファイルの使い方 の補足です。実際に使ってみました。

http://d.hatena.ne.jp/iphone_dev/20080924/1222256965

最近リリースしたアプリがある操作をすると落ちるという苦情をいただきました。その方にお願いして、クラッシュログを送っていただいたところ、だいたい下のような感じのログでした。

Thread 0 Crashed:
0   libSystem.B.dylib             	0x31446cf0 0x313e3000 + 408816
1   libSystem.B.dylib             	0x31446cde 0x313e3000 + 408798
2   libSystem.B.dylib             	0x31446cd2 0x313e3000 + 408786
3   libSystem.B.dylib             	0x314614b4 0x313e3000 + 517300
4   libstdc++.6.dylib             	0x30075b6c 0x3000c000 + 433004
5   libobjc.A.dylib               	0x300c20fc 0x300bb000 + 28924
6   libstdc++.6.dylib             	0x30073100 0x3000c000 + 422144
7   libstdc++.6.dylib             	0x30073208 0x3000c000 + 422408
8   libobjc.A.dylib               	0x300c1f88 0x300bb000 + 28552
9   CoreFoundation                	0x3029a5a4 0x30237000 + 406948
10  Foundation                    	0x306dbb64 0x3066c000 + 457572
...

アドレスとオフセットのみの何がなんだかわからないログです。

ここで、上記のポストに書いたように symbolicatecrashをつかってみたところ、以下のように...

Thread 0 Crashed:
0   libSystem.B.dylib             	0x31446cf0 __kill + 8
1   libSystem.B.dylib             	0x31446cde kill + 4
2   libSystem.B.dylib             	0x31446cd2 raise + 10
3   libSystem.B.dylib             	0x314614b4 abort + 36
4   libstdc++.6.dylib             	0x30075b6c __gnu_cxx::__verbose_terminate_handler() + 556
5   libobjc.A.dylib               	0x300c20fc _objc_terminate + 160
6   libstdc++.6.dylib             	0x30073100 std::terminate() + 88
7   libstdc++.6.dylib             	0x30073208 __cxa_throw + 92
8   libobjc.A.dylib               	0x300c1f88 objc_exception_throw + 92
9   CoreFoundation                	0x3029a5a4 +[NSException raise:format:arguments:] + 76
10  Foundation                    	0x306dbb64 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 56
.....

これでだいぶはっきりしました!! ここで書いたログにはエラーの手がかりはあまりないのですが、この後のログにヒントが見つかりました。これでうまく修正できそうです。

やはり .dSYMファイルは保存しておくに限ります。くどいですが、AppStoreにサブミットしたバイナリをコンパイルしたときの .dSYMをとっておく必要があります! ご注意を。


もうひとつ。実際は対応する .dSYMファイルのパスをコマンドに与えなくても、Spotlightをつかって対応する.dSYMファイルを自動的に探してくれるらしいです。つまり、


   symbolicatecrash ログファイルのパス 

で大丈夫です。ご参考までに。

2008-09-24

.dSYMファイルの使い方

| 20:49

iPhoneアプリのクラッシュログとして、デバッグシンボルが入ってない意味不明のログしか取り出せないことってないですか? そんなときに使えるかもしれないハックです。


iPhoneアプリをコンパイルした時にbuildフォルダの中のアプリのとなりに、.dSYMという拡張子のファイルができることに気づいてますか?

どうもこのファイルはストリップされたデバッグシンボルが格納されているようです。このファイルを使って、上述のわかりにくいクラッシュログをシンボルつきのログに変換することできるスクリプトがあります!

/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Plug-ins/iPhoneRemoteDevice.xcodeplugin/Contents/Resources/symbolicatecrash

これを/usr/local/binなどのパスにコピーしておくと良いかも。

使い方は、

symbolicatecrash ログファイルのパス .dSYMファイルのパス

でいけるようです。ポイントはコンパイルしたときの .dSYMファイルを取っておくことです! とくにAppStoreにサブミットするときには、そのときの.dSYMファイルを取っておくようにしましょう。Appleからクラッシュログが返ってくる可能性もあります。

より詳しくはこちらをご参照ください。

acidscanacidscan 2008/10/28 03:08 Is it possible for you to resubmit the sample file ?

do_odo_o 2009/08/28 13:13 サンプルコードを再度アップしてほしいです。

何卒よろしくお願いします。

pipipipi 2012/04/02 15:02 とても分かりやすい記事ありがとうございます!
すみません、もう一度プロジェクトファイルをアップしていただくことは可能ですか??
DL期限を過ぎてるみたいで。。。汗

2008-08-25

実機でInstrumentsが使えなくなったときの対処法

| 16:39

Instrumentsは、アプリケーションの最適化を図る際に手放せないツールですが、たま〜にというかしょっちゅう実機で動かすことができなくなるときがあります。

アクティブなSDKをDeviceにして 「実行」 >> 「パフォーマンツツールを使って開始」しても、実機にアプリがインストールされるだけで、Instrumentsのセッションが開始しない.... orz

そんなときは、

オーガナイザのウィンドウを開いて、使おうとしている実機をいったん削除します。

その後で、もう一度同じ実機をつないで認識してあげて、Xcodeを再起動すると、なぜかInstrumentsが動くようになります!!

お試しあれー

2008-06-25

SDKベータ7でのProvisioning

| 10:29

SDK 7からProvisioningの方法が多少変更になったようです。

アプリケーションごとのAppID (########.com.yourcompany.youapp)から、一般的なAppID(#######.com.yourcampany.* もしくは ########.*)にスイッチすることが推奨されています。これはやはりアプリケーションごとにいちいちAppIDをつくって、Provisioningファイルを作って... というのが面倒だと言う開発者側からの要請でしょうか。

より一般的なAppIDを使うことで、同一のProvisioningで複数のAppをインストールして実験することができます。(たとえば、AppIDをcom.yourcompany.*としておけば、com.yourcompany.mailerとcom.yourcampany.texteditを共存させることができる)

Xcode上でのAppIDの入力の方法も変わりました。TargetのInfoパネルの Properties -> Identifierの項にはアサインされたランダムなIDを省略して入力することになりました(たとえば、2D34RFZ.com.yourcompany.*から com.yourcompany.*)

実際に使用する上での注意点として、複数のProvisioningプロファイルがオンになっているとインストール時にコンフリクトするようです。実際、私も"Your mobile device has encountered an unexpected error (0xE80000001) during the install phase: Verifying application" というエラーに悩まされました。XcodeのOrganizerのProvisioningの項で、使用したいProvisioningプロファイル以外のチェックボックスを外してあげると問題なくインストールできるようになります! ご注意ください。