아이폰 3GS 배터리 용량 : 1218mAh
아이폰 4 배터리 용량 : 1418mAh

아이폰을 분해한 후 배터리에 적혀 있는 정보를 바탕으로 계산한 것이라고 함..

출처 : http://purpleguy.blog.me/90096266387

iOS open project 이니 뭐니도 나온 상황이고, THEOS 가 훨씬 쓰기 편하다...

아래는 XCode4 나오면서 안되므로 무시하시길.
사실 저거 쓰면서 나도 뭐가 뭔지 몰라서 그냥 복,붙에 불과하다..ㅋㅋ



///////////////////////////////////////////////////////////////////////////////////////////////////

참고 싸이트

modmyi.com http://modmyi.com/forums/iphone-ipod-touch-sdk-development-discussion/728944-tutorial-how-compile-mobile-substrate-extension-xcode.html )

devbug.me http://devbug.me/606?category=2 )



1. XcodeSubstrate.zip 을 받는다. 주소 : http://cl.ly/9b3963d250f4673ccf51

(직접 헤더를 덤프하여 사용하려면 상단 modmyi 의 링크로 따라가서 Ok here we go 하위에 있는 XcodeSubstrateNoHeaders.zip 을 받는다)


그리고 압축풀고 나온 Mobile Substrate Extension 폴더는

/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Project Templates/Application

하위에 집어 넣는다.

템플릿이 4.0 기반이라 XCode에서 프로젝트 생성시 4.0으로 생성된다. 프로젝트 설정에서 바꿔주도록 하자.

버젼 문제는 아래에서 추가 설명


2. class-dump 를 이용하여 springboard 의 헤더파일을 가져온다.

class-dump-3.3.3.dmg (맥용) / apt-get install class-dump (아이폰)


맥-터미널 :

class-dump -H /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/System/Library/CoreServices/SpringBoard.app/SpringBoard -o ~/Desktop/SpringBoard/

