ユニバーサルバイナリ作成用シェルスクリプト

iPhone用にビルドしたライブラリは実機用(armv6/armv7)とシミュレータ用(i386)のユニバーサルバイナリとして作成しておくと使い勝手が良いです。 その分ビルドは面倒になるのですが。。

僕は通常以下のようにしてユニバーサルバイナリを作成してます。

  1. まずprefixをそれぞれ ~/dev/iphone/lib/curl-7.20.1-armv6 ~/dev/iphone/lib/curl-7.20.1-armv7 ~/dev/iphone/lib/curl-7.20.1-i386 などとしてそれぞれのアーキテクチャ用にビルドをする
  2. 適当に書いた bundle.sh でユニバーサルバイナリ化

この bundle.sh は上の例だと

./bundle.sh ~/dev/iphone/lib/curl-7.20.1

として実行すると ~/dev/iphone/lib/curl-7.20.1-armv6 ~/dev/iphone/lib/curl-7.20.1-armv7 ~/dev/iphone/lib/curl-7.20.1-i386 が全部がっちゃんこした ~/dev/iphone/lib/curl-7.20.1 ができるという寸法です。

この方法だとまだ3つ分手動でビルドするのがめんどくさいので、そこも自動化したいところですね。

by typester / at 2010-07-27T14:52:00 / osx · iphone / Comment

PhotoShare にアップロードするだけのアプリ

PhotoShare は写真共有を軸にした SNS のようなサイトで結構好きなのですが。写真をアップロードしたいだけという状況で写真をアップロードしようと公式アプリを立ち上げると自分宛のコメントが来てないかとか、友達の写真が更新されてないかとかチェックするのですぐにアップロード画面にいけずイライラしたりします。

そんなわけでシンプルに PhotoShare にアップロードするだけなアプリを作りました。

PS up: simple, fast uploader for PhotoShare

先日のたこthon で適当に書き上げたアプリなので本当にアップロードする以外の機能がありませんが、使いながら欲しい物を加えていこうと思ってます。使い方見つつインタフェースも。

by typester / at 2009-12-06T14:10:00 / iphone / Comment

CookPad の iPhone 用 API

こんな感じかな。

typester's cookpad-api-perl at master - GitHub

api_key ないと動かないからあれだけど。

by typester / at 2009-11-26T23:40:00 / web · cookpad · iphone / Comment

iPhone野良レポジトリの作り方

coderepos で野良レポジトリホストしたらいいんじゃね、っと思ったのでちょっとやり方をメモ。

iPhone の野良レポジトリは Debian の apt ベースになってるので、開発者が作った .deb ファイルをホストする感じになるのかな。なのでとりあえずここでは .deb の作り方は省く。

ホストの仕方は簡単で、.deb を同じディレクトリにつっこんでおいて、そのディレクトリ内で Debian の dpkg-dev パッケージをインストールすると入る dpkg-scanpackages コマンドを使って

dpkg-scanpackages -m . > Packages

とやるとそのディレクトリの .deb をなめてパッケージ一覧を作ってくれる。これを bzip2 して Packages.bz2 にすれば最低限のレポジトリが完成する。簡単ですね!

ただ、iPhone野良アプリの.debには独自のメタデータがあるので、 dpkg-scanpackages にそれを理解させるためにちょっと変更する必要はある。

--- /usr/bin/dpkg-scanpackages  2008-12-29 13:46:45.000000000 +0900
+++ dpkg-scanpackages   2008-12-10 14:12:55.000000000 +0900
@@ -25,7 +25,9 @@

 my @fieldpri = (qw(Package Package-Type Source Version Kernel-Version
                    Architecture Subarchitecture Essential Origin Bugs
-                   Maintainer Installed-Size Installer-Menu-Item),
+                   Maintainer Installed-Size Installer-Menu-Item
+                  Name Author Homepage Icon
+               ),
                 @pkg_dep_fields, qw(Filename Size MD5sum Section Priority
                    Homepage Description Tag));

