iPhone directory 구성에서 /Application 에 프로그램들이 위치하고 있다는 것은 모두 알고 있는 사항입니다.
이 디렉토리에 어떻게 새로운 프로그램을 추가할 것인가? 그것에 대해 설명하도록 하겠습니다.
이 글에서 Launcher라고 언급한 부분은 일반적인 Program Launcher 개념이며, iPhone에서 Spring Board 라고 생각하시면 됩니다.
필요사항을 요약하면 다음과 같습니다.
- 적절한 디렉토리를 만든다. 예) TextReader.app
- 실행할 바이너리 및 기타 파일을 추가한다.
- Info.plist 를 작성하여 추가한다.
- icon.png를 추가한다.
- Default.png를 추가한다.
- 디렉토리를 포함하여 zip 파일을 만든후, Installer를 위한 설치 스크립트를 만듭니다.
디렉토리 만드는 것과 실행 바이너리 및 파일을 추가하는 것은 각 개발자가 알아서 하는 부분이니 언급하지 않겠습니다.
Info.plist 작성
이 파일은 iPhone Launcher가 프로그램에 대한 정보를 파악하기 위해 읽습니다.
다음은 TextReader의 Info.plist 파일 구성입니다. 이 부분은 기본적으로 다른 프로그램으로 복사하여 편집하여 사용하면되는데, 수정해야 할 부분은 다음과 같습니다.
CFBundleExecutable - 실행 파일 이름을 명시합니다.
CFBundleIdentifier - 다른 프로그램과 구분하기 위한 keyword입니다. 아주 중요합니다.
CFBundleName - Launcher가 화면에 출력할 때 사용되는 이름입니다.
CFBundleShortVersionString - version 정보입니다.
CFBundleVersion
"CFBundleIdentifier" 부분은 Launcher가 실제 프로그램을 식별하기 위한 keyword로 사용하는 부분입니다. 동일한 CFBundleIdentifier 를 가지는 프로그램은 동시에 실행될 수 없습니다. 그러니 개발자는 반드시 유니크한 이름을 사용하여 다른 프로그램과의 차별을 두어야 할 부분입니다.
<?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>TextReader</string>
<key>
CFBundleIdentifier</key>
<string>com.mizi.iphone.textreader</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>
CFBundleName</key>
<string>TextReader</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>
CFBundleShortVersionString</key>
<string>0.3.6</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>
CFBundleVersion</key>
<string>0.3</string>
</dict>
</plist>
icon.png 추가
Launcher가 프로그램을 화면에 표시할 때 사용할 icon입니다. 대부분 80x80 의 해상도를 가지는 아이콘을 많이 사용합니다.
Default.png 추가
iPhone은 초기 프로그램 실행시에 약간의 트릭을 사용하고 있습니다. 대부분의 사용자는 iPhone 응용 프로그램 실행시 늦게 실행된다는 느낌을 받지 못하지만, 실제로 프로그램 실행시 약 2초의 시간이 걸립니다.
iPhone은 프로그램 실행시, 프로그램 화면을 작은 화면에서 큰 화면으로 확대하는 효과를 사용하여 사용자로 하여금 지루함을 느끼지 못하도록 하고 있습니다.
Default.png는 이때 사용하는 이미지입니다. 프로그램 실행시 나타나는 화면 확대 효과는 사실 진짜 프로그램을 이용하는 것이 아닌, Default.png 를 사용하여 확대 효과를 창출하는 것입니다.
그러므로, Default.png를 잘 만들어야 사용자는 어색함을 느낄 수 없습니다.
몇몇 iPhone 예제에서는 프로그램 종료시 마지막 화면을 Default.png로 저장하는 것도 있습니다.
Installer script 작성
Installer script 작성은 옵션입니다. 이것은 없어도 그만입니다.
제가 관리하고 있는 Installer script는 다음과 같습니다.
http://touch-programs.googlecode.com/files/mizi.xml 추후 이부분을 수정토록 하겠습니다.
Respring
새롭게 추가된 프로그램 패키지는 respring 이라는 단계를 거쳐야 launcher에 표시됩니다. SysInfo 프로그램을 실행하면 첫 화면에 respring 버튼이 있습니다. 이것을 가볍게 눌러 주시면 됩니다.
이 작업은 Spring Board를 죽였다가 다시 실행시키는 것입니다.