2008년 3월 25일 화요일

iPhone이 나를 못살게 하네...

취미로 재미로 iPhone 혹은 iPod Touch 용 어플리케이션을 개발하고 있지만, 현업에서는 이놈만큼 나를 괴롭히는 놈이 없다.
모두가 iPhone을 원한다. 그러나 아무나 할 수가 없다.
사실 애플이 대단하긴 하다. 대부분의 사람이 기대하는 것보다 최소한 2년 이상은 앞서간 UI를 탑재한 제품을 개발하였으니.

하드웨어를 직접 설계하고, 소프트웨어를 디자인한다. 여기까지는 많은 회사에서 한다. 그러나, 그 아이디어가 참신하고, 전사적으로 밀어 붙인다. 지금까지 스티브 잡스만이 이룩한 일이다.

지금도 많은 곳의 개발자들이 iPhone 수준의 UI를 개발하려고 노력하고 있다.

iPhone 때문에 고통받고 있는 개발자들이여 힘을 냅시다. 아자아자...

2008년 3월 12일 수요일

비공식 iPhone SDK에 관한 착한 문서

iPhone 개발을 위한 비공식 SDK에 대한 착한 문서가 있어 소개합니다.

http://lucasnewman.com/phonedev.pdf

iPhone 이미지를 decrypt 하는 방법도 자세히 나와있으니 참조하기 바랍니다.

Aspen

Aspen은 iPhone 1.2 OS에 대한 code name 이라고 합니다. 결국 발표된 SDK는 iPhone firmware 1.2 개발을 위한 플랫폼입니다.

이로 인해 library link 오류가 발생하는 것 같군요. firmware 1.1.4를 위한 패키지가 SDK에 추가되어야 정상적인 ipod touch 개발이 가능할 것으로 판단됩니다.

이제 xcode를 분석하여 SDK 항목에 "iPhone 1.1.4" 가 나타날 수 있도록 해야 할 것입니다.
이 작업을 누가 해줄까? 내가 해야 하나? 1.2가 나올때 까지 기다리나?

iPhone SDK 가이드

xcode 3.1을 실행하여 기본 응용 프로그램 테스트를 진행해보았다. 결론은 ipod touch에서 프로그램 실행이 되지 않았다. library 특성이 뭔가 다른것 같다. iphone에서는 잘 되려나? 어쨌든 처음 xcode를 접하는 사용자를 위해 간단한 가이드를 작성한다.

xcode 실행 프로그램은 /Developer/Applications 에서 Xcode 를 실행시키면 된다.

상단의 메뉴의 "File -> New Project"를 선택하고, "Cocoa Touch Application"을 선택한 다음 프로젝트 이름을 넣는다.

그냥 단순히 "Build and Go" 버튼을 선택하여 컴파일 하고, 실행 시켜본다. 화면에 에뮬레이터가 동작하며 프로그램이 실행된다.


그런데, 이 환경에서 컴파일된 바이너리는 i386 바이너리로 단말과는 전혀 상관이 없는 바이너리다. 즉, 에뮬레이터 환경이 무늬만 iphone인 것이다. 자, 이제 emulator에서 작성을 마쳤으면, ipod touch 용 실행 파일을 만들어 보자.

메뉴에서 "Project -> Set Active SDK"를 선택하면 다음과 같은데, Device - Aspen 1.2를 선택하여 compile 하도록 한다.

최종 iphone 용 바이너리는 build/Debug-aspen/Hello.app 혹은 build/Release-aspen/Hello.app 에 있으니, Hello.app를 그대로 iphone의 /Applications 에 복사한 다음 스프링 보드를 다시 실행시키면 된다.

현재는 다음과 갈은 오류로 인해 실행되지 않는다. 이 문제의 해결이 가능한지 여부를 조사할 예정이다.

# ./HelloWorld
dyld: Symbol not found: _OBJC_CLASS_$_NSAutoreleasePool
Referenced from: /Applications/HelloWorld.app/./HelloWorld
Expected in: /System/Library/Frameworks/Foundation.framework/Foundation


2008년 3월 11일 화요일

ziphone 2.5c로 ipod touch jailbreak 하기

말도 많고, 탈도 많은 ziphone이다. 개발자가 touch를 받으면 수정하겠다고 하지만, 그게 벌써 얼마인가...