僕の環境(Debian Lenny)ではこんな感じ。

この dpkg-scanpackages でつくった Packages.bz2 があるだけで一応レポジトリとしては機能するけど、どうせなのでレポジトリのメタデータなどを置きたいかと思います。

それは同じところに Release というファイル名で

Origin: Saurik's Example for Cydia
Label: Cydia Example
Suite: stable
Version: 0.9
Codename: tangelo
Architectures: iphoneos-arm
Components: main
Description: An Example Repository from HowTo Instructions

こういうのを置いておけばOKです。各項目の説明は saurik 先生のエントリの Step 4: Repository Metadata (Optional) というところを見るといいと思います。

しかし coderepos は debian ベースではなかった気がするから、どういう場合はどうやるんでしょうね。。

by typester / at 2009-02-03T13:38:00 / iphone / Comment

xcode でも toolchain でもビルドできる iPhone アプリ構成を作る手順メモ

まず、xcode で新規プロジェクト作成。Window-Based Application が余計なもの作らないのでおすすめ。

.
|____Classes
| |____my_test_projectAppDelegate.h
| |____my_test_projectAppDelegate.m
|____Info.plist
|____main.m
|____MainWindow.xib
|____my_test_project.xcodeproj
| |____project.pbxproj
| |____typester.mode1v3
| |____typester.pbxuser
|____my_test_project_Prefix.pch

こんなファイル構成ができあがる。

まず、nib ファイルは toolchain 環境では扱えないので MainWindow.xib は削除。Info.plist からも

<key>NSMainNibFile</key>
<string>MainWindow</string>

って部分を削除。nib ファイルを使わないということはすなわち xcode のインターフェースビルダーが使えないということだけどまぁしょうがない。

つぎ、プリコンパイルヘッダ (my_test_project_Prefix.pch) も僕はいらないので削除。また、project.pbxprojに

GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = my_test_project_Prefix.pch;

という部分がDebugとReleaseの二カ所あると思うのでそこを

GCC_PRECOMPILE_PREFIX_HEADER = NO;

に変更。

Classes ってディレクトリ名が気に入らないので、src に変更。xcode側では読み込み直す。

アイコンとかリソースファイル用には resources ってディレクトリを作っておく。

最後に toolchain 用の Makefile をおく。

この時点でファイル構成は

.
|____Info.plist
|____my_test_project.xcodeproj
| |____project.pbxproj
| |____typester.mode1v3
| |____typester.pbxuser
|____main.m
|____Makefile
|____resources
|____src
| |____my_test_projectAppDelegate.h
| |____my_test_projectAppDelegate.m

こんな感じ。

これでどっちでもビルドできるようなアプリを書くことが可能。

めんどくさいので自動化したい。

追記@2008-12-11

project.pbxproj を直いじりすると、その後 xcode から実機デバッグしようとするとUUIDがちげーよとかいう警告がでるようになるっぽい。(実際にデバッグは出来るのけど)

直いじりするかわりに xcode のプロジェクト設定で GCC_PRECOMPILE_PREFIX_HEADE とかを編集すれば大丈夫。

by typester / at 2008-12-10T18:25:00 / iphone / Comment

KillAppleをCydiaからインストールできるようにしてみた

この間作った KillApple という iPhone のメモリに残ったビルドインアプリケーションを殺すアプリケーションですが、いろんなところでデモするとなかなか好評で、使いたいとおっしゃってくださる方もいたので、Cydiaからインストールできるようにしてみました。

Cydia のソースに

http://apt.unknownplace.org/iphone/

を追加すると、検索に KillApple が引っかかるようになると思いますのでそのままそれをインストールすればOKです。

今後作ったほかのアプリもここで公開していこうかなと思っております。

by typester / at 2008-12-10T14:43:00 / iphone / Comment

build-inアプリケーションを殺すだけのアプリ

http://github.com/typester/killapple-iphone

