Pythonをはじめてみた.
*Pythonのインストール
GAEはPython2.5なので,それに合わせてPython2.5をインストールすることにする.
python-2.5.4.msi をDLして実行.
*pywin32のインストール
windows特有機能をpythonから簡単にいじるライブラリ.
あると便利なので入れておく.
pywin32-212.win32-py2.5.exe をDLして実行.
*easy-installのインストール
簡単にライブラリをインストールできるツール.
何かと便利なので入れておく.
C:\Python25\Scripts にPathを通しておく.(set Path=%Path%;C:\Python25\Scripts)
*easy-installの使い方
#Pathが通っているなら
コマンドラインで
easy-install パッケージ名
でパッケージのインストールが出来る
*使ってみる
スタートメニュー>IDLE>で対話型インタプリタを起動できる.
sourceファイルを作成しなくても1行ずつ実行できる.
「>>>」って言うのがソレね.
*Hello World
>>> print "Hello World"
Hello World
*コメント
「#」以降
>>> print "hoge" #hoge
hoge
*モジュールのインポート(import)
sysっていうモジュールをインポートする
>>>import sys
sysっていうモジュールからpathっていう変数をインポートする.
import sysの場合はsys.pathとしてアクセスしていたがpathだけでアクセスできるのも注目.
>>>from sys import path
>>>print path
['C:\\Python25\\Lib\\idlelib', 'C:\\Windows\\system32\\python25.zip', 'C:\\Python25\\DLLs', 'C:\\Python25\\lib', 'C:\\Python25\\lib\\plat-win', 'C:\\Python25\\lib\\lib-tk', 'C:\\Python25', 'C:\\Python25\\lib\\site-packages', 'C:\\Python25\\lib\\site-packages\\win32', 'C:\\Python25\\lib\\site-packages\\win32\\lib', 'C:\\Python25\\lib\\site-packages\\Pythonwin']
*リスト
配列っぽいの.
[]で囲まれて,コンマ(,)で区切ったもの.
>>>array = ['foo','bar','buzz']
>>>print array
['foo', 'bar', 'buzz']
range(x)っていう関数は指定された数までのリストを返す.
>>>print range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
*ループ
for 変数 in リスト:
#処理
という風に書く.forを実行するブロックはインデント必須.
>>> for i in range(10):
print i
0
1
2
3
4
5
6
7
8
9
*dict
ハッシュっぽいの.
名前:値のペアをコンマ(,)で並べて{}で囲ったもの.
>>>hash = {'foo':'bar','fizz':'buzz'}
>>> print hash
{'foo': 'bar', 'fizz': 'buzz'}
>>> print hash['foo']
bar
>>> hash[1] = 100
>>> print hash
{1: 100, 'foo': 'bar', 'fizz': 'buzz'}
*locals()
ローカルスコープで参照できるオブジェクトを列挙.
dictで帰ってくる.
>>>print locals()
{'hash': {1: 100, 'foo': 'bar', 'fizz': 'buzz'}, '__builtins__': <module '__builtin__' (built-in)>, 'sys': <module 'sys' (built-in)>, 'i': 9, 'path': ['C:\\Python25\\Lib\\idlelib', 'C:\\Windows\\system32\\python25.zip', 'C:\\Python25\\DLLs', 'C:\\Python25\\lib', 'C:\\Python25\\lib\\plat-win', 'C:\\Python25\\lib\\lib-tk', 'C:\\Python25', 'C:\\Python25\\lib\\site-packages', 'C:\\Python25\\lib\\site-packages\\win32', 'C:\\Python25\\lib\\site-packages\\win32\\lib', 'C:\\Python25\\lib\\site-packages\\Pythonwin'], '__name__': '__main__', 'array': ['foo', 'bar', 'buzz'], 'os': <module 'os' from 'C:\Python25\lib\os.pyc'>, '__doc__': None}
*dir()
名前の列挙.
リストで帰ってくる.
>>> print dir()
['__builtins__', '__doc__', '__name__', 'array', 'hash', 'i', 'os', 'path', 'sys']
*タプル
コンマ(,)で並べられて()で囲まれたもの.
>>> tup = ("foo","bar","fizz")
>>> print tup
('foo', 'bar', 'fizz')
タプルは分解することもできる.
>>> one,two,three = tup
>>> print "one=%s,two=%s,three=%s"%(one,two,three)
one=foo,two=bar,three=fizz
>>> print "one=%s,two=%s,three=%s"%tup
one=foo,two=bar,three=fizz
1つの要素の場合は最後にコンマが必要.
>>> tup = ("hoge",)
>>> print tup
('hoge',)
*条件分岐(if文)
else if じゃなくてelsifでもなくてelifなのに注意
if 条件:
#処理
elif 条件:
#処理
else 条件:
#処理
真偽値はTrueとFalse.
条件は真偽値を and や or で複数の条件の組み合わせを書ける.
>>> if 1+1 == 2 and 1+2 == 2:
print "hoge"
elif 1+1 == 2 or 1+2 == 2:
print "fuga"
else:
print "foo" fuga
*関数
def 関数名(引数):
#処理
>>> def Hoge(param):
print "Hoge(%s)"%param
>>> Hoge("PARAMATER")
Hoge(PARAMATER)
*クラス
class クラス名:
def 関数名1:
#処理
def 関数名2:
#処理
と定義すれば,クラス名.関数名1という風に使える.
*参照
ドキュメントがすごく豊富なので
を眺めてれば大体分かる.
*次回
とりあえず,コレぐらいの文法が出来ればあとはライブラリ使って何かしら作れるのでGoogle App Engineを使って何か作るところへ.
次回はとりあえず今出来てるセットアップと簡単なアプリぐらいのとこまで書こう.
iPhoneアプリをWindows上で開発してみる
[参考文献]
[iPhoneFirmware]
iPod1,1_2.2.1_5H11_Restore.ipsw
[FWの暗号化の解除]
の記述より,
2.2.1(5H11)のFirmwareのdmgの暗号化を解く暗号鍵以下
EE4EEEB62240C1378C739696DFF9FEF2C88834E98877F55A29C147E7D5B137967197392A
[環境整備]
*cygwin
intall from internet
Root Directory: C:\cygwin
Install for: all users
default text file: Unix/Binary
LocalPackageDirectory: anywhere
Select Your Internet Connections: Direct
devel以下パッケージを追加選択@autoconf(stableの方),binutils, bison, flex,gcc-core, gcc-g++, make
Net以下パッケージを追加選択@openssh
追記:toolchainを落とすのにwget, FWの解凍用にunzip,設定の書き換えにeditor(うちはemacsを選択)を入れておく
*mintty(optional)
terminalソフト.
mintty.exeをC:\Cygwin\binに入れて,create_shortcut.jsを実行する.
*Ecripse(optional)
EasyEcripseを使うと楽.
Distribution C/C++のを選ぶ.
*PowerISOのインストール(dmgファイルの展開)
からDLしてインストール.
再起動.
*iPhone/iPod touch側の設定
jailbreakする
OpenSSHを入れる
Link Identity Editorを入れる(ldid)
[toolchain]
cd ~
tar xvzf iphone-2.0-toolchain.tgz
[Firmwareから必要なファイルの抜き出し]
*Firmwareの解凍
$ mv /cygdrive/c/tmp/iPod1,1_2.2.1_5H11_Restore.ipsw ./
$ mkdir iPod1,1_2.2.1_5H11_Restore
$ mv iPod1,1_2.2.1_5H11_Restore.ipsw iPod1,1_2.2.1_5H11_Restore/iPod1,1_2.2.1_5H11_Restore.zip
$ unzip iPod1,1_2.2.1_5H11_Restore.zip
Archive: iPod1,1_2.2.1_5H11_Restore.zip
creating: .fseventsd/
inflating: .fseventsd/000000000a42726d
inflating: .fseventsd/fseventsd-uuid
inflating: 018-4437-16.dmg
inflating: 018-4443-16.dmg
inflating: 018-4490-10.dmg
creating: Firmware/
creating: Firmware/all_flash/
creating: Firmware/all_flash/all_flash.n45ap.production/
inflating: Firmware/all_flash/all_flash.n45ap.production/applelogo.s5l8900x.img3
inflating: Firmware/all_flash/all_flash.n45ap.production/batterylow0.s5l8900x.img3
inflating: Firmware/all_flash/all_flash.n45ap.production/batterylow1.s5l8900x.img3
inflating: Firmware/all_flash/all_flash.n45ap.production/DeviceTree.n45ap.img3
inflating: Firmware/all_flash/all_flash.n45ap.production/glyphcharging.s5l8900x.img3
inflating: Firmware/all_flash/all_flash.n45ap.production/glyphplugin.s5l8900x.img3
inflating: Firmware/all_flash/all_flash.n45ap.production/iBoot.n45ap.RELEASE.img3
inflating: Firmware/all_flash/all_flash.n45ap.production/LLB.n45ap.RELEASE.img3
inflating: Firmware/all_flash/all_flash.n45ap.production/manifest
inflating: Firmware/all_flash/all_flash.n45ap.production/needservice.s5l8900x.img3
inflating: Firmware/all_flash/all_flash.n45ap.production/recoverymode.s5l8900x.img3
creating: Firmware/dfu/
inflating: Firmware/dfu/iBEC.n45ap.RELEASE.dfu
inflating: Firmware/dfu/iBSS.n45ap.RELEASE.dfu
inflating: Firmware/dfu/WTF.n45ap.RELEASE.dfu
inflating: Firmware/dfu/WTF.s5l8900xall.RELEASE.dfu
inflating: kernelcache.release.s5l8900x
inflating: Restore.plist
$ cd iphone-2.0-toolchain
$ ./vfdecrypt.exe -i ~/iPod1,1_2.2.1_5H11_Restore/018-4490-10.dmg -o ~/decrypted .dmg -k EE4EEEB62240C1378C739696DFF9FEF2C88834E98877F55A29C147E7D5B137967197392A
keyDerivationAlgorithm 0
keyDerivationPRNGAlgorithm 0
keyDerivationIterationCount 0
keyDerivationSaltSize 0
keyDerivationSalt
blobEncryptionIVSize 0
blobEncryptionIV
blobEncryptionKeySizeInBits 0
blobEncryptionAlgorithm 0
blobEncryptionPadding 0
blobEncryptionMode 0
encryptedBlobSize 0
encryptedBlob
展開されたdecrypted.dmgをPowerISOで展開.
user/libを~/iphone-2.0-toolchain/iphone-fs/usr/にコピー
System/Library/FrameworksとPrivateFrameworksを~/iphone-2.0-toolchain/iphone-fs/System/Libraryにコピー
[make-toolchainの編集]
$ cd ~
$ cd iphone-2.0-toolchain
$ cp make-toolchain make-toolchain.bak
$ emacs make-toolchain
$ diff make-toolchain make-toolchain.bak
19,24c19,24
< #case "${OSTYPE}" in
< #*win32*)
< #*cygwin*)
< # export SUDO='echo "";'
< # ;;
< #esac
---
> case "${OSTYPE}" in
> *win32*)
> *cygwin*)
> export SUDO='echo "";'
> ;;
> esac
31,33c31,33
< rm -rf "${sysroot}"
< mkdir -p "${sysroot}"
< chmod o+w "${sysroot}"
---
> $SUDO rm -rf "${sysroot}"
> $SUDO mkdir -p "${sysroot}"
> $SUDO chmod o+w "${sysroot}"
45,86d44
< ln -sf ../../System/Library/Frameworks/IOKit.framework/Versions/A/IOKit libIOKit.A.dylib
< ln -sf libIOKit.A.dylib libIOKit.dylib
< ln -sf libSystem.B.dylib libSystem.dylib
< ln -sf ../../System/Library/PrivateFrameworks/Accelerate.framework/Frameworks/vecLib.framework/libBLAS.dylib libblas.dylib
< ln -sf libbz2.1.0.4.dylib libbz2.1.0.dylib
< ln -sf libbz2.1.0.4.dylib libbz2.dylib
< ln -sf libSystem.dylib libc.dylib
< ln -sf ../../System/Library/PrivateFrameworks/Accelerate.framework/Frameworks/vecLib.framework/libBLAS.dylib libcblas.dylib
< ln -sf libcharset.1.dylib libcharset.1.0.0.dylib
< ln -sf libcharset.1.dylib libcharset.dylib
< ln -sf ../../System/Library/PrivateFrameworks/Accelerate.framework/Frameworks/vecLib.framework/libLAPACK.dylib libclapack.dylib
< ln -sf libncurses.5.dylib libcurses.dylib
< ln -sf libSystem.dylib libdbm.dylib
< ln -sf libSystem.dylib libdl.dylib
< ln -sf libedit.2.dylib libedit.2.9.dylib
< ln -sf libedit.2.dylib libedit.dylib
< ln -sf libexslt.0.dylib libexslt.dylib
< ln -sf libform.5.4.dylib libform.dylib
< ln -sf libiconv.2.dylib libiconv.2.4.0.dylib
< ln -sf libiconv.2.4.0.dylib libiconv.dylib
< ln -sf libicucore.A.dylib libicucore.dylib
< ln -sf libSystem.dylib libinfo.dylib
< ln -sf libipsec.A.dylib libipsec.dylib
< ln -sf ../../System/Library/PrivateFrameworks/Accelerate.framework/Frameworks/vecLib.framework/libLAPACK.dylib liblapack.dylib
< ln -sf libSystem.dylib libm.dylib
< ln -sf libncurses.5.dylib libncurses.dylib
< ln -sf libobjc.A.dylib libobjc.dylib
< ln -sf libSystem.dylib libpoll.dylib
< ln -sf libSystem.dylib libproc.dylib
< ln -sf libSystem.dylib libpthread.dylib
< ln -sf libresolv.9.dylib libresolv.dylib
< ln -sf libSystem.dylib librpcsvc.dylib
< ln -sf libsqlite3.0.dylib libsqlite3.0.8.6.dylib
< ln -sf libsqlite3.0.dylib libsqlite3.dylib
< ln -sf libstdc++.6.0.4.dylib libstdc++.6.dylib
< ln -sf libtidy.A.dylib libtidy.dylib
< ln -sf libutil1.0.dylib libutil.dylib
< ln -sf libxml2.2.dylib libxml2.dylib
< ln -sf libxslt.1.dylib libxslt.dylib
< ln -sf libz.1.2.3.dylib libz.1.dylib
< ln -sf libz.1.2.3.dylib libz.dylib
< ln -sf libz.1.dylib libz.1.1.3.dylib
101c59
< chmod -R o-w "${sysroot}"
---
> $SUDO chmod -R o-w "${sysroot}"
120c78
< make install
---
> $SUDO make install
141c99
< make install
---
> $SUDO make install
[make-toolchain]
$ ./make-toolchain
[building console application]
Ecripseを立ち上げる
File>New>Project
General>Projectを選び,Next
Project Name: HelloiPhone
Use default locationのチェックをはずす.
Location: C:\Cygwin\home\[username]\HelloiPhone
でプロジェクトを作成する.
Makefile
HelloiPhone.c
を作成する.
*Makefile
CC=/usr/local/bin/arm-apple-darwin9-gcc
CXX=/usr/local/bin/arm-apple-darwin9-g++
LD=$(CC)
all: HelloiPhone
HelloiPhone: HelloiPhone.o
$(LD) $(LDFLAGS) -o $@ $^
%.o: %.c
$(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@
clean:
rm *.o HelloiPhone
*HelloiPhone.c
#include <stdio.h>
int main(void) {
printf("Hello, iPhone!\n");
return 0;
}
*build
$ cd ~/HelloiPhone
$ make
*iPhoneへ転送
iPhoneのSSH機能をOnにしておく
WLANでBuildマシンから見えるところへ接続しておく
iPhoneのIPを調べておく.
$ export IPHONE_IP=iPhoneのIP
$ scp HelloiPhone root@${IPHONE_IP}:~/
password: alpine
*バイナリファイルへ署名をつけ,実行
iPhoneにSSH接続し,ldidを実行し,署名をつける.
$ ssh root@${IPHONE_IP}
password: alpine
localhost:~ root# ldid -S HelloiPhone
localhost:~ root# ./HelloiPhone
Hello, iPhone!
[building cocoa touch application]
*create HelloiPhoneApp.h
#import <UIKit/UIKit.h>
@interface HelloiPhoneApp : UIApplication
{
UIView *contentView;
UIWindow *window;
UINavigationBar *nav;
UITextView *text;
}
@end
*create HelloiPhoneApp.m
#import "HelloiPhoneApp.h"
@implementation HelloiPhoneApp
- (void)applicationDidFinishLaunching:(UIApplication *)application
{
window = [[UIWindow alloc] initWithContentRect:
[UIHardware fullScreenApplicationContentRect] ];
contentView = [[UIView alloc] initWithFrame: CGRectMake(0.0f, 0.0f, 320.0f, 480.0f)];
nav = [[UINavigationBar alloc] initWithFrame: CGRectMake(0.0f, 0.0f, 320.0f, 48.0f)];
[nav pushNavigationItem:[[UINavigationItem alloc] initWithTitle:@"HelloWorld"]];
[nav showButtonsWithLeftTitle: @"Left" rightTitle: @"Right" leftBack: YES];
[nav setBarStyle: 0];
[contentView addSubview: nav];
text = [[UITextView alloc] initWithFrame: CGRectMake(0.0f, 48.0f, 320.0f, 480.0f)];
[text setText: [[NSString alloc]
initWithString: @"Hello World\nCocoa Touch Application"]];
[contentView addSubview: text];
window.contentView = contentView;
[window orderFront: self];
[window makeKey: self];
[window _setHidden: NO];
}
- (void)dealloc
{
[text release];
[nav release];
[contentView release];
[window release];
[super dealloc];
}
@end
*create HelloiPhone.m
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import "HelloiPhoneApp.h"
int main(int argc, char *argv[])
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
UIApplicationMain(argc, argv, @"HelloiPhoneApp", @"HelloiPhoneApp");
[pool release];
return 0;
}
*create Info.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>HelloiPhone</string>
<key>CFBundleIdentifier</key>
<string>com.pochi.helloiphone</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>0.1</string>
<key>CFBundleName</key>
<string>HelloiPhone</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.0</string>
</dict>
</plist>
*edit Makefile
リンカのフラグにGUI関連のframeworkなどを指定する.
CC=/usr/local/bin/arm-apple-darwin9-gcc
CXX=/usr/local/bin/arm-apple-darwin9-g++
LD=$(CC)
CFLAGS= -I/usr/local/lib/gcc/arm-apple-darwin9/4.2.1/include \
-isysroot /usr/local/iphone-sysroot
LDFLAGS=-framework CoreFoundation \
-framework Foundation \
-framework UIKit \
-lobjc \
-bind_at_load \
-isysroot /usr/local/iphone-sysroot
all: HelloiPhone.app
HelloiPhone.app: HelloiPhone Info.plist
mkdir -p HelloiPhone.app
cp Info.plist HelloiPhone Default.png icon.png HelloiPhone.app/
HelloiPhone: HelloiPhone.o HelloiPhoneApp.o
$(LD) $(LDFLAGS) -o $@ $^
%.o: %.m
$(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@
clean:
rm -rf *.o HelloiPhone HelloiPhone.app
*build application
$ cd ~/HelloiPhone
$ make
/usr/local/bin/arm-apple-darwin9-gcc -c -I/usr/local/lib/gcc/arm-apple-darwin9/4.2.1/include -isysroot /usr/local/iphone-sysroot HelloiPhone.m -o HelloiPhone.o
/usr/local/bin/arm-apple-darwin9-gcc -c -I/usr/local/lib/gcc/arm-apple-darwin9/4.2.1/include -isysroot /usr/local/iphone-sysroot HelloiPhoneApp.m -o HelloiPhoneApp.o
/usr/local/bin/arm-apple-darwin9-gcc -framework CoreFoundation -framework Foundation -framework UIKit -lobjc -bind_at_load -isysroot /usr/local/iphone-sysroot -o HelloiPhone HelloiPhone.o HelloiPhoneApp.o
/usr/local/bin/arm-apple-darwin9-ld: warning multiple definitions of symbol _NSStreamDataWrittenToMemoryStreamKey
/usr/local/iphone-sysroot/System/Library/Frameworks/Foundation.framework/Foundation(single module) definition of _NSStreamDataWrittenToMemoryStreamKey
/usr/local/iphone-sysroot/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation(single module) definition of _NSStreamDataWrittenToMemoryStreamKey
/usr/local/bin/arm-apple-darwin9-ld: warning multiple definitions of symbol _NSStreamFileCurrentOffsetKey
/usr/local/iphone-sysroot/System/Library/Frameworks/Foundation.framework/Foundation(single module) definition of _NSStreamFileCurrentOffsetKey
/usr/local/iphone-sysroot/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation(single module) definition of _NSStreamFileCurrentOffsetKey
/usr/local/bin/arm-apple-darwin9-ld: warning multiple definitions of symbol _NSStreamSOCKSProxyConfigurationKey
/usr/local/iphone-sysroot/System/Library/Frameworks/Foundation.framework/Foundation(single module) definition of _NSStreamSOCKSProxyConfigurationKey
/usr/local/iphone-sysroot/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation(single module) definition of _NSStreamSOCKSProxyConfigurationKey
/usr/local/bin/arm-apple-darwin9-ld: warning multiple definitions of symbol _NSStreamSOCKSProxyHostKey
/usr/local/iphone-sysroot/System/Library/Frameworks/Foundation.framework/Foundation(single module) definition of _NSStreamSOCKSProxyHostKey
/usr/local/iphone-sysroot/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation(single module) definition of _NSStreamSOCKSProxyHostKey
/usr/local/bin/arm-apple-darwin9-ld: warning multiple definitions of symbol _NSStreamSOCKSProxyPasswordKey
/usr/local/iphone-sysroot/System/Library/Frameworks/Foundation.framework/Foundation(single module) definition of _NSStreamSOCKSProxyPasswordKey
/usr/local/iphone-sysroot/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation(single module) definition of _NSStreamSOCKSProxyPasswordKey
/usr/local/bin/arm-apple-darwin9-ld: warning multiple definitions of symbol _NSStreamSOCKSProxyPortKey
/usr/local/iphone-sysroot/System/Library/Frameworks/Foundation.framework/Foundation(single module) definition of _NSStreamSOCKSProxyPortKey
/usr/local/iphone-sysroot/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation(single module) definition of _NSStreamSOCKSProxyPortKey
/usr/local/bin/arm-apple-darwin9-ld: warning multiple definitions of symbol _NSStreamSOCKSProxyUserKey
/usr/local/iphone-sysroot/System/Library/Frameworks/Foundation.framework/Foundation(single module) definition of _NSStreamSOCKSProxyUserKey
/usr/local/iphone-sysroot/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation(single module) definition of _NSStreamSOCKSProxyUserKey
/usr/local/bin/arm-apple-darwin9-ld: warning multiple definitions of symbol _NSStreamSOCKSProxyVersion4
/usr/local/iphone-sysroot/System/Library/Frameworks/Foundation.framework/Foundation(single module) definition of _NSStreamSOCKSProxyVersion4
/usr/local/iphone-sysroot/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation(single module) definition of _NSStreamSOCKSProxyVersion4
/usr/local/bin/arm-apple-darwin9-ld: warning multiple definitions of symbol _NSStreamSOCKSProxyVersion5
/usr/local/iphone-sysroot/System/Library/Frameworks/Foundation.framework/Foundation(single module) definition of _NSStreamSOCKSProxyVersion5
/usr/local/iphone-sysroot/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation(single module) definition of _NSStreamSOCKSProxyVersion5
/usr/local/bin/arm-apple-darwin9-ld: warning multiple definitions of symbol _NSStreamSOCKSProxyVersionKey
/usr/local/iphone-sysroot/System/Library/Frameworks/Foundation.framework/Foundation(single module) definition of _NSStreamSOCKSProxyVersionKey
/usr/local/iphone-sysroot/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation(single module) definition of _NSStreamSOCKSProxyVersionKey
/usr/local/bin/arm-apple-darwin9-ld: warning multiple definitions of symbol _NSStreamSocketSecurityLevelKey
/usr/local/iphone-sysroot/System/Library/Frameworks/Foundation.framework/Foundation(single module) definition of _NSStreamSocketSecurityLevelKey
/usr/local/iphone-sysroot/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation(single module) definition of _NSStreamSocketSecurityLevelKey
/usr/local/bin/arm-apple-darwin9-ld: warning multiple definitions of symbol _NSStreamSocketSecurityLevelNegotiatedSSL
/usr/local/iphone-sysroot/System/Library/Frameworks/Foundation.framework/Foundation(single module) definition of _NSStreamSocketSecurityLevelNegotiatedSSL
/usr/local/iphone-sysroot/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation(single module) definition of _NSStreamSocketSecurityLevelNegotiatedSSL
/usr/local/bin/arm-apple-darwin9-ld: warning multiple definitions of symbol _NSStreamSocketSecurityLevelNone
/usr/local/iphone-sysroot/System/Library/Frameworks/Foundation.framework/Foundation(single module) definition of _NSStreamSocketSecurityLevelNone
/usr/local/iphone-sysroot/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation(single module) definition of _NSStreamSocketSecurityLevelNone
/usr/local/bin/arm-apple-darwin9-ld: warning multiple definitions of symbol _NSStreamSocketSecurityLevelSSLv2
/usr/local/iphone-sysroot/System/Library/Frameworks/Foundation.framework/Foundation(single module) definition of _NSStreamSocketSecurityLevelSSLv2
/usr/local/iphone-sysroot/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation(single module) definition of _NSStreamSocketSecurityLevelSSLv2
/usr/local/bin/arm-apple-darwin9-ld: warning multiple definitions of symbol _NSStreamSocketSecurityLevelSSLv3
/usr/local/iphone-sysroot/System/Library/Frameworks/Foundation.framework/Foundation(single module) definition of _NSStreamSocketSecurityLevelSSLv3
/usr/local/iphone-sysroot/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation(single module) definition of _NSStreamSocketSecurityLevelSSLv3
/usr/local/bin/arm-apple-darwin9-ld: warning multiple definitions of symbol _NSStreamSocketSecurityLevelTLSv1
/usr/local/iphone-sysroot/System/Library/Frameworks/Foundation.framework/Foundation(single module) definition of _NSStreamSocketSecurityLevelTLSv1
/usr/local/iphone-sysroot/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation(single module) definition of _NSStreamSocketSecurityLevelTLSv1
/usr/local/bin/arm-apple-darwin9-ld: warning multiple definitions of symbol ___crashreporter_info__
/usr/local/iphone-sysroot/System/Library/Frameworks/Foundation.framework/Foundation(single module) definition of ___crashreporter_info__
/usr/local/iphone-sysroot/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation(single module) definition of ___crashreporter_info__
mkdir -p HelloiPhone.app
cp Info.plist HelloiPhone Default.png icon.png HelloiPhone.app/
*転送と署名
$ scp -r HelloiPhone.app root@${IPHONE_IP}:/Applications/
password: alpine
Default.png 100% 108 0.1KB/s 00:00
HelloiPhone 100% 14KB 14.0KB/s 00:00
icon.png 100% 2399 2.3KB/s 00:00
Info.plist 100% 772 0.8KB/s 00:00
$ ssh root@${IPHONE_IP}
password: alpine
localhost:~ root# ldid -S /Applications/HelloiPhone.app/HelloiPhone
*respringすると,アイコンがdashboardに現れてるので,クリックして実行
[GUI Applicationルール]
sourcefileは*.m(Objective-Cのルール)
アプリケーションの配置は以下のようになる.
hoge.app(directory)
hoge.app/Info.plist
-アプリ名とか,実行ファイルを示すxmlファイル
hoge.app/Default.png
-ロード中に表示させる絵
hoge.app/icon.png
-ダッシュボードに表示されるアイコン
hoge.app/hoge
-実行ファイル
[Foundation]
Foundation is where strings, lists, and base object-oriented hierarchies are defined in Cocoa and Cocoa Touch.
FoundationはCocoaとCocoaタッチ向けにstringとかlistとかオブジェクト指向のヒエラルキーが定義されてるやつ.
[UIKit]
UIKit defines quite a lot of the UI elements in an iPhone application.
UIKitはすごく多くのiPhone向けUIパーツを定義してるやつ.
[スリープタイマーを切る方法]
[UIApplication sharedApplication].idleTimerDisabled = YES;
[iconがでない,loading画面が出ない]
Default.png, icon.png のpermissionが正しく設定されていない可能性がある.
$ chmod o+r *.png
を実行.
また,それぞれcase-sensitiveらしい.
[makefileの復習]
$@: ターゲットファイル名
$<:最初の必須項目のファイル名
$^:すべての必須項目を重複を除いてスペースで区切ったリスト