이글은 패키징을 직접 다 만들어서 하는 방법이다...
THEOS 를 이용해서 컴파일할 경우 makefile 약간 수정해서 걍 바로 한방에 패키징까지 하도록 하자;;;;; - 이거 설명은 나중에 하겠음!

이번 글은 데비안 패키지.
이건 다행이도 외국인의 친절한 유투브 동영상이 있었다..ㅎㅎ
하지만 맥에 dpkg를 설치하는데 좀 헤맨듯..

우선 MacPorts 를 설치해야 한다. 자세히는 모르겠지만
iPhone 의 apt-get 과 비슷한 역활을 하는듯.

다운을 받았으면 터미널을 실행하고

sudo port install dpkg

port 도 좋지만 homebrew 가 더 좋은듯.
이경우엔 sudo brew install dpkg

를 실행한다. 시간이 좀 걸림..(패스워드는 로그인한 계정의 비밀번호)

그다음 폴더를 하나 만들고 (폴더명은 크게 상관 없다.)
하위에 DEBIAN 폴더를 생성하고, 그안에 control 이라는 UTF-8 형식의 확장자 없는 파일을 만든다.(텍스트 편집기로 만들면 됨.)
내용은 아래와 같이...
[saurik 블로그에서 관련된 내용을 발견해서 조금 수정하겠음..ㅋ 원문은 : http://www.saurik.com/id/7 ]

Package: MyProgram
Version: 1.0
Architecture: iphoneos-arm
Depends: mobilesubstrate, preferenceloader
Replaces: MyProgram
Conflicts: MyProgram
Section: System
Maintainer: iolate <iolate@me.com>
Description: Lanch Banking app for jailbroken phone

Package 는 앱스토어앱들의 identifier 개념이다. 대문자로 적어도 모두 소문자로 인식.. 즉 대소문자 구분하지 않는다.
apt-get 등으로 받을때 사용되는 이름이기도 하다. 고로 고유해야 겠지?
 
Name 항목을 생성하고 넣을경우 시디아에선 이 Name 값이 나온다. 단, 사용자 필드이므로 빌드시 옵션을 넣어줘야 한다.
version 은 말그대로 버젼... 숫자,".","-" 까지 허용되는 것 같다..
Architecture 은 무시해도 되고 Depends는 의존성. 의존성에 있는 버젼 or 앱이 없으면 설치되지 않는다. 시디아에서의 경우 시디아가 자동으로 설치해줄것이다..(소스 내에 있으면.)
Replace는 이앱을 대치한다..Conflicts 는 아마 여기에 적힌 앱을 지우고 설치될 것이다..
Section은 음... 앱 만들정도 되면 다알겠지.. 그 밑으로도 알아서 이해하시길..귀찮;;ㅋㅋㅋㅋ


그리고 control 과 같은 경로에 특정 스크립트들을 넣어둘 수가 있다.
postinst 는 설치 후 작업.
preinst 는 설치 전 작업.
prerm 은 삭제 전,
postrm 은 삭제 후 실행되는 스크립트 파일 명이다.

권한 설정 등은 postinst 로 하면 되고 purge, remove, install 등 어떻게 실행 된 건지 체크 할 수도 있다.
이부분은 openssh 를 뜯어보시길..ㅋㅋ

그외에 다른 스크립트도 있는지는 모르겠음.


DS_Store_Cleaner_1.5.0.tar.gz

또한 맥에선 캐쉬 등을 위해 이것저것 잡 파일들을 많이 만든다..
그중 하나가  DS_Store 란 파일.. 위의 첨부파일로 삭제해주도록 하자.
저게 아마 Snow Leopard 에서만 작동할 수도 있는데 그러면 홈페이지 찾아가서 새 버젼 받으면 된다.ㅋ

이 프로그램으로 파일 내의 DS_Store 파일을 제거해 준뒤
터미널을 열어서

패키징을 원하는 폴더의 상위 폴더로 이동해서
dpkg -b 폴더이름
를 해주면 된다. tab키로 자동 완성 시킬 경우 젤 뒤에 / 가 생기는데 이럴경우 어디론가 사라지고 없으므로 꼭 지워주도록 하자.

이렇게 하면 폴더와 같은 위치에 deb파일이 생성된다! iFile등으로 설치하고 리스프링 하면 완료!!!


참고로 로컬에서 DEB를 설치해도 기록이 남기에 시디아에서도 Change에 리스트가 뜬다.


+ dpkg의 결과물에 ._ 로 시작하는 파일이 포함될수 있다. 나의 경우 DS_Store 는 지웠는데 남아있더라. deVbug님의 블로그에 보면 이에 대한 해결책을 알려준다. (http://devbug.me/618)

근데 나한텐 안되더라..ㅠㅠ
나의 경우엔 bash_profile 에

export COPYFILE_DISABLE=true
export COPY_EXTENDED_ATTRIBUTES_DISABLE=true

를 추가해서 해결봤다!

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

BundleIdentifier로 앱 정보 구하기  (4) 2011.02.23
앱 설치 여부 구하기  (0) 2011.02.22
PreferenceLoader 사용법  (0) 2011.01.30
MobileSubstrate Extension with XCode  (0) 2011.01.07
cydia 앱, MobileSubstrate  (0) 2011.01.07


PreferenceLoader.

간혹 앱스토어 앱 중에 설정 앱 안에 해당 앱의 설정이 생기는 것을 봤을 것이다.

앱스토어 앱 중에 설정 앱 안에 해당 앱의 설정이 생기는 것을 봤을 것이다.

앱스토어 앱 중에 설정 안에 앱의 설정이 생기는 것을 봤을 것이다.
PreferenceLoader(이하 PL) 는 Cydia 의 앱, 트윅들이 이와 마찬가지로 설정 앱 안에 설정을 만드는 것을 도와준다.
간단한 plist 방식부터 원하는 대로 만들기 위한 bundle 형태까지 지원한다.
PL 자체는 설정 앱을 후킹해서 설정앱이 plist 파일을 읽어들이게 할 뿐이니 만약 호환성 문제가 생긴다면 그건 PL 문제가 아니니 문제가 있다면 버젼마다 테스트를 해보자.

우선 plist 로만 이루어진 설정이든, bundle 이 따로 있든 
/Library/PreferenceLoader/Preferences/ 에 관련 파일이 있어야 한다. 하위 폴더를 생성해도 상관 없다.

일단 이 글에서는 간단한 plist 만을 이용한 설정 제작을 소개할 예정이다.

우선 가장 유용했던 URL을 소개한다. 그나마 제일 자세히 설명된 페이지. 당연히 영문!


모든 포맷(아마도) 이 설명된 곳은 여기 밖에 못본듯..


또 다른 주소를 찾았다. 어떤 앱의 설정 파일인데 예시로 들어져 있는 것을 보니 상당히 많은 종류가 있는 것 같다.


맥이며 XCode3 가 설치되어 있다면 Property List Editor 가 설치되어 있으니 이것 기준으로 설명하겠다.
XCode4 에서는 XCode 자체에 Property List 편집기가 포함되어 있으니 알아서 사용.


대강 기초 틀은 이렇다. (Type에 유의하자.)

(밑에서 설명하려 했는데 밑으로 내려가니 그림이 안보이네. items 하위 항목에 대한 설명은 펼치기!)



우선 루트 하위에 title, entry, items 값이 있게 되는데 이중 title, entry 부분 부터 봐주시길..



entry부분이 모두 여기에 보이게 된다. 여기서는 아이콘을 내가 넣지 않았으니 안뜨는데, 아이콘에는 경로를 써주면 된다. 다른 경로라도 상관없고 plist 와 같은 폴더에 있다면 그냥 이름만 써주면 된다.
cell값은 건드릴것 없고 label은 바꿔주면 된다.



root/title 에 있는 값이 여기에 들어 오게 된다.


items 하위 설명은 위에 첫번째 그림 밑에 펼치기를 누르도록.

잘 모르겠으면 예시파일을 하나 만들어서 아이폰에 넣어서 테스트 해보자.
리스프링이 필요없으며 그냥 설정앱을 다시 열어주면 된다.





items 설명하면서도 말하였지만, 값의 저장경로는
/var/mobile/Library/Preferences/ 하위에  defaults에 지정한 이름으로 저장이 된다.
보통 앱 id와 같게 한다.


이제 중요한 것은 앱에서 설정을 불러오는 방법!


방식은 여러가지가 될 수 있다.
위의 소스는 예전에 내가 그냥 SwitcherMod 소스에서 퍼온것이고, 나의 경우 필요에 따라 만들어진 전처리 매크로를 통해 간편히 사용하고 있다..ㅎ
예를 들면 아래와 같이...



설정이 바뀌었을때 노티를 받는 방법도 있다.

설명하긴 귀찮으니   https://github.com/rpetrich/SwitcherMod 보고 참고 하도록 하자....

Bundle 로 만들어서 값을 바꿀때에는 notify_post 등으로 직접 노티를 쏴주면 크게 차이없이 동일하게 사용가능 하다.

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

BundleIdentifier로 앱 정보 구하기  (4) 2011.02.23
앱 설치 여부 구하기  (0) 2011.02.22
DEBIAN PACKAGING (deb) 만들기 (수정)  (1) 2011.01.30
MobileSubstrate Extension with XCode  (0) 2011.01.07
cydia 앱, MobileSubstrate  (0) 2011.01.07
형이 군대가기 전부터 우리가 필요로 했던 아이폰 외장 배터리..

이때까지는 iBob+ 양쪽 휴대폰 잭으로 바꾼 케이블 + 쓰던 핸드폰 배터리 조합으로 외장배터리를 사용했었는데
용량이 너무 적었다.ㅠㅠ

마침 거의 새 제품이 좀 저렴하게 올라왔길래 바로 구입!
태양열을 이용한 외장배터리..(물론 케이블로도 충전가능)


구성품으로는 파우치(라고 하나..?), SC700U 본체, 충전 케이블, 젠더 3가지(24핀, 30핀(아이팟/폰),뭔진 모르겠지만 내 블루투스 헤드셋에 쓰이는 듯한 잭)..


(태양열로 충전중에는 위에 저렇게 불이 들어온다)


태양열로 충전을 하려면 풀충전은 거의 20시간이나 해야된다고는 하지만...
애초에 태양열로 충전할 일 없고 아이폰 2번이상 완충(용량은 거의 3배 가까이지만 손실율이 있기에..)에 급처인지 저렴한 가격이면서도 깨끗한 본체!

아직 한번도 사용해보지 않았지만 마음에 든다!ㅎㅎ

단점이라면 조금 큰 크기와(아이폰3Gs 보다 크다) 예쁘지 못한 디자인. 그리고 쓸일없는 플래쉬라이트 기능..(아니, 언젠간 쓸일 있으려나..?)


아 요즘 돈 없어 죽겠는데 자꾸 뭘 질러;;;ㅋ

+ Recent posts