그동안 인터넷에서 jailbreak 버튼을 여러번 누르는 방법으로 해킹하는 동영상이 공개되었지만, 대다수의 많은 사람들이 어려움을 겪고 있다. 나도 마찬가지였다. 어제까지는...

오늘 우연히 ziphone을 가지고 놀다가 jailbreak에 성공하였다. 그래서, 어떤 과정을 거쳐 성공하였는지 세심하게 테스트를 진행하였다. 거의 10여번의 테스트를 진행하여 그 결과를 정리하고자 한다.

거의 90%의 확율로 jailbreak 할 수 있다. 사실 100%라고 해도 무방하다. 이 방법은 현재까지는 Windows 버전에서만 가능하다. MAC에서도 시도를 해보았으나, 성공하지 못했다.

그 순서는 다음과 같다.
  1. iTunes를 실행시킨다.
  2. iTunes에서 ipod touch를 eject 한다. (ipod touch와의 연결은 종료하지만, iTunes는 종료되면 안된다.)
  3. ziphone으로 jailbreak 한다. 잠시후 BSD 어쩌구 에러가 발생한다.
  4. ziphone의 jailbreak를 약 3번 정도 눌러 준다. (ziphone을 종료하면 안된다.)
  5. 전원 버튼과 home 버튼을 동시에 눌러 touch의 전원을 끈다.
  6. 전원 버튼과 home 버튼을 동시에 눌러 전원을 켜고 (15 초 정도 누르고 있어야 켜진다.), 계속 누르고 있으면, 복구 모드로 진입한다.
  7. ziphone에서 다시 자동으로 jailbreak 한다. 이때의 jailbreak는 정상적으로 동작한다. 아까 전에 3번 눌러준 jailbreak가 여기서 동작하는 것이다. 그러니, 아무 동작이 필요치 않다. 그냥 기다리면 된다.
  8. 이상의 과정에서도 jailbreak가 안된다면, 완전히 복구후 다시 시도한다.
일단 이 과정까지가 가장 확실한 방법이다. 최소한 10여번 이상은 테스트 해서 정상동작함을 확인하였다.

spamming at waiting 으로 잘 안되는 경우가 있음을 확인하였다. 모두 5대의 ipod touch(모두 16G)를 테스트했는데, 그중에 한대에서 이 문제가 발생하였는데, 해결이 안된다.

2008년 3월 7일 금요일

iPhone SDK Review

iPhone SDK가 발표되었다.

여러번의 시도 끝에 간신히 무려 2.1G의 SDK를 다운로드 받았으며, 개발 테스트를 해봐야겠지만, 직장에 있는 관계로 그 작업은 주말로...

간단히 살펴보면 다음과 같다.

  • Intel Mac 용으로만 발표되었다. (Windows는 아마 영원히 지원하지 않을 것 같다.)
  • gcc, xcode, emulator 로 구성되어 있으며, 2.1G나 된다.
  • Emulator는 iPhone 용 바이너리를 직접 실행시킬 수 있다.
  • xcode의 설정에 따라 iPhone에 직접 설치도 가능하다.
  • 간단히 API를 살펴본 결과 기본 흐름은 공개되기전 프로그램 방식과 동일하지만, 개발 편의를 위한 다양한 Object-C object가 제공된다.
  • 화면 구성을 위한 GUI 툴이 xcode에 포함되어 있어, Drag&Drop 만으로 개발을 할 수 있다.
개인적으로는 emualtor가 아주 반갑다. 이전까지 디버깅 작업이 아주 힘들었는데...
그리고, 상세한 API 문서도 좋다. 이제 부족한 기능을 간단히 개발할 수 있을 것 같다.
주말 동안 textreader를 포팅하고, sokoban의 미구현 기능을 구현해 보아야 겠다.

그동안 SDK에 대한 유료화 문제로 여기 저기에서 문제가 많았지만, 원래 애플은 gcc를 기본 compiler로 사용하기 때문에 SDK를 무조건 공개를 해야하는 입장이다.

이것은 앞으로도 마찬가지다. 다만, 개발된 프로그램에 대한 배포 방법을 제한할 것으로 보이는데, 이것은 어쩔 수 없을 듯....

보다 자세한 사항은 주말을 보내고 다시 포스팅 한다.

몇몇 유용한 문서들에 대한 링크는 다음과 같다.

iPhone Dev Center
Creating an iPhone Application