タグ「タッチスクリーン」が付けられているエントリー

Hello iPod touch World

| Hello iPod touch World

開発環境の準備が整ったので,自作アプリを作ってみた.もちろん,基本中の基本であるHello Worldのナシアリだ.

$ wget http://ellkro.jot.com/WikiHome/HelloWorldSrc-0_30.zip
$ unzip HelloWorldSrc-0_30.zip
$ cd HelloWorld
$ make
$ mkdir Hello.app
$ cp Info.plist Hello Hello.app

[iPod touch] iPhone/iPod touch用のHelloWorldをmakeする - airy-fairy

問題なくmakeできた.後は,Hello.appをWinSCPなどでiPod touchのApplicationsにコピーして,パーミッションを適当な777辺りにすればいいんだと思います.オレはFileZillaを使っているけどね.細かいことを気にしてはいけない.もちろん,SpringBoardの再起動をお忘れ無く.

snap_152621.png

Helloってある.アイコンの作り方を学ばねば.

snap_152419.png

動いた!これで,touchlibが動かせなくても,なんとかなる!っていうか,そもそもはiPod touchで開発をしようと思って,Macが必要だってことに絶望して,その代替としてtouchlibを採用したのに,動かせなくて,結局iPod touchを使ってる,オレ.かわいそうです.

大苦戦.なかなかゴニョゴニョだから,上手くいかないぜ.以下,備忘録.

何はなくとも,条件反射でapt.

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install subversion csh
$ sudo apt-get install libc6-dev flex m4
$ sudo apt-get install bison pax gcc g++ patch
$ sudo apt-get install unzip libssl-dev

[iPod touch] Linux(Debian etch)環境でiPhone/iPod touch用の開発環境を整える - airy-fairy

ADC Member SiteからXcode2.4.1をいただいて,以下を実行.

$ dd if=xcode_2.4.1_8m1910_6936315.dmg skip=323904 | gunzip | pax -r

[iPod touch] Linux(Debian etch)環境でiPhone/iPod touch用の開発環境を整える - airy-fairy

ここから,指示通りにやっても上手くいかない.適宜修正.

$ wget http://どこかしら/iPhone1,1_1.0_1A543a_Restore.ipsw
$ unzip iPhone1,1_1.0_1A543a_Restore.ipsw
$ wget http://daeken.pastebin.ca/raw/603179 -O vfdecrypt.c
$ gcc -o vfdecrypt vfdecrypt.c -lcrypto
$ ./vfdecrypt 694-5262-39.dmg decrypted.dmg -k 秘密の文字列

[iPod touch] Linux(Debian etch)環境でiPhone/iPod touch用の開発環境を整える - airy-fairy

「どこかしら」はappleのどこかです.載せてもいいと思うんだけど,URLが長くてはみ出すから,割愛.一応,Google先生に依頼.「秘密の文字列」は重要.引用先のサイトには書いていないが,これがないとdecryptできない.これも長くてはみ出すから,割愛.ゴニョゴニョする.ここまではetchでもできた.

$ wget http://vu1tur.eu.org/tools/download.pl?dmg2img.tar.gz -O dmg2img.tar.gz
$ tar xvzf dmg2img.tar.gz
$ pushd dmg2img
$ make
$ popd
$ ./dmg2img/dmg2img -i decrypted.dmg -o iphone_rootfs.img
$ sudo mkdir /mnt/iphonefs
$ sudo mount -t hfsplus iphone_rootfs.img /mnt/iphonefs

[iPod touch] Linux(Debian etch)環境でiPhone/iPod touch用の開発環境を整える - airy-fairy

これがダメ.etchだと「セグメンテーション違反です」と怒られる.もちろん,mountできない.調べてみると,Ubuntuでの成功例(こことかここ)が見あたるので,見捨てたUbuntuに環境を準備して,やってみたところ,確かにセグメンテーション違反が発生するものの,無視できそうなので,etchに持ってきてmountしてみた.まぁ,マウントも上手くいかないから,オプションを付けるわけだが.

