본문 바로가기

프로그래밍/Tizen

[Tizen] 패키징 및 signing

빌드할때 콘솔을 보니 sbi 란 녀석이 패키징과 사이닝을 담당하고 있다. 패키지 정보와 사이닝 정보를 제공하면 .tpk 폴더에 설치할 파일들을 복사하고, 사이닝을 진행한다. 


해당 명령은 아래와 같다. 리눅스와의 차이는 sbi.exe , sbi 인듯 하고, action과 -ARCH 정보만 달라진다. 이미 컴파일도 끝나고 바이너리가 나와있으므로 정보제공 외에는 큰 의미는 없는 듯 싶다.


/tizen-sdk/tools/smart-build-interface/bin/sbi

action tizen-emulator-2.2.native_llvm31.i386.cpp.app -- buildpackage

-BUILD_DIR="/프로젝트/Debug"

-ARCH=i386

-PKG_TYPE=TPK

-PKG_NAME=org.tizen.pkg-name

-PRJ_NAME=project-name

-ARTIFACT_NAME=project-name

-PKG_VER=1.0.0

-SIGN_CERT_DIR="/tizen-sdk/tools/certificate-generator/certificates/developer/tizen-developer-ca.cer"

-SIGN_AUTHOR_KEY=".../keystore/author-key.p12"

-SIGN_AUTHOR_PWD="author-pwd"

-SIGN_DIST1_KEY="/tizen-sdk/tools/certificate-generator/certificates/distributor/tizen-distributor-signer.p12"

-SIGN_DIST1_PWD="dist-pwd"

-SIGN_DIST1_CA="......./certificates/distributor/tizen-distributor-ca.cer"

-SIGN_DIST2_KEY=""

-SIGN_DIST2_PWD=""

-SIGN_DIST2_CA=""

-SIGN_DIST2_ROOT=""



파일 목록을 위한 임시폴더

그리고 리소스와 각종 라이브러리 manifest파일등을 임시 폴더에 복사한다. 위의 경우 임시폴더는 아래와 같고, 해당 폴더에 프로젝트의 파일들이 복사된다.


/프로젝트/Debug/.tpk/

manifest.xml

bin/

res/

lib/

data/

shared/res/

shared/data/

shared/trusted/


사이닝

/tizen-sdk/tools/ide/bin/native-signing

native-signing ".tpk" 

"...../tizen-developer-ca.cer"

"...../author-key.p12"

"author-pwd"

"...../distributor-signer.p12"

"distributor-pwd"

"..../distributor-ca.cer"

""

"pwd???"

""


압축

zip -rv "패키지명.tpk"



요렇게 하면 설치될 tpk 파일이 만들어 진다. 이후 단말에 설치가 이루어 지는데... 내부적으로 패키지 관리하는 녀석이 manifest.xml를 파싱해 필요한 정보들을 저장하고, /opt/usr/apps/ 아래에 파일들을 복사하게 된다.



단말에 설치되는 위치

/opt/usr/apps/어플리케이션ID/


타이젠 ide는 패키지를 만들수 있는 메뉴를 제공하는데, 이를 통해 패키지만 만들고, 필요에 따라 단말에 설치할 수 있다. 안드로이드에서 많이 봐왔던 adb 와 같은 sdb라는 녀석을 통해 패키지를 전달하고, 설치하면 된다. sdb는 /tizen-sdk/tools 에서 찾을 수 있으며, 대부분의 사용법은 안드로이드의 그것과 동일하다. ( ex) adb logcat == sdb dlog )



패키지 정보 보기

> sdb root on

> sdb shell

$ /usr/bin/pkginfo --pkg 패키지명


설치된 패키지 정보를 모두 살펴볼수도 있다.

$ pkginfo --listpkg



패키지 설치

그냥 패키지 파일을 임시 폴더에 복사하고, pkgcmd 를 사용해 설치하면 된다.

> sdb -d push 패키지.tpk /home/

> sdb shell

$ cd /home

$ pkgcmd -i -t tpk -p 패키지.tpk

$ sync

$ reboot


pkgcmd 옵션

-i,--install

-a,--app-path

-u,--uninstall

-c,--clear

-t,--package-type [tpk]

-n,--package-name

-p,--package-path "/opt/usr/apps/tmp/패키지명.tpk"

-k,--kill


기타

앱 관련 디렉토리가 몇가지 더 보이는데, /usr/apps/ 에도 패키지들이 보인다. 빌드해서 에뮬에 설치된 패키지가 안보이는 것으로 봐서는 이미 에뮬레이터에 설치되어 있는 패키지들 인듯 싶다.(프리로드??)

이곳저곳 디렉토리를 둘러보다 보니 /usr/share/packages/ 에 또 패키지 정보들이....이름들이 어플리케이션ID인데 내용을 보니 각 앱의manifest 파일들이다. 뭔지 모르겠으나 암튼 이 역시 프리로드된 패키지들의 정보인듯 싶다.

pkginfo 의 커맨드 중에 --imd , --rmd 라는게 To insert|remove manifest info in DB 라는 설명이 보이는데, db로 관리되는 앱은 /usr/share/packages/ 에 등록되나 보다...(확실치 않다 -_-;;;)



'프로그래밍 > Tizen' 카테고리의 다른 글

[EFL] Ecore_Exe 프로세스간 통신  (0) 2014.07.19
[EFL] Elementary  (3) 2014.07.17
[EFL] Elementary 위젯  (0) 2014.07.17
[EFL] EDC 스크립트  (0) 2014.07.17
[EFL] Evas 오브젝트  (0) 2014.07.16
[EFL] HTTP 연결  (0) 2014.07.13
[EFL] Ecore 이벤트 핸들러  (0) 2014.07.13
[EFL] 기본 윈도우  (0) 2014.07.13