1月
11
2013
iOS Provisioning Portal から iOS Team Provisioning Profile: * を削除してしまった場合、以下の方法で再作成できます。
Xcode の Organizer ウィンドウを開き、ウィンドウ左のペインにリストされているデバイス名を Control-Click します。表示されたポップアップメニューから Add Device to Provisioning Portal を選択します。
あとは Xcode が処理してくれます。
既に Provisioning Portal に登録済みのデバイスに対し、Add Device to Provisioning Portal を行っても問題はないようです。
no comments | tags: Development, iOS | posted in Programming
12月
18
2012
$(SRCROOT) や $(CONFIGURATION) など忘れたときには、
Xcode Build Setting Reference を参照しましょう。
手っ取り早く、
$ xcodebuild -showBuildSettings |
で確認できたりもします。
no comments | tags: Development, iOS | posted in Programming
11月
22
2012
+[NSTimer scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:] |
で作成したタイマーは、UIScrollView のスクロール中に指定時間が経過しても selector を呼び出してくれません。
この場合は
+[NSTimer timerWithTimeInterval:target:selector:userInfo:repeats:] |
でタイマーを作成し、
-[NSRunLoop addTimer:forMode:] |
で NSRunLoop にタイマーを追加してください。
このとき forMode には NSRunLoopCommonModes を指定します。
no comments | tags: Development, iOS | posted in Programming
11月
10
2012
ごくまれに、場合によっては頻繁に、どこか別の環境でビルドされた Ad-Hoc ビルドのクラッシュログを見なければならないことがあります。
うまく symbolicatecrash で結果を得るには以下の手順が必要です。
(Ad-Hoc ビルドした .ipa やそのとき生成された .dSYM は入手済みとして話を進めます)
Xcode 4.5.2 の場合、symbolicatecrash は
/Applications/Xcode.app/Contents/Developer/Platforms/
iPhoneOS.platform/Developer/Library/PrivateFrameworks/
DTDeviceKit.framework/Versions/A/Resources
にあります。パスを通すとか、エイリアスを作成するなどしてください。
$ symbolicatecrash MyApp.crash MyApp.app.dSYM/ |
とすると、
Error: “DEVELOPER_DIR” is not defined at …以下省略
となるので、
DEVELOPER_DIR を設定してあげます。
$ export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer/" |
または
% setenv DEVELOPER_DIR /Applications/Xcode.app/Contents/Developer/ |
再度、
$ symbolicatecrash MyApp.crash MyApp.app.dSYM/ |
するとクラッシュログの解析結果が出力されるようになりますが、
2 CoreFoundation 0x34279b70 -[__NSArrayM objectAtIndex:] + 160
3 MyApp 0x00175470 0xca000 + 702554
といったように、フレームワークのアドレスはシンボル表示されますが、
アプリのアドレスがシンボル表示されません。
これを解決するには、MyApp.app/ が必要です。
とすると、Payload/MyApp.app が取り出せますので、
この状態で、
$ symbolicatecrash MyApp.crash MyApp.app.dSYM/ |
を行います。すると
2 CoreFoundation 0x34279b70 -[__NSArrayM objectAtIndex:] + 160
3 MyApp 0x00175470 -[MyApp cogitoergosum] (MyApp.m:664)
のような結果が得られ、当初の目的が果たせます。
解凍した MyApp.app は適当な場所にあっても探してくれるようです。
これが探していた情報だったと言う人は
私が作った iOS アプリの紹介ビデオでも見ていってください。
no comments | tags: Development, iOS | posted in Programming
11月
3
2012
キーチェーンアクセスの中にある、不要なTEAMSに属する証明書をすべて削除して、Xcodeを再起動すればOK。
no comments | tags: Development | posted in Miscellaneous
8月
23
2012
no comments | tags: iOS | posted in Miscellaneous
5月
8
2012
スタティックライブラリにどのアーキテクチャのコードが含まれているか確認したい場合、
以下のコマンドで確認することができます。
lipo -info libStaticLibrary.a |
または
lipo -detailed_info libStaticLibrary.a |
スタティックライブラリだけでなく、実行ファイルやダイナミックライブラリを指定することもできます。
no comments | tags: Development, iOS | posted in Programming
3月
23
2012
iOS 開発を行っていて、証明書要求(CertificateSigningRequest.certSigningRequest)を作成することがありますが、この内容が知りたくなった場合、ターミナルで以下のコマンドを実行します。
openssl req -inform pem -in CertificateSigningRequest.certSigningRequest -text |
iOS Provisioning Portal から取得した証明書の内容が知りたければ、以下のコマンドを実行します。
openssl x509 -inform der -in distribution_identity.cer -text |
他の開発環境へ証明書やプライベートキーを持っていく場合、p12 ファイルを作成し転送しますが、そのファイルの内容が知りたくなったら、以下のコマンドを実行します。
.p12 は通常パスワードをかけてあるはずなので、要求があればパスワードを入力します。
openssl pkcs12 -info -in 証明書.p12 |
プロビジョニングプロファイルの内容が見たい場合は、以下のコマンドを実行します。
プロビジョニングプロファイルには plist ファイルが埋め込まれています。これは vi コマンドなどでファイルを開くと確認できます。
openssl pkcs7 -inform der -print_certs -in your.mobileprovision -text |
no comments | tags: Development, iOS | posted in Programming
3月
14
2012
Lion の復元機能を呼び出すには、Mac を起動しながら Command + R を押し続ければよいのですが、Mac mini と Apple Wireless Keyboard を使用している場合は、ちょっとだけ注意が必要です。
決してあせらずに、画面がグレーになったら Command + R を押しましょう。早すぎると認識してくれません。
no comments | tags: OS X | posted in Miscellaneous
3月
14
2012
iOS プロジェクトで Base64 エンコードが必要になったので、取り急ぎ簡単な方法を探しました。
確認は Mac OS X 10.7.3 / Xcode 4.3.1 で行っています。
(1) http://cocoawithlove.com/2009/06/base64-encoding-options-on-mac-and.html から NSData_Base64.zip をダウンロードし、解凍します。
(2) NSData_Base64 フォルダ内にある NSData+Base64.h と NSData+Base64.m の2ファイルを開発中のプロジェクトに追加します。
(3) あとはエンコードしたいところで、
// Encode base64
NSData *targetData = ...
NSString *encodedString = [targetData base64EncodedString]; |
デコードなら、
// Decode base64
NSString *base64String = ...
NSData * decodedData = [NSData dataFromBase64String:base64String]; |
といった具合に使用します。NSData+Base64.h のインポートを忘れないようにしましょう。
OpenSSL を使っても Base64 エンコーディングできるようですが、OpenSSL 関連のライブラリは iOS に含まれていないので、今回その方法は採用しませんでした。
ここ http://cocoawithlove.com/2009/06/base64-encoding-options-on-mac-and.html には OpenSSL を使用した方法も説明されているので、興味のある方はどうぞ。
ちなみに、-base64EncodedString を使用した場合、64文字ごとに改行した Base64 文字列が生成されます。このとき使用される改行コードは CR+LF です。改行して欲しくないとか、80文字ごとで改行して欲しいなどの要求がある場合は、ソースを少しだけ調整すれば対応可能なようですので、ソースを一読されることをお勧めします。
no comments | tags: Development, iOS | posted in Programming