$ sudo mount -t hfsplus -o loop iphone_rootfs.img /mnt/iphonefs
$ sudo mkdir /usr/local/share/iphone-filesystem
$ sudo cp -R /mnt/iphonefs/* /usr/local/share/iphone-filesystem

いい感じだ.続いて,LLVMをsvnから取り出そうとするも,学内FWに阻まれてsvnできないので,proxyの設定をする.設定ファイルは~/.subversion/serversらしいぜ.

http-proxy-host = proxy.example.com
http-proxy-port = 8080
http-proxy-username = tora
http-proxy-password = プロキシ認証のパスワード

Subversion - PukiWiki

たぶん,[global]の中に書いた方がいいと思う.きっと.以下,LLVMを取得して順番にやっていくわけだが,躓かなかったので,打ち込んだコマンドだけ.

$ svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm-svn -r 42498
$ pushd llvm-svn
$ ./configure --enable-optimized
$ make ENABLE_OPTIMIZED=1
$ sudo make install
$ export LLVMOBJDIR=`pwd`
$ popd
$ svn checkout http://iphone-dev.googlecode.com/svn/trunk/ iphone-dev
$ pushd iphone-dev
$ sudo mkdir /usr/local/arm-apple-darwin
$ mkdir -p build/odcctools
$ pushd build/odcctools
$ ../../odcctools/configure --target=arm-apple-darwin --disable-ld64
$ make
$ sudo make install
$ popd
$ export HEAVENLY=/usr/local/share/iphone-filesystem
$ pushd include
$ ./configure --with-macosx-sdk=/Developer/SDKs/MacOSX10.4u.sdk
$ sudo bash install-headers.sh
$ popd
$ mkdir -p build/csu
$ pushd build/csu
$ ../../csu/configure --host=arm-apple-darwin
$ sudo make install
$ popd
$ mkdir -p build/llvm-gcc-4.0-iphone
$ pushd build/llvm-gcc-4.0-iphone
$ ../../llvm-gcc-4.0-iphone/configure \
--enable-llvm=`llvm-config --obj-root` \
--enable-languages=c,c++,objc,obj-c++ \
--target=arm-apple-darwin \
--enable-sjlj-exceptions \
--with-heavenly=$HEAVENLY \
--with-as=/usr/local/bin/arm-apple-darwin-as \
--with-ld=/usr/local/bin/arm-apple-darwin-ld
$ make LLVM_VERSION_INFO=2.0-svn-iphone-dev-0.3-svn
$ sudo make install
$ popd
$ popd

[iPod touch] Linux(Debian etch)環境でiPhone/iPod touch用の開発環境を整える - airy-fairy

svnとmakeはえらい待たされます.のんびり行こう.Hello World!編に続く.

ちなみに,Windows環境下のcygwinでどうにかする方法も見つけた.試していないけど.

関連:
Building - iphone-dev - Google Code
Creating native iPhone apps by Lucas Newman(注※リンク先はpdf)

ハッキリ言って,Touchlib公式の説明は分からない.CMUPlatformSDKDirectX SDKも説明が一切無い.DirectX SDKはJPEG2000関連でインストールしておいたし,PlatformSDKは経験上気が付いたから良いものの,CMUはビルド時のエラーで環境変数がないというところから,逆引きして判明したくらい.どこにも書いていない!分かるわけがない!

というわけで,四苦八苦して動かせたのは,同じトラブルにはまった人が,ブログ上で情報を公開してくれていたから.ブログはこういうためにあるんだと思う.思ったこと,やったことを思いつくままに書いておけばいいんだと思う.必要なものは必要とされるし,不要なら淘汰される.適当に書いておいても,グーグル先生が適当に整理してくれる.それがウェブを媒介とした新しい情報配信と共有だ.単純なプッシュしかできない旧来のメディアには出来ない芸当であろう.以下,手順を転載.本当にありがとう.

Miscallenous Libraries
OpenCV (download OpenCV_1.0.exe)
DSVideoLib (download dsvideolib-0.0.8c)
VideoWrapper (download VideoWrapper_0_1_1.zip)
GLUT (download glut-3.7.6-bin.zip)
OSCpack (download oscpack_1_0_2.zip)
CMU 1394 Digital Camera Driver (download 1394camera644.exe)
Windows Server 2003 R2 SDK (aka Platform SDK) Web Install, Full download or ISO
DirectX SDK (download August 2007)

Setting environment variables:
Depending on your setup you might need to change a few directory location values.

  1. Press the right mouse button on “My Computer” and choose: Properties > Advanced > Environmental Variables
  2. To add an entry, click “new” at the System Variables.
  3. Add the OpenCV root directory:
    name: “OPENCV_HOME”
    value: “C:\Program Files\OpenCV”
  4. Add the DSVideoLib:
    name: “DSVL_HOME”
    value: “C:\_libraries\dsvl-0.0.8c”
  5. Add the VideoWrapper
    name: “VIDEOWRAPPER_HOME”
    value: “C:\_libraries\VideoWrapper_0_1_1″
  6. Add the OSCpack
    name: “OSCPACK_HOME”
    value: “C:\_libraries\oscpack_1_0_2\oscpack”
  7. Add the CMU driver location
    name: “CMU_PATH”
    value: “C:\Program Files\CMU\1394Camera”

Visual studio settings:
We are almost done with setting up the enviroment, there are just a few steps left before we can compile Touchlib.

  1. Open up “solution.sln” in the “C:\multitouch\touchlib\build\VC8″ directory.
  2. Choose Tools > Options
  3. On the left choose Project and Solutions > VC++ Directories
  4. On the right change “Show directories for:” to “Include files”
  5. Add the directory “C:\_libraries\glut-3.7.6-bin”
  6. Add the directory “C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include”
  7. Add the directory “C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Samples\Multimedia\DirectShow\BaseClasses”
  8. Add the directory “C:\Program Files\Microsoft DirectX SDK (August 2007)\Include”
  9. Change “Show directories for:” to “Library files”
  10. Add the directory “C:\_libraries\glut-3.7.6-bin”
  11. Add the directory “C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Lib”
  12. Add the directory “C:\Program Files\Microsoft DirectX SDK (August 2007)\Lib\x86″
  13. Click OK
  14. In the menu choose Build > Build Touchlib
  15. When it has compiled Touchlib, Build > Build solution
  16. The End

Touchlib compiling instructions | Multigesture.net

本当に,トラブルはみんなで共有するべき.

単なる愚痴.朝から午後の早い時間まで,ずーっとVisual Studio 2005 Proと睨めっこしてた.今日,オレを苦しめたのはARToolKitTouchlib

ARToolKitは2年前にVC6で動かしているから,事もなく行くと思ったら,いかないでやがんの.OpenVRML関係が上手くビルドできない.メチャメチャ苦労した挙句に,結局諦めて,デモソフトのメタセコイヤのやつを動かそうと思ったら,こっちもビルドが通らない.おかしいなぁ・・・.これは普通にできたはずなんだが・・・.VC6とVS2005でこんなにも違うとはorz.一応,目標のところまでは動かせて,「これじゃダメだ」ってことが確認できたのでok.

続いて,Touchlibのビルドを行うも,こっちは散々な出来.サッパリダメだ.結局,何一つビルドできなかった.2時間も投資したのに><.デモソフトは動かせたが,キャリブレーションの仕方が分からない.何かの手順を間違えているんだと思うが,如何せんドキュメントが少なくて,何をどうして良いのやら・・・.smokeくらいはキャリブレーションなしの勘で動いて欲しい・・・.精度なんて求めないのに.それっぽく動いてくれるだけで良いのに・・・.

よくわからんのだが,どっちもVS2003.NETなら上手く動くらしい.でも,今更2003は入れたくないので,入れるならVC6だろう.VC6マンセー!ちなみに,VS2008はまだ使ったことがない.MSDN AAに無いんだけど・・・.要求すると出てくるのかな?

結論:
Macを買って,Objective-Cを使えばいいんだと思う.マジで.

携帯とは少し違う、iPhone 3G の新しい日本語入力方式(動画) - iPhone・iPod touch ラボ

やっぱり,新しいUIが出てくると,それに伴った新しい使い方が出てくるわけだ.これは従来の単なるテンキーではできなかった入力方法.うん.

世界がタッチスクリーンだらけになっていく : Gizmodo Japan(ギズモード・ジャパン), ガジェット情報満載ブログ

うんそうや.今,ひっそり進行中の研究がそれをテーマにしてる.そのために,iPod touchを買ったんだから.新しいUIが普及し始める時って,研究的にはオモロ~!ですね.

プロフィール

e-m@il @ddress