(但し環境構築にはMacが必要になります)
今回試した環境:
・iPhone3GS 3.1.3
・MacBook Air(初代) SnowLeopard 10.6.4
・XCode 3.2.2
・iPhone SDK 3.2 final
・PwnageTool 4.01
手順:
(1) まずはiPhone3GS 3.1.3をPwnageToolもしくはそれに準じるものでJailbreakする。
この辺りの詳しいやり方はGoogleで探してください。
(2) JailbreakしたiPhone3GSのCydiaから以下のパッケージをインストール。
・MobileTerminal
・OpenSSH
・SBSettings (必須ではないが便利なので)
・APT関連
まずはMobileTerminalを入れて起動し、mobileアカウントとrootアカウントのパスワードを変更します。最近はiPhoneを狙ったウィルスが蔓延しはじめているので、注意しておく必要があります。パスワードの変更方法は「passwd」コマンドで。やり方が分からない場合はGoogleにて。
次にOpenSSHを入れsshdを有効にします。(インストールして再起動すれば有効になります。画面上部の時計の辺りをこすって出現するSBSettingsから簡単に有効・無効の切り替えができます)
(3) 次のリンクにあるシェルスクリプトhttp://rpetri.ch/toolchainをiPhone SDKのインストール場所に保存し、それをMac OSX上で実行します。
実行すると自動的にiPhone SDKの内容をiPhone実機にsshを経由してコピーし、更にiPhone上でスクリプトの続きを実行します。その際にiPhone上で必要なパッケージもaptを使用して自動的にインストールされます。
(4) iPhoneをMacに接続し、OpenGL ESの簡単なサンプルをビルドおよび実機で実行する。
一度はiPhone実機でOpenGLプログラムを実行できるようにしておく必要があります。実行が出来たら、そのプロジェクトをそのまま全てtarなりzipなりで圧縮し、iPhoneに転送します。
(5) iPhoneで先ほどのプロジェクトを解凍し、環境に合わせて以下のMakefileを手直ししてください。
#-----------------------------------------------------------------
# Makefile for gcc compiler for iPhone
PROJECTNAME=ogltest1
APPFOLDER=$(PROJECTNAME).app
INSTALLFOLDER=$(PROJECTNAME).app
SDK=/var/sdk
CC=arm-apple-darwin9-gcc
LD=$(CC)
LDFLAGS = -arch arm -lobjc
LDFLAGS += -framework CoreFoundation
LDFLAGS += -framework Foundation
LDFLAGS += -framework UIKit
LDFLAGS += -framework OpenGLES
LDFLAGS += -framework QuartzCore
LDFLAGS += -framework CoreGraphics
LDFLAGS += -framework GraphicsServices
LDFLAGS += -framework CoreSurface
LDFLAGS += -L"$(SDK)/usr/lib"
LDFLAGS += -F"$(SDK)/System/Library/Frameworks"
LDFLAGS += -F"$(SDK)/System/Library/PrivateFrameworks"
LDFLAGS += -bind_at_load
LDFLAGS += -multiply_defined suppress
CFLAGS = -I"$(SDK)/usr/include"
CFLAGS += -I"/usr/include"
CFLAGS += -F"$(SDK)/System/Library/Frameworks"
CFLAGS += -F"$(SDK)/System/Library/PrivateFrameworks"
#CFLAGS += -DDEBUG -O3 -Wall -std=c99 -funroll-loops
CFLAGS += -DDEBUG -Wall -std=c99
CFLAGS += -DMAC_OS_X_VERSION_MAX_ALLOWED=1050
BUILDDIR=./build/3.1.3
SRCDIR=./Classes
RESDIR=./Resources
OBJS=$(patsubst %.m,%.o,$(wildcard $(SRCDIR)/*.m))
OBJS+=$(patsubst %.c,%.o,$(wildcard $(SRCDIR)/*.c))
OBJS+=$(patsubst %.cpp,%.o,$(wildcard $(SRCDIR)/*.cpp))
RESOURCES=$(wildcard $(RESDIR)/*)
all: dist
$(PROJECTNAME): $(OBJS) $(LD) $(LDFLAGS) -o $@ $^
%.o: %.m $(CC) -c $(CFLAGS) $< -o $@
%.o: %.c $(CC) -c $(CFLAGS) $< -o $@
%.o: %.cpp $(CC) -c $(CPPFLAGS) $< -o $@
dist: $(PROJECTNAME)
/bin/rm -rf $(BUILDDIR)
/bin/mkdir -p $(BUILDDIR)/$(APPFOLDER)
/bin/cp $(RESDIR)/* $(BUILDDIR)/$(APPFOLDER)
/bin/cp Info.plist $(BUILDDIR)/$(APPFOLDER)/Info.plist
@echo "APPL????" > $(BUILDDIR)/$(APPFOLDER)/PkgInfo
/usr/bin/ldid -S $(PROJECTNAME)
/bin/cp $(PROJECTNAME) $(BUILDDIR)/$(APPFOLDER)
/bin/cp ogltest1 ~/Applications/XXXXXXXX-YYYY-ZZZZ-B2C7-C7D6C8AC127E/ogltest1.app/
/bin/cp Shaders/* ~/Applications/XXXXXXXX-YYYY-ZZZZ-B2C7-C7D6C8AC127E/ogltest1.app/
install: dist
#/bin/cp -r $(BUILDDIR)/$(APPFOLDER) /Applications/$(INSTALLFOLDER)
@echo "Application $(INSTALLFOLDER) installed"
killall SpringBoard
clean:
@rm -f $(SRCDIR)/*.o
@rm -rf $(BUILDDIR)
@rm -f $(PROJECTNAME)
#-----------------------------------------------------------------
MakefileなのでスペースをTABにする必要があるところは修正してください。
なお上記の「~/Applocations/XXXX.../ogltest1.app/」の部分がXCodeで作った際に出来たアプリケーションのディレクトリです。sshでログインし、この例でのプロジェクト名である「ogltest1」を「~/Applications」以下で検索(find)すれば見つかります。
これでiPhone上でソースを変更しmakeすれば、通常のホーム画面から実行ができます。
ちょっとしたプログラムでしたら、iPhoneのみで検証が出来ます。実際はエディタの関係でPCかMacが必要になりますが…。
※記憶を頼りに書いたので、不足している手順があるかも知れません。
<参考>
・http://blog.aaronash.com/?p=15
0 件のコメント:
コメントを投稿