(맥에서 파일,폴더를 드래그 하여 터미널 위로 드랍시킬 경우 커서가 위치한 곳에 파일/폴더의 경로를 뿌려준다.

또한 class-dump 를 설치하고 싶지 않은 사람은 디스크 마운트 상태에서 class-dump를 복사하지 않고 사용이 가능하다.

ex> /Volumes/class-dump-3.3.3/class-dump  -H ~~~

뭐 편한대로 사용하도록 하자.


아이폰-터미널 : class-dump -H /System/Library/CoreServices/SpringBoard.app/SpringBoard -o ~/SpringBoard/

(아이폰에서 ssh를 깔아놓고 맥에서 터미널로 접근해서 하는 것을 추천한다.

이 글에서는 컴퓨터에서 추출한 헤더 파일을 사용하므로 일단 방법만을 적어놨을 뿐이고 실제 진행시에는 컴퓨터에서 추출하도록 하자.)


폴더이름은 SpringBoard 그대로 하도록! 뒤에 가서 헷갈린다... 오류 날경우 폴더를 만들어 놓고 실행!

그리고 폴더 채로 /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.0.sdk/usr/include/

하위로 이동하도록 한다


또한 Springboard/SpringBoard.h 파일을 열어서

7번째 줄의
#import "UIApplication.h"

#import "UIKit/UIApplication.h"
로 수정,

54번째 줄의
struct _opaque_pthread_t {
    long _field1;
    struct __darwin_pthread_handler_rec *_field2;
    char _field3[596];
} *_backgroundMIGServerThread;

을 주석 처리 한다.

devbug님이 게시한 방법이며, 이외에도 해줄곳이 많다고 한다. 일단 여기까지-

아이폰에서 class-dump를 했을 경우 파일이 위와 같지 않다. 나도 이런면을 잘아는게 아니라

그냥 다른글을 옮길 뿐이니 그냥 가르쳐주는대로 하도록 하자..ㅠㅠ


3. 1에서 압축을 풀었던 폴더 내에 있는 substrate.h 파일을 2에서 이동한 ~~/include/ 하위로 옮긴다.

SpringBoard 하위로 옮기지 않도록 유의하자.

noheader 버젼을 받은 사람이라면 이 파일이 없을 것이다. 아이폰에서 /Library/Frameworks/CydiaSubstrate.framework/Headers/CydiaSubstrate.h

경로의 파일을 이름을 바꿔서 집어 놓도록 하자.


4. 압축을 푼 폴더 내에 혹은 아이폰 내부(/usr/lib/libsubstrate.dylib) 에 있는 libsubstrate.dylib

/Developer/Platforms/iPhoneOS.platform/Developer/usr/lib/ 로 이동한다


이후 Xcode에 가면 새 프로젝트 선택시 MobileSubstrate Extension 이 나타난다.


빌드 시 device모드로 놓고 build and run 이 아닌 그냥 build를 하도록 하자.

개발자 등록을 하지 않았거나 xcode에 code sign 작업을 해놓지 않았을 경우 에러가 뜨게 된다.


빌드 후 프로젝트 폴더 내의 Release-iphoneos / Debug-iphoneos 폴더 아래에 있는 .app 파일을 패키지 보기로 연후

프로젝트 이름의 확장자 없는 실행 화일만 빼내어 .dylib 확장자를 붙인다.

이후 아이폰의 /Library/MobileSubstrate/DynamicLibraries/ 경로에 집어넣고 리스프링 하면 확인할 수 있다.



아래는 modmyi 에서 알려주는 SDK가 4.0 이 아닐경우의 프로젝트 설정이다.

어차피 xcode가 영어니까 그냥 그대로 복사해 오도록 하겠다..

--------------------------

  1. In the menu bar, click Project > Edit Project Settings
  2. Click the "Build" tab at the top
  3. Drop down the Configuration box and change it to Debug
  4. Change the Base SDK to iPhone Device 4.0
  5. Drop down the Configuration box and change it to Release
  6. Change the Base SDK to iPhone Device 4.0
  7. Close the window
  8. Expand the Frameworks folder in the sidebar to reveal the red Foundation and UIKit frameworks, then delete them both
  9. Control-click the Frameworks folder > Add > Existing Frameworks...
  10. Choose Foundation and UIKit from the list
--------------------------
다른 SDK의 경우 특히 8~10 작업을 해주지 않을 경우 컴파일 오류가 날것이다..(아마..)
modmyi에서는 4.0 이 아닌곳에서 쓰는것을 주의하라고는 하지만.. 그냥 무시하자.. 그렇다고 4.1 / 4.2.1 용이 있는것도 아닌것 같다..






가장 좋은건 그냥 modmyi 가서 원문을 읽어보자.. devbug님이 소개한 class-dump 관련한 내용을 제하고는 모두 들어있다.


'개발개발 > Mac, iOS' 카테고리의 다른 글

BundleIdentifier로 앱 정보 구하기  (4) 2011.02.23
앱 설치 여부 구하기  (0) 2011.02.22
DEBIAN PACKAGING (deb) 만들기 (수정)  (1) 2011.01.30
PreferenceLoader 사용법  (0) 2011.01.30
cydia 앱, MobileSubstrate  (0) 2011.01.07

(자세하게 알지 못하는 내용이며 틀린부분이 존재할 수 있음)


아이폰(아이팟, 아이패드 통틀어서 그냥 이렇게 부르도록 하자..)의 앱은 앱스토어로 부터 다운 받을수 있고,

앱스토어가 유일하다.(공식적인 방법으로는)

하지만 이 앱스토어는 애플의 심사를 통해 올라오게 되며 애플의 심사 기준에 적합하지 않은 앱들은 올라올 수 없다.

예를 들면 시스템에 접근하는 앱과 같은 것들...


그러다보니 자연스레 비공식 앱스토어가 생겨났다..

초기, 아이폰 3G도 나오기전, 난 아이팟터치 1세대를 봤다(형이 가지고 있었으니까.)

처음에는 앱스토어는 계획만 있었지 아이팟에 들어있지 않았다. 따라서 사람들은 기본앱만 사용할수 있었지만

그 당시에는 (언제나 애플이 그렇듯이) 그것만 해도 상당히 대단한 것이였다!

하여간 한글 키보드의 부재 등의 문제도 있었기에 많은 사람들의 jailbreak, 즉 탈옥을 하였는데 이때의 탈옥은

지금의 탈옥과는 달리 매우 어렵고 아이팟이 벽돌이 되는 일이 잦았다. 우리 형이 몇시간동안 시도하다가 포기한것을 기억한다.


쩃든 탈옥한후 깔게되는 그 당시 유일한 앱마켓인 installer

지금의 cydia와는 다르게 그 당시에는 이 마켓이 거의 유일(내가 알기로는)하였으므로 시스템 변조앱 뿐만 아니라 게임, 유틸 등도 여기에 다 올라왔다.


시간은 흘러흘러 iOS4 까지 나오게 되었다.(사실 그 사이의 일은 잘 모른다...;;ㅎㅎ)


그동안 앱스토어는 상당히 발전하였지만 아이폰과 애플의 정책은 상당히 폐쇄적이여서 사용자의 모든 요구에 다 부흥하지는 못하였다. 

그래서 생긴 비공식 앱마켓 Cydia(시디아).

앱스토어에서 거부당한 여러 앱들을 이곳에서는 받을 수 있다.(단, 아이폰에 탈옥이 먼저 수행되어야 하긴 하지만..)

언제부터인가 cydia에서도 결제를 통해 앱을 받는 방법이 생겨났고 cydia도 하나의 큰 앱마켓이 되어가고 있는것 같다.


이러한 cydia는 이제는 탈옥을 할때 기본으로 깔리는 프로그램이다. 원래 icy, rock 등등 몇가지 앱장터가 더 있었으나 사라지거나, cydia와 통합이 되는것 같다..


기본 아이폰만으로는 만족하지 못하는 나로써는, 탈옥없이는 아이폰을 제대로 사용하지 못한다..^^

또한 탈옥을 할경우 보안성이 순정에 비해 많이 뒤져진다는 사람들도 있는데 이러한 기기에 대해 잘 아는 사람이면

순정과 다름없는 보안성은 물론이고 오히려 그보다 더 뛰어난 보안을 가지게 될거라고 믿어 의심치 않는다.





* 그냥 재미삼아 써본 시디아앱의 작명 센스~(?)

예전에는 테마 변경 프로그램이 summerboard, 지금은 winterboard 인데 이 이름이 어디서 온것인지 아는가..?

아이폰 기본 앱인 springboard 에서 spring 을 봄으로 해석하여 작명한 앱들이다!!ㅋㅋ

재미없으면..죄송...ㅎㅎ

+ Recent posts