2008년 2월 3일 일요일

iPhone HOME Directory

iphone 1.1.3 버전이 나오면서, SpringBoard의 권한이 mobile로 변경되었다.
때문에, 기존에 /var/root/가 HOME 디렉토리였지만, 이제는 /var/mobile/ 이 HOME 디렉토리가 되었다.

기존의 iphone 응용 프로그램의 대다수가 HOME 디렉토리에 대한 path가 하드코딩되어 있어, 프로그램에 직접 "/var/root/"를 사용하고 있어, 새 버전에서 호환성 문제가 발생하고 있다. 텍스트 리더도 마찬가지고...

이러한 호환성 문제를 해결하려면, 계정 정보에 따라 HOME 디렉토리를 변경하는 것이 좋은데, 일반적인 Unix 환경에서는 환경변수 $HOME 을 통해 디렉토리를 확인할 수 있지만, 확인결과 iPhone은 이 환경 변수를 기본으로 설정하고 있지 않다. (SSH로 접속하는 경우에는 설정된다. 그러나, 실제 실행환경에서는 설정되어 있지 않다.)

$HOME 말고 또, HOME 디렉토리를 표기하는 방법으로는 "~/" 가 있다. 여기서 "~" 문자가 HOME 디렉토리를 의미한다.
iPhone 에서 이 "~" 문자를 사용하면 계정에 따른 HOME 디렉토리를 정확히 설정할 수 있다. 그러나, 그냥 사용하면 안된다. 다음과 같이 사용하면 사용이 가능하다.

NSString *homeDir = [@"~/Media/TXT" stringByExpandingTildeInPath];

이렇게 사용하는 경우 1.1.2 환경에서는 "/var/root/Media/TXT" 가 되고, 1.1.3 환경에서는 "/var/mobile/Media/TXT"가 된다.

댓글 4개:

익명 :

안녕하세요.
이제 막 아이팟 터치 어플 개발을 시작하는 Nacle 입니다.
궁금한게 있어서 코멘트 남깁니다.
Toolchain 까지 설치했고 helloworld까지 컴파일 마쳤습니다.
터치에서 동작하는 것도 확인했고요.
여기서 궁금한 점이 Installer에서 어플 다운 받는 것 처럼 hello.app 폴더 형태로는 어떻게 make 하는지 궁금합니다.
putty로 접속하지 않고 터치에서 바로 실행 할 수 있도록 컴파일 하는 방법이 알고 싶습니다.
검색 능력이 떨어지는 탓에 염치 불구하고 질문 남김니다.
ps. TextReader 아주 잘쓰고 있습니다 ^^

하린아빠 :

요청하신 사항은 따로 정리하여 올리도록 하겠습니다.

익명 :

감사합니다.
게시글 보고 감동했습니다.
복받으실 거예요 ^^

하린아빠 :

도움이 되었다니 다행입니다. 열심히 개발하셔서 좋은 프로그램 만드시기 바랍니다.