作ってみた。絶対ありそうだけど。

起動すると

killall -KILL MobilePhone MobileSafari MobileMail MobileMusicPlayer

してすぐに終了するアプリです。

これらの組み込みアプリケーションは終了したつもりでもメモリに残るので、起動したままにすると全体が重くなります。

ホームボタン長押しすれば終了させられるのですがそれもめんどいので、いっぱつで皆殺しにできるものを作りました。

SpringBoard を殺すアプリは KillSB というのがあるんだけど、SpringBoard は再起動に時間がかかるので最後の手段にしておきたい。ほとんどの場合そこまでしなくてもこっちで十分なはず。

by typester / at 2008-10-08T22:06:00 / iphone / Comment

iPhone勝手アプリ用 Module::Setup フレーバー

by typester / at 2008-10-08T21:15:00 / iphone / Comment

iPhoneアプリをLinuxで作成するの法

iPhone Developer Program の申請が全然通らないので、勝手アプリの作成環境を整えてみた。

Cydia でおなじみの saurik 氏がクロスコンパイル環境の作り方を以下のページに書いてくれていて、基本これに従えばOK。

Upgrading the iPhone Toolchain - Jay Freeman (saurik)

すごいなー。saurik++

簡単に環境作れるようにスクリプトにまとめた。ヘッダのコピーのとことかちょっと追加してある。

http://gist.github.com/15487

簡単に説明。

iPhone のファームウェアのファイルを、ごにょごにょ(ググればすぐわかる)して展開して ~/tmp/iphone/iPhone2.1 にコピー。

iPhone SDKをダウンロードしてきて展開して MacOSX10.5.pkgiPhoneSDKHeadersAndLibs.pkg~/tmp/iphone/Developer に展開。

http://www.opensource.apple.com/darwinsource/Current/ から

  • CF-*
  • DiskArbitration-*
  • IOCDStorageFamily-*
  • IODVDStorageFamily-*
  • IOGraphics-*
  • IOHIDFamily-*
  • IOKitUser-*
  • IOStorageFamily-*
  • Libc-*
  • WebCore-*
  • cctools-*
  • configd-*
  • launchd-*
  • libsecurity_authorization-*
  • libsecurity_cdsa_client-*
  • libsecurity_cdsa_utilities-*
  • libsecurity_cms-*
  • libsecurity_codesigning-*
  • libsecurity_cssm-*
  • libsecurity_keychain-*
  • libsecurity_mds-*
  • libsecurity_ssl-*
  • libsecurity_utilities-*
  • libsecurityd-*
  • xnu-*

をダウンロードして ~/tmp/iphone/apple に展開。(*はバージョン番号)

で、あとは上のスクリプト実行すれば ~/app/toolchain にクロスコンパイル環境がインストールされる。YATTA!

ちなみに僕の Debian 環境ではこの作業をするために

flex bison gcc-multilib gobjc

などのパッケージを追加でインストールする必要があった。

これで iPhone 用のバイナリが作れるようになる。あとは ssh なり何なりで iPhone にファイルを転送すればOK。

ただ iPhone は署名済みなアプリケーションしか実行できないのでそこもまた saurik 氏の記事

Bypassing iPhone Code Signatures - Jay Freeman (saurik)

を参考にすれば回避できる。

by typester / at 2008-10-08T17:33:00 / iphone · linux / Comment

片手入力時のイライラ

片手で文字入力してると親指の付け根部分が画面に触れちゃう問題だけど、

iPhone 3G用シリコンジャケット(レッド) RT-P1C3/R
レイ・アウト (2008-07-11)
売り上げランキング: 12098

これ買ったら、親指部分が少し浮くせいか、付け根部分が画面に触れなくなって快適になった!

しかしこのカバー、摩擦係数が高いのでiPhoneをポケットに滑り込ませられなくなってちょっと不便。

by typester / at 2008-10-02T10:09:00 / iphone / Comment

« Prev 1 2

(Page 1 of 2)