スタティックライブラリに含まれるコードのアーキテクチャを確認する方法

スタティックライブラリにどのアーキテクチャのコードが含まれているか確認したい場合、
以下のコマンドで確認することができます。

lipo -info libStaticLibrary.a

または

lipo -detailed_info libStaticLibrary.a

スタティックライブラリだけでなく、実行ファイルやダイナミックライブラリを指定することもできます。

iOS 開発で使用する証明書、プロビジョニングプロファイルの内容を確認する方法

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

プロビジョニングプロファイルの内容(証明書)が見たい場合は、以下のコマンドを実行します。

openssl pkcs7 -inform der -print_certs -in your.mobileprovision -text

プロビジョニングプロファイルには plist ファイルが埋め込まれています。これは vi コマンドなどでファイルを開くと確認できますし、以下のコマンドでも確認できます。

security cms -D -i your.mobileprovision

Mac mini と Apple Wireless Keyboard で Lion 復元機能を呼び出す

Lion の復元機能を呼び出すには、Mac を起動しながら Command + R を押し続ければよいのですが、Mac mini と Apple Wireless Keyboard を使用している場合は、ちょっとだけ注意が必要です。

決してあせらずに、画面がグレーになったら Command + R を押しましょう。早すぎると認識してくれません。

iOS プロジェクトで Base64 エンコード/デコードを行う

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文字ごとで改行して欲しいなどの要求がある場合は、ソースを少しだけ調整すれば対応可能なようですので、ソースを一読されることをお勧めします。

iOS 用 OpenSSL ライブラリの作成

iOS アプリでデータの暗号化、復号を行う場合に、OpenSSL を使用したいことがあると思います。
iOS には Common Crypto というライブラリもありますので、こちらも検討してみることをお勧めしますが、
ここでは OpenSSL ライブラリの作成方法を簡単に説明します。
確認は Mac OS X 10.7.3 / Xcode 4.3.1 で行っています。

OpenSSL ライブラリ(libssl.a と libcrypto.a)の作成は以下の方法が簡単です。

(1) https://github.com/x2on/OpenSSL-for-iPhone からプロジェクトをダウンロードし、zip を解凍します。
試したときは x2on-OpenSSL-for-iPhone-openssl-1.0.0d-4-gc637f77.zip がダウンロードされました。

(2) シェルスクリプト build-libssl.sh がプロジェクトフォルダ内にあるので、これを開き、ベースとなる OpenSSL のバージョンと iOS SDK のバージョンを確認します。必要であれば調整します。

###########################################################################
#  Change values here                                                     #
#                                                                         #
VERSION="1.0.0g"                                                          #
SDKVERSION="5.0"                                                          #
#                                                                         #
###########################################################################

対応する iOS SDK が存在していないと、ライブラリの作成は失敗します。

(3) build-libssl.sh をターミナルで実行します。OpenSSL のソースが自動的にダウンロードされ、ライブラリの作成が始まります。作成されるライブラリは、i386、armv6、armv7 アーキテクチャ用のモジュールをまとめたスタティックライブラリです。

(4) ライブラリの作成が完了したら、プロジェクトフォルダ内の ./include と ./lib を、OpenSSL ライブラリを必要とするプロジェクトにコピーして使用します。OpenSSL を追加したプロジェクトのビルド設定にある検索パスも設定しておきましょう。前出の include と lib を openssl フォルダにまとめてプロジェクトに追加した場合、Header Search Paths に $(SRCROOT)/openssl/include を Library Search Paths に $(SRCROOT)/openssl/lib のように設定します。検索パスはライブラリを追加した場所に応じて適当に調整してください。

Stay Hungry. Stay Foolish.

 
Steve Jobs’ 2005 Stanford Commencement Address

Your time is limited, so don’t waste it living someone else’s life. Don’t be trapped by dogma — which is living with the results of other people’s thinking. Don’t let the noise of others’ opinions drown out your own inner voice. And most important, have the courage to follow your heart and intuition. They somehow already know what you truly want to become. Everything else is secondary.

Think Different

 

Here’s to the crazy ones. The misfits. The rebels. The troublemakers. The round pegs in the square holes.
The ones who see things differently. They’re not fond of rules. And they have no respect for the status quo. You can quote them, disagree with them, glorify or vilify them.
About the only thing you can’t do is ignore them. Because they change things. They invent. They imagine. They heal. They explore. They create. They inspire. They push the human race forward.
Maybe they have to be crazy.
How else can you stare at an empty canvas and see a work of art? Or sit in silence and hear a song that’s never been written? Or gaze at a red planet and see a laboratory on wheels?
We make tools for these kinds of people.
While some see them as the crazy ones, we see genius. Because the people who are crazy enough to think they can change the world, are the ones who do.