안녕하세요, 타이젠 개발자 윤진입니다.


타이젠 플랫폼이 탑재된 기어S2를 구매하여 일주일째 사용하고 있습니다.

가급적이면 소비자의 시각에서 기어S2를 냉철하게 판단하고 싶지만 쉽지 않네요.

앱이 훅 죽어버린다거나 배터리가 광탈하면 심장이 덜컥 내려앉습니다.

결국 참다못해 기어S2를 호스트PC에 연결하여 여러가지 문제상황을 파악해보고자 합니다.


호스트PC와 기어S2를 연결하기 위해서는,

Tizen SDK 2.3.1 버전을 다운로드 받으셔야 합니다.

최종적으로 필요한 툴이 sdb(Smart Development Bridge)인데요,

sdb의 버전이 2.2.67 이후여야 기어S2가 제대로 인식됩니다.


Tizen SDK 2.3 버전인 경우,

sdb의 버전이 2.2.51이기 때문에 기어S2를 인식하지 못합니다.

2.3 환경에서 기어S2와 호스트PC를 연결해도 offline으로 인식하니 괜한 삽질하지 마세요~


Tizen SDK 2.3.1은 여기에서 받으실 수 있습니다.

현재 Tizen SDK 2.4가 최신 플랫폼입니다만,

Gear S2에는 Tizen 2.3.1 플랫폼이 탑재되었기에,

Gear S2용 앱을 개발하시려면 반드시 Tizen SDK 2.3.1을 설치하셔야 합니다.


기어S2는 cradle이나 extension으로 호스트PC와 연결하지 않습니다.

대신 기어S2를 호스트PC와 동일한 네트워크로 묶는 방식으로 연결합니다.

가정용 라우터가 있으면 호스트PC와 기어S2를 함께 연결해주세요.

물론, 기어S2는 무선으로 연결해야하겠지요?


1. 기어S2 디버깅모드 활성화



우선 기어S2의 디버깅 모드를 활성화해야합니다.

기어S2 오른편 하단 버튼을 눌러 Apps를 런칭합니다.

Apps > Settings(설정) > Gear info(Gear 정보) > Debugging(디버깅)

위처럼 진입하여 디버깅 모드를 활성화합니다.

디버깅 모드를 활성화해주어야 sdb를 붙여서 기어S2와 호스트PC를 연결할 수 있습니다.



2. 기어S2 와이파이 연결하기



기어S2를 라우터기에 연결할 차례입니다.

집에 무선 라우터기가 없으면 호스트PC와 연결할 수 없으니,

무선 라우터기가 없으신 분은 이 단계에서 무선을 지원하는 라우터기를 구매해주세요;


무선라우터기에 연결하기 위해서는,

Apps > Settings(설정) > Connections(연결) > Bluetooth(블루투스) > Bluetooth(블루투스)

블루투스를 우선 "비활성화"해주세요.

기어S2는 블루투스를 통해 와이파이를 연결하기 때문에,

블루투스를 꺼야 라우터에 수동으로 접속할 수 있습니다.


그리고,

Apps > Settings(설정) > Connections(연결) > Wi-Fi > Wi-Fi

위처럼 진입하여 Wi-Fi를 활성화해주세요.



Wi-Fi가 활성화되었다면,

Apps > Settings(설정) > Connections(연결) > Wi-Fi > Wi-Fi networks(Wi-Fi 네트워크)

위의 항목에 진입하여 연결된 라우터기를 선택합니다.

세부항목을 내려보면 IP 주소가 나오는데요,

이 주소로 호스트PC에서 접속할 수 있습니다.

위의 이미지 오른편에 보면 192.168.0.74라는 IP 주소가 나오네요.

이제 호스트 PC에서 sdb를 사용하여 기어S2에 연결할 수 있습니다.



우선 sdb 툴의 위치는 Tizen 2.3.1이 설치된 디렉토리 밑에 tools 디렉토리에 있습니다.

위의 예제에서는 기존에 사용하고 있던 sdb server를 죽이고 다시 띄웠는데요,

만약 기어S2에 연결이 안된다면 server를 죽이고 다시 띄운 후 시도해보세요.


$ sdb kill-server
$ sdb start-server


그리고 나서 sdb connect <IP주소>를 넣어 접속해주세요.

그러면 기어S2에 팝업이 하나 뜨는데요,

외부에서 접속하려고 하는데 의도한 접속인지 여부를 묻습니다.

확인버튼을 누르면 unauthorized에서 connected 상태가 됩니다.


자, 이제 연결이 다 되었습니다.

마음껏 탐험을 시작할 시간입니다.

아... root 권한이 아니어서 아음껏 탐험은 안되겠네요.

제한된 탐험이라도 즐겨보세요;


좋은 하루 보내세요~

끝_


* 본문에서 사용한 이미지 출처

http://developer.samsung.com/technical-doc/view.do?v=T000000251


  1. 코코콩 2015.11.19 20:51 신고

    안녕하세요 덕분에 타이젠2.3.1을 설치했네요... 웨어러블 sdk 설치하느라 며칠을 찾아보았는데 ㅎㅎ 감사합니다.
    그리고 문득 든 생각인데 타이젠이 성장하기 위해선 플래그쉽모델도 나와야하지않을까요? 물론 우선 앱생태계가 활성화되어야겠지만 듀얼OS로 지원을 해도 좋겠네요!

    오늘도 포스팅 잘보았습니다. 좋은하루되세요

    • 안녕하세요~ 코코콩님.
      이제 웨어러블의 세계에도 빠져드시겠군요 :)
      세상에 좋은 아이디어를 가진 사람이 많던데,
      웨어러블이라 가능한 재미난 앱을 만들어주세요~ 히힛.
      타이젠 플래그십 모델 출시 같은 큰 그림은 저 같은 일개 개발자 레벨에서는 잘 모르겠습니다. ㅠ_ㅜ
      멋지게 만들어놓으면 좋은 디바이스를 출시할 수 있겠죠~
      그럼 좋은 하루 보내세요~

  2. 전광하 2015.12.02 19:01

    안녕하세요.
    혹시, ip를 이용한 접근 말고, bluetooth 의 연결 상태에서는 sdb devices등의 제어를 할 수 없을까요?
    모단말과 gear s2는 거의 항상 블루투스로 연결되어 있어서, 모단말에서 제어를 해보고 싶은데요..
    궁금해서 문의 드립니다. 항상 감사합니다.

    • 안녕하세요,전광하님.
      현재로서는 ip를 이용하는 방법밖에 없습니다.
      하지만, 안드로이드를 라우터 삼아 웨어러블을 통제하거나,
      안드로이드에 올라가는 앱으로 웨어러블을 컨트롤하는 것도 재미있겠네요.
      좋은 의견 감사드리고 그냥 묻히지 않게 건의해보겠습니다.
      감사합니다.

  3. 보수동 2016.01.25 18:01

    안녕하세요? 타이젠으로 gear s2 에서 nfc app을 개발 중인 사람입니다. 실례가 되지 않는다면 질문을 좀 드리고 싶은데요. 타이젠에서는 nfc.tag feature 를 지원하는데 gear s2에서 지원을 하지 않는 것 같네요. 혹시 gear s2 에서 nfc.tag feature 를 언제 쯤 사용 가능할지 알 수 있을까요?

    • 안녕하세요, 보수동님.
      진심 대답해드리고 싶지만, 상품(Gear S2)의 피쳐에 대해서는 플랫폼 개발자가 알 수가 없어서요.
      지원여부는 http://developer.samsung.com/ 에서 문의하시는게 어떨까요?
      속시원한 답변을 드리지 못해 송구스럽네요.

    • 보수동 2016.01.26 00:09

      빠른 답변 감사합니다!!

    • 아, 넵. 감사합니다. 즐거운 하루 보내세요~!

  4. kykim 2016.01.30 21:23

    error: failed to connect remote target 'IP주소'만 계속 뜨네요...

    기어S2 블루투스, 3G 해제, 디버깅 ON, IP 주소 확인, 컴퓨터와 같은 네트워크 확인, sdb 버전 확인 다 했는데

    혹시 제가 빠트린 게 있을까요?

  5. 안녕하세요~ kykim님.
    같은 네트워크를 물리셨다는게 같은 라우터를 쓰셨다는것이지요?
    기어S2의 설정>네트워크에 들어가서 와이파이를 확인하면 네트워크 주소의 앞 세자리가 같은 라우터에 연결된 컴퓨터의 네트워크 앞 세자리와 동일한거죠?
    그렇다면 기본적으로 안될 이유는 없어보이는데요,

    그래도 아이피를 찾을 수 없다고 하니,
    기어의 와이파이를 다시 설정해보고,
    기어를 재부팅해보고,
    호스트피씨에서 sdb kill-server도 해봐야할 것 같습니다.

    꼭 연결에 성공하시면 좋겠네요.
    윤진 드림.

  6. 안녕하세요 2016.09.07 19:53

    지금 이 방식대로라면 혹여나 사진전송,파일전송같은 행위를 할수 있을까요?

  7. 노마십가 2019.05.03 03:57 신고

    혹시 게시글 대로 했음에도 error: failed to connect to remot tartget 에러가 발생하신다면,
    디버그 모드 킨 이후에는 꼭 디바이스 재부팅 해주세요 ㅠㅜ
    기기 재부팅 하고 나니까 잘붙습니다 흑흑

타이젠 네이티브 앱을 개발하려면 화면 구성을 해야겠지요.

Enventor가 화면을 구성할 때 좋은 친구가 되어줄 것입니다.


Enventor를 사용하여 레이아웃에 이미지를 넣어봅시다.

Enventor에 이미지를 위한 공간을 마련하는 것은 어렵지 않은데요,

이미지를 위한 공간에 이미지를 포함시키려면 이미지파일은 어디에 두어야 할까요?



안녕하세요, Tizen 개발자 윤진입니다.


Tizen 2.3 SDK에서 edc 파일을 더블클릭하면 Enventor가 런칭됩니다.

Enventor에 이미지를 저장하기 위한 파트를 하나 만들어둡니다.

그리고 파트에 이미지를 하나 지정합니다.

이미지 파일은 어디에 두는게 좋을까요?

Enventor > Setting > Image Paths

위의 경로를 변경하여 이미지를 저장해봅니다.



Image Paths를 이미지 파일이 있는 디렉토리로 변경하고,

Enventor의 preview 영역을 확인하니 이미지가 제대로 나옵니다.


자, 그리고 컴파일을 시도하면 위의 edc 파일을 빌드할 수 없다고 에러가 나옵니다.

무엇이 문제인 것일까요?


Eventor와 Tizen SDK가 완벽하게 통합되지 않았습니다.

위에서 설정한 Image Paths는 Enventor 만을 위한 메뉴입니다.

Tizen SDK에서 빌드를 위한 Image Paths도 지정해주어야 합니다.


Project Explorer > (마우스 우클릭) > Properties

위처럼 진입하여 메뉴윈도우를 띄웁니다.

C/C++ Build > Settings > Tool Settings > EDC Resource Compiler > misc

위의 메뉴까지 진입하면 Image Path를 입력할 수 있는 메뉴가 나옵니다.



Image Path에 있는 "+" 버튼을 눌러서 이미지 파일이 있는 위치를 추가해줍니다.

그리고 OK를 눌러 다시 빌드를 해봅니다.

이제 빌드에 성공하였네요.


그럼 좋은 하루 보내세요~

끝_


데스크탑 PC를 한 대 사서 우분투를 설치하였습니다.

가물가물한 기억을 더듬어서 환경설정을 하고 있습니다.

기본적인 환경설정에만 꼬박 하루가 지나가네요.


사실 윈도우 PC에는 이미 타이젠 SDK가 설치되어 있습니다.

하지만, 윈도우에서는 개발하는 손맛이 나질 않아 우분투에도 타이젠 SDK를 설치하려고 합니다.

타이젠 SDK를 설치하는 과정 자체에는 어려운 것이 전혀 없으나,

타이젠 SDK를 위한 우선 설치해야하는 것들이 있습니다.



안녕하세요, Tizen 개발자 윤진입니다.


만약 타이젠 SDK를 윈도우에 설치하시려면 아래 포스팅을 참고해주세요.

[Tizen] 타이젠 SDK 윈도우에 설치하기, "생각보다 쉽다"


타이젠 SDK는 이클립스를 사용하고 있기 때문에 오라클 JDK를 설치해야합니다.

우분투 환경에서는 open jdk도 받을 수 있으나,

open jdk로는 이클립스를 구동할 수 없습니다.

반드시 오라클에서 배포하는 JDK 받으셔야 이클립스를 제대로 실행할 수 있습니다.


여기를 눌러 오라클 홈페이지에 들어갑니다.

2015. 6. 30 현재 가장 최신은 Java SE Development Kit 8u45 버전입니다.



위의 화면에서 "Accept License Agreement"를 눌러서 라이센스에 동의해주세요.

라이센스에 동의해야만 jdk를 다운로드 받을 수 있습니다.

우분투는 Linux x86(32비트)이나 Linux x64(64비트)를 다운로드 받으셔야 합니다.

여기서는 64비트용 jdk-8u45-linux-x64.tar.gz를 다운로드 받겠습니다.

오라클이 서버를 만드는 회사이니 만큼 다운로드 하나는 확실하게 그리고 빠르게 되네요. :)


다운로드가 완료되었으면 우선 압축부터 풀어야 합니다.

$ tar xvzf jdk-8u45-linux-x64.tar.gz


그리고 압축이 풀린 디렉토리를 통째로 옮깁니다.

$ sudo mkdir -p /usr/lib/jvm/jre1.8.0
$ sudo mv jdk1.8.0_45/* /usr/lib/jvm/jre1.8.0/


자바는 openjdk와 oracle jdk처럼 버전이 다양하기 때문에,

좀 전에 다운로드받은 oracle jdk가 실행될 수 있도록 설정해줍니다.

$ sudo update-alternatives --install <link> <name> <path> <priority>
$ sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jre1.8.0/bin/java 0

곧, /usr/bin/java에 좀 전에 다운로드받은 /usr/lib/jvm/jre1.8.0/bin/java의 링크를 만들어두는 것이지요.


그리고 우분투 파이어폭스에서도 자바를 사용할 수 있도록 자바플러그인을 복사합니다.

$ mkdir ~/.mozilla/plugins
$ ln -s /usr/lib/jvm/jre1.8.0/lib/i386/libnpjp2.so ~/.mozilla/plugins/


마지막으로 추가로 필요한 패키지 몇 개를 설치합니다.

$ sudo apt-get install expect gtk2-engines-pixbuf libgnome2-0 qemu-user-static libwebkitgtk-1.0-0 gettext gksu module-init-tools libudev-dev libsdl1.2debian ruby
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다      
상태 정보를 읽는 중입니다... 완료
gettext 패키지는 이미 최신 버전입니다.
libgnome2-0 패키지는 이미 최신 버전입니다.
libgnome2-0 패키지 수동설치로 지정합니다.
module-init-tools 패키지는 이미 최신 버전입니다.
다음 패키지가 자동으로 설치되었지만 더 이상 필요하지 않습니다:
  libatk-wrapper-java libatk-wrapper-java-jni libgconf2-4 libgif4 libice-dev
  libpthread-stubs0-dev libsm-dev libx11-dev libx11-doc libxau-dev libxcb1-dev libxdmcp-dev
  libxt-dev x11proto-core-dev x11proto-input-dev x11proto-kb-dev xorg-sgml-doctools
  xtrans-dev
Use 'apt-get autoremove' to remove them.
다음 패키지를 더 설치할 것입니다:
  libgksu2-0 libjavascriptcoregtk-1.0-0 libudev1 libwebkitgtk-1.0-common tcl-expect udev
다음 새 패키지를 설치할 것입니다:
  expect gksu gtk2-engines-pixbuf libgksu2-0 libjavascriptcoregtk-1.0-0 libudev-dev
  libwebkitgtk-1.0-0 libwebkitgtk-1.0-common qemu-user-static tcl-expect
다음 패키지를 업그레이드할 것입니다:
  libudev1 udev
2개 업그레이드, 10개 새로 설치, 0개 제거 및 146개 업그레이드 안 함.
18.6 M바이트/19.6 M바이트 아카이브를 받아야 합니다.
이 작업 후 130 M바이트의 디스크 공간을 더 사용하게 됩니다.
계속 하시겠습니까? [Y/n]


이제 타이젠 SDK 설치를 위한 준비가 끝났습니다.

타이젠 홈페이지에 방문하여 SDK를 다운로드 받습니다.



DOWNLOAD THE SDK 버튼을 누르면 Tizen SDK를 받을 수 있는 페이지가 나옵니다.

아래 페이지에 표시된 화살표 링크를 눌러 운영체제에 맞는 SDK를 고를 수 있습니다.



여기서는 64비트 우분투용 tizen-sdk_2.3.63_ubuntu-64.bin를 다운로드 받겠습니다.

다운로드 받으시고 실행권한을 주셔야 합니다.

$ chmod +x tizen-sdk_2.3.63_ubuntu-64.bin

그리고 바로 실행해보시지요.


만약, 설치가 여전히 안된다면 openjdk 때문일겁니다.

openjdk를 사용하실 필요가 없다면 지우셔도 무방합니다.

$ sudo rm -rf /usr/lib/jvm/java-8-openjdk-amd64



Install > Advanced에 들어가서,

- Package server : SDK이미지를 서버에서 내려받거나,

- SDK Image : 이미 다운로드받은 이미지로 설치할 수 있습니다.

여기서는 Package server를 선택합니다.

그리고 Install을 누르면 다음 항목으로 넘어갑니다.



여기서는 mobile & wearable을 모두 설치할 것이므로 Custom 버튼을 누릅니다.

라디오 버튼이 체크박스로 바뀌면,

Mobile-2.3 / Wearable-2.3 / Other tools를 모두 체크합니다.

다음으로 넘어가면 라이센스 항목이 나옵니다.



라이센스를 자세히 읽어보시고...

I agree 버튼을 눌러 다음으로 넘어가세요.



기본적으로 Installation Location은 ~/tizen-sdk로 되어 있고,

Data Location은 ~/tizen-sdk-data로 되어 있습니다.

다른 경로를 원하시면 변경하실 수 있습니다.

여기서는 그대로 사용하도록 하겠습니다.

이제 Install 버튼을 누르면 설치가 됩니다.

서버로부터 패키지를 다운로드 받고 설치하기 때문에 서버 상태에 따라 시간이 많이 걸릴 수도 있습니다.


설치가 완료되면 바로 Tizen SDK를 사용하실 수 있습니다.

개발의 재미에 빠져보세요~


끝_

  1. 앨리삵 2015.10.05 20:25 신고

    우분투에서 타이젠 빌드하려고 고군분투중입니다.
    한줄기 빛과 같은 블로그 포스팅 감사해요 ㅠㅅㅠ

  2. 정말 멋진 홈피를 가지고 계십니다! :)
    그래픽스 전문가에게 직접 배운다는 생각으로 열심히 방문해야겠습니다. 하핫.

웨어러블 디바이스가 하나둘씩 출시되고 있습니다.

삼성전자가 출시한 시계만 해도,

기어 1, 기어 Fit, 기어 2, 기어 S가 있습니다.

거기에 원형 디스플레이의 기어가 조만간 출시될 예정이죠.


이 원형 디스플레이를 가진 기어를 위한 SDK가 드디어 배포되었습니다.

Early Access Program으로 사전등록한 개발자에게 SDK를 배포하고 있네요.

사전등록을 위해서 까다로운 절차는 없습니다.

그저 Join만 하면 됩니다. :)



안녕하세요, Tizen 개발자 윤진입니다.


Early Access Program에 참여하라는 메일입니다.

"Get ready for the next gear"

문구 뒤로 보이는 원형 디스플레이가 눈에 띕니다.

원형 디스플레이에는 지역정보와 시간정보 그리고 날씨정보가 노출되어 있습니다.

기어가 보여줄 정보가 되겠군요.


메일의 하단부에 "Join us" 버튼이 있네요.

버튼을 누르니 아래 사이트에 접근하더군요.

http://developer.samsung.com/wearable/sub.html



위의 사이트에는 EAP에 참여하기 위해서는 삼성 개발자 계정이 있어야 한다고 언급되어 있습니다.

삼성계정이 없으면 이 기회에 하나 만들고,

Sign up 버튼을 눌러 SDK 사용자에 대한 간단한 정보를 입력하시죠~


승인메일이 바로 오진 않습니다.

적어도 주말에는 승인메일이 오지 않았습니다.

주말이 지난 월요일 오전 10시경에 승인메일을 받은 기억이 납니다.

시스템이 자동으로 승인을 하진 않을테고,

수동으로 신청자를 가려 승인해주는게 아닌가 합니다.


승인메일은 아래 내용을 담고 전송됩니다.

Gear SDK Early Access Program에 대한 간단한 정보가 있고,

다운로드 페이지로 접근할 수 있는 버튼이 있네요.



권한이 없는 상태에서 다운로드 페이지로는 갈 수 없습니다.

다운로드를 받으시려면 필히 승인까지 받으셔야 합니다.


다운로드 페이지에 접근하면 아래와 같은 화면이 나옵니다.

처음으로 언급된 것이 기어앱의 동작방식이네요.

기어앱은,

- Standalone : 기어만 있어도 앱을 100% 활용할 수 있는 경우

- Companion : 모바일과 기어가 연결되어야 앱을 100% 활용할 수 있는 경우

위의 두 방식 중 하나로 동작하게 됩니다.



설치 전에 설치 방법이 언급된 More Details 버튼을 누릅니다.

위의 버튼을 누르면 아래처럼 자세한 설치방법이 나옵니다.



이 설치방법은 다운로드를 마치고 설치할 때 참고하시면 됩니다.

More Details 아래에는 플랫폼별 인스톨 매니져가 있네요.

자신의 OS에 해당하는 인스톨 매니져를 다운로드 받습니다.

- MacOS 64 bits

- Ubuntu 32 bits

- Ubuntu 64 bits

- Windows 32 bits

- Windows 64 bits


다운로드를 요청하면,

라이센스가 나옵니다.



라이센스에 동의한다는 의미로 두 군데에 모두 체크를 합니다.

두 군데 모두 체크가 되면, Download라는 버튼이 생성됩니다.

Download를 눌러 타이젠 SDK를 다운로드 받습니다.


윈도우 64비트용 인스톨 메니져는 약 810메가 정도의 용량입니다.

전송속도는 시스템마다 차이가 있겠지만,

2분 남짓이면 다운로드받을 수 있습니다.


다운로드 받은 파일은 압축되어 있습니다.

압축을 풀고 실행파일을 실행합니다.

윈도우의 경우에는 "tizen-sdk_2.3.74_windows-64.exe" 실행합니다.



인스톨 매니져가 정상적으로 실행되었다면,

위의 화면을 볼 수 있습니다.


Install 혹은 Update > Advanced

위의 경로에서 Advanced 버튼을 누릅니다.



Advanced Configuration에서,

SDK image를 선택합니다.

그리고 다운로드 받은 파일 중 "tizen-sdk-image-TizenSDK_2.3.1_RC7_EAP-windows-64.zip" 파일을 선택한 후 OK를 누릅니다.


여기까지 진행되었으면 아래와 같은 화면을 보실 수 있습니다.

Profiles에는 Wearable 2.3.1만 설치할 수 있습니다.



Wearable 2.3.1이 선택된 것을 확인하고,

Install 버튼을 누릅니다.



타이젠 SDK에 대한 라이센스가 나옵니다.

I agree 버튼을 눌러주세요.


"Ready to install?"

인스톨 준비가 다 되었는지 묻습니다.



Installation Location과 Data Location의 위치를 변경할 수 있습니다.

다만 여기서는 기존에 설정된 디렉토리를 그대로 사용하도록 하겠습니다.

중간에 있는 Install 버튼을 눌러 인스톨을 시작합니다.



인스톨이 완료되면 위의 화면이 나옵니다.

Close를 누릅니다.


그리고 타이젠 IDE를 실행하여 이클립스를 띄웁니다.

왼편 하단에 Connection Explorer가 있습니다.

가장 왼편에 에뮬레이터를 닮은 버튼을 눌러 Emulator manager를 누릅니다.



아래처럼 에뮬레이터 매니져가 런칭되었습니다.

에뮬레이터 매니져는 다음 세 개의 탭으로 되어 있습니다.

- wearable-2.3.1

- custom

- all



wearable-2.3.1 탭에 진입하여,

Create New VM 아래에 있는 '+' 버튼을 누릅니다.

그러면 그 자리에 폰 모양의 에뮬이 하나 생깁니다.



폰 오른쪽에 Detail을 설정할 수 있는 부분이 있습니다.

거기서 Name 정도를 바꿔줄 수 있습니다.

그리고 아래 Confirm을 누릅니다.



위의 이미지처럼 에뮬레이터가 하나 등록되었습니다.

사이즈는 360x360입니다.

원형 디스플레이가 360x360이겠지요.


에뮬레이터의 재생버튼을 눌러,

에뮬레이터를 런칭합니다.



원형 디스플레이를 가진 wearable 2.3.1 버전을 보실 수 있습니다.

이번에 추가된 장치로 오른 편에 용두가 있습니다.

그리고 원형디스플레이를 감싸고 있는 rotary도 있습니다.

신규 피쳐를 이용하여,

재미난 앱을 짤 수 있겠군요.


끝_




애초에 타이젠 앱을 짜려고 마음을 먹은 것은,

5월 5일 어린이날,

초딩러시를 피하기 위해 두문불출할 때였습니다.

(http://storycompiler.tistory.com/14)


그날 이후,

SDK를 설치하고(http://storycompiler.tistory.com/15),

타이젠 오픈소스를 다운로드 받고(http://storycompiler.tistory.com/16),

Z1을 구해 개발자+시료인증(http://storycompiler.tistory.com/20)까지 하니,

5월 25일 부처님 오신 날이 되었네요.


20일이 지나는 동안,

본격적인 코딩은 커녕 앱 아키텍쳐를 고민해보지도 않았다.

갈 길이 멀어요.


안녕하세요, Tizen 개발자 윤진입니다.


그렇다고 오늘 아키텍쳐를 고민하거나 코딩을 하겠다는 것은 아닙니다.

오늘은 템플릿 소스를 분석하여 타이젠 앱 디렉토리 구조를 살펴보겠습니다.


SDK를 런칭하여 템플릿 프로젝트를 만들어보죠.

File > New > Tizen Native Project

위의 메뉴로 진입하여 Native Project를 생성해보겠습니다.



Template > MOBILE-2.3 > UI Application > Basic UI Application (EDC)

차례대로 선택하여 기본앱을 위한 템플릿을 선택합니다.

하단의 Project name은 원하는 이름으로 지정합니다.

Package name은 Project name에 "org.tizen." 접두사가 붙습니다.

하지만, 원하는 대로 수정할 수 있습니다.

Finish를 눌러 프로젝트를 생성해보세요.



SDK 상에는 위의 디렉토리와 파일이 자동으로 생성됩니다.

앱의 root 디렉토리에 5개의 서브디렉토리와 1개의 메타파일이 생겼습니다.

위에 누락된 data 디렉토리를 추가하여 간단하게 설명하면 아래와 같습니다.



폴더명은 축약어와 풀네임을 혼용하였습니다.

inc, res, src, lib은 축약어로,

data와 shared는 풀네임으로 디렉토리 이름을 정했습니다.

최근 네이밍 트랜드로는 풀네임이 대세이지만,

inc, res, src, lib은 축약어로 오랜 기간 사랑을 받았기 때문에,

(오랜 고민과 토의 끝에) 축약어와 풀네임을 혼용하기로 결정된 것으로 보이네요.


- inc에는 앱 내부에서 정의하고 사용할 함수의 선언이 담긴 헤더파일을 넣습니다.

  대규모 프로젝트인 경우 inc 내에 디렉토리가 추가될 수 있습니다.

  디렉토리 내에 헤더파일이 각각의 의미에 맞게 배치되겠죠.


- src에는 SDK를 통하여 빌드될 소스파일들이 채워집니다.

  소스 디렉토리 내부에도 트리구조의 디렉토리를 추가할 수 있습니다.

  소스파일은 각각의 의미에 맞게 디렉토리에 배치합니다.


- res에는 앱 내에서만 사용할 리소스파일, edc 혹은 이미지 파일들을 넣습니다.

  edc 파일은 타이젠의 네이티브 UIFW인 EFL에서 사용하는 레이아웃을 위한 소스파일입니다.

  edc 파일은 빌드타입에 파싱되어 이미지파일까지 머금은 edj 파일로 변환이 됩니다.

  edj 파일은 c 파일 내부에서 edje_object prefix의 함수군으로 통제할 수 있습니다.

  따라서 기본적으로 생성되는 디렉토리 이름이 res/edje 입니다.


- lib은 빌드가 완료된 라이브러리 파일 자체가 놓이는 곳입니다.

  SDK로 빌드할 수 없어 외부에서 빌드했거나,

  소스없이 라이브러리만 사용할 수 있는 경우 lib 디렉토리에 라이브러리 파일을 위치시키죠.


- data는 앱내에서 읽고 쓰기가 가능한 xml이나 db파일을 저장하는 곳입니다.

  앱에서 사용하는 데이터 파일들을 초기화하기 위한 목적으로 사용합니다.


- shared는 아이콘처럼 다른 앱에서 접근할 수 있는 공간입니다.

  타이젠의 앱디렉토리 정책상 다른 앱의 디렉토리에는 앱권한의 프로세스가 접근할 수 없습니다.

  다만 역시 앱권한의 홈/메뉴/작업관리자 등의 앱에서 앱아이콘을 보여주어야 하기 때문에,

  앱 내의 shared 디렉토리에 위치한 아이콘에는 어느 앱이나 접근할 수 있게 허용하였습니다.


앱 소스 디렉토리 구조에는 군더더기가 없습니다.

SDK로 빌드를 진행하면,

패키지도 별도의 디렉토리 구조를 갖게 됩니다.

패키지 디렉토리 구조도 차후에 다시 설명할 기회가 있을 것입니다.


2015년에도 '월'요일에 공휴일을 만들어주신 부처님의 한 수에 감사드리며 포스팅을 끝마칩니다.


끝_


* References

https://developer.tizen.org/dev-guide/2.2.1/org.tizen.native.appprogramming/html/app_dev_process/project_files_and_folders.htm


Tizen SDK를 실행시키고,

Tizen Z1을 USB로 데스크탑과 연결하였습니다.

하지만, SDK에서 기본 제공하는 샘플앱을 Z1에 설치할 수 없었습니다.


Tizen SDK에서 제공하는 샘플앱을 정상적인 방법으로 Build하여,

Tizen Z1에 정상적인 방법으로 Install하고자 하는데 에러가 나네요.


무슨 일인걸까요?


안녕하세요, Tizen 개발자 윤진입니다.


인스톨 에러는 결코 SDK의 문제가 아닙니다.

문제라면 Z1의 문제이죠.

Z1은 판매용 상품이니 만큼,

소비자가 크래킹의 위협에서 벗어날 수 있도록 보안을 견고하게 다져놓았습니다.

플랫폼 입장에서는 사용자가 인증받지 않은 앱을 설치하는 것만큼 위험한 것은 없습니다.


타이젠 스토어에는,

- 등록된 개발자만이 업로드를 할 수 있고,

- 업로드한 앱은 검증을 통과해야,

비로소 스토어에 노출됩니다.

따라서 타이젠 스토어를 통해 내려받은 앱은 안심하고 사용할 수 있겠죠.


하지만, 사용자가 타이젠 스토어가 아닌 다른 곳에서 불량앱을 다운로드 받을 수도 있으니,

Z1 입장에서는 다시 한번 인증하는 절차를 통해 불량앱을 적발하고자 합니다.


따라서 타이젠 SDK에서 만든 샘플앱도 적절한 인증절차를 거치지 않으면,

Z1 입장에서는 그저 불량앱에 지나지 않습니다.


타이젠 SDK를 실행시킨 상태에서,

Z1을 연결하면 아래 이미지처럼 왼편 하단 'Connection Explorer'에 SM-Z130H가 나타납니다.



샘플앱을 Z1에 올려보죠.

아래 이미지처럼 File > New > Tizen Native Project 에 진입하여 샘플앱을 생성합니다.



타이젠 네이티브 앱 개발을 위한 프로젝트를 생성합니다.

아래 이미지처럼 Sample 탭을 눌러,

Mobile-2.3 > Native UI App > Calculator UI sample application 을 차례대로 선택합니다.



Project name은 마음대로 지정합니다.

Project name에 따라 Package name은 자동으로 정해집니다.

자동으로 정해진 Package name은 org.tizen이 prefix로 붙습니다.

다른 이름을 지정하고 싶다면 바로 바꿀 수 있습니다.



프로젝트를 생성하면,

왼편 Project explorer에 생성한 프로젝트가 나열됩니다.

Project > Build Project를 눌러 샘플앱을 빌드합니다.

그리고 Run > Run 을 실행하여 타겟으로 샘플앱을 로딩하고자 하면...

아래처럼 타겟에 install 할 수 없다는 메시지가 나타납니다.



인증된 개발자가 만든 앱이 아니므로 Z1 시료에는 설치조차 할 수 없습니다.

앱을 설치하여 런칭까지 진행하기 위해서는 인증을 먼저 받아야 합니다.

인증을 받기 위해 삼성 Z1 개발자 사이트(http://developer.samsung.com/samsung-z)에 접속합니다.



Z1에 대한 특징과 스펙에 대한 정보가 채워져 있습니다.

사이트 하단으로 스크롤해보면 Certificate을 다운로드 받을 수 있는 버튼을 찾을 수 있습니다.



위의 이미지를 보면,

인증서를 등록하기 위해 다운로드하라고 되어 있습니다.

다운로드 버튼을 누르면 SDK 라이센스 합의서가 나옵니다.



여러가지 문구가 나와있지만, 결국 하고 싶었던 말은 이 부분이 아닌가 싶습니다.


  1. 4.1

    Your Applications must not (i) breach any applicable laws, regulations or generally accepted practices or guidelines in the applicable jurisdictions; (ii) contain any material, component or code which could damage, destroy, unduly burden or unreasonably affect software, firmware, hardware, data, systems, services, or networks; or (iii) disable, hack or otherwise interfere with any authentication, content protection, digital signing, digital rights management, security or verification mechanisms implemented in or by the Tizen Certified platform.


한 마디로 나쁜 짓을 하라 말아달라는 요청입니다.

위의 이미지에 왼쪽 하단에 있는, "I agree to this SDK License Agreement"에 체크를 하면 Download 버튼이 생깁니다.

"tizen2.3-certificate-extension.zip"을 다운로드합니다.


이제 Tizen SDK를 설치할 때 사용할 적이 있는,

Tizen SDK Install Manager를 실행합니다.

(Tizen SDK 설치는 여기를 참고해주세요.)



위의 메뉴에서, Update를 누릅니다.



위의 이미지 왼편에 있는,

Extra repository 버튼을 누릅니다.



자동으로 Certificate을 다운로드 받은 디렉토리가 추가되어있습니다.

만약 추가가 되어 있지 않다면,

Name은 적당한 이름으로 짓고,

Repository는 꼭 다음 syntax로 추가해야 합니다.


"file:///" + [절대경로 혹은 상대경로] + [확장자가 빠진 파일명]

디렉토리를 '/'나 '\' 어느 것으로 사용해도 검색이 됩니다.

여기서는 아래와 같은 주소를 입력하였습니다.

"file:///C:\Users\Administrator\Downloads\tizen2.3-certificate-extension"

(차기 버전에서는 Certificate repository를 입력하기 위한 Search 버튼을 추가해주세요~ :))

주소를 올바르게 입력하였다면,

위처럼 리스트에 Certificate 이름이 나올 겁니다.

이름 옆에 체크박스를 체크한 후 OK 버튼을 누릅니다.



위처럼 Extra 항목에 "Certificate Extension"이라는 항목이 추가되었습니다.

Install 버튼은 눌러 인스톨을 진행합니다.

인스톨이 완료되면 SDK를 통해 Certificate을 요청할 수 있습니다.


Certificate을 요청하기 위해서는,

내 신분이 기록된 CSR 파일을 생성해야 합니다.

우선 아래 이미지의 Certificate 버튼을 누릅니다.


버튼을 누르면 아래 이미지와 같은 다이얼로그가 나옵니다.



개발자 인증을 받기 위해서는,

Author 패널 > Generate a certificate signing request(CSR file)

위의 버튼을 눌러 개발자 인증을 받기 위한 파일을 생성해야 합니다.


개발자 인증서를 처음 발급받는 것이니,

Generate a new certificate signing request

위의 라디오 버튼을 선택한 후 Next를 누릅니다.



사용자 이름과 비밀번호 그리고 기타정보를 입력한 후 Finish 버튼을 누릅니다.

여기서 입력한 비밀번호는 차후 Certificate과 함께 입력해야하므로 잘 기억해두세요.



C:\tizen-sdk-data\keystore\author.csr

위의 위치에 csr 파일이 생성되었습니다.


이제 다시 다이얼로그 Author 패널에서,

"Request the certificate" 버튼을 누릅니다.



팝업이 뜨며,

다음 단계에서 삼성계정에 로그인해야한다고 알려줍니다.

확인 버튼을 눌러 다음 단계로 진행해보죠.


삼성 개발자 사이트 로그인 화면창이 왼편에 나오고 연결된 디바이스 정보가 오른편에 함께 나타납니다.

이미 삼성 개발자 사이트에 아이디가 있으면 Sign in을 눌러 접속을 하고,

아이디가 없으면 중간에 "Create a Samsung accrount"를 눌러 아이디를 만드세요.



로그인을 완료하면,

그러면 Request Developer Certificate을 위한 창이 새로 생깁니다.



좀 전에 생성한 csr 파일을 선택하여 Submit 버튼을 누릅니다.



메일로 개발자를 위한 인증서를 받을 수 있습니다.

메일을 열어보면 첨부파일로 author.crt 파일이 있는 것을 확인할 수 있습니다.

위의 파일을 Author 패널의 Certificate file 항목에 넣어줍니다.

Password에는 csr 파일을 생성할 때 넣어준 암호를 넣어주면 됩니다.


이제 디바이스를 인증받을 차례입니다.

Z1 디바이스를 USB로 연결한 후,

Device Profile 패널 > Request a device profile을 선택합니다.

등록하고자 하는 Mobile 기기를 등록하기 위한 페이지가 나옵니다.



Privilege Level은 "Public", "Partner" 혹은 "Platform"을 선택할 수 있지만 일반 개발자가 선택할 수 있는 것은 "Public"입니다.

Developer Type은 "Individual"(개인)이나 "Company"(회사) 중에 선택합니다.

Device ID는 오른편에 연결된 기기에서 Copy 버튼을 눌러 갖다 붙입니다.

그리고 하단의 Submit 버튼을 누릅니다.


본인 계정으로 Profile에 대한 정보를 보내는데 성공하였다면,

위와 같은 화면이 나옵니다.

이제 본인의 계정으로 등록한 1) device-profile.xml 파일과 2) 디바이스에 대한 인증패스워드가 날라옵니다.



첨부파일은 Device Profile > Certificate file에 붙입니다.

Password는 메일로 함께 날라온 암호를 입력합니다.

그리고 OK를 누르면 드디어 인증이 완료됩니다.



인증이 완료되었다면,

Window > Preferences > Tizen SDK > Security Profiles

위의 위치에서 등록된 인증서를 확인할 수 있습니다.


자, 이제 마지막 단계입니다.

SDK에 등록된 인증서를 타겟에 옮기세요.

SDK 왼편에 있는 Connection Explorer에 있는 타겟을 선택하고 마우스 오른버튼을 누릅니다.



위의 팝업메뉴에서 가장 아래에 있는,

Permit to install applications

버튼을 눌러 인증서를 타겟에 복사합니다.


여기까지 왔다면, SDK에서 만든 앱을 Z1에서 실행할 수 있습니다.


만약 앱을 실행하려 했으나 다음과 같은 에러가 떠서 실행이 안된다면,

인증 과정에서 오류가 발생하여 제대로 인증이 안되었을 가능성이 높습니다.


- "Cannot create package"

- " java.io.IOException: Invaild password  If you want to know more information, please check your 'Error Log' view"

- "Cannot launch ..."


차분히 다시 인증과정을 진행해보길 권장합니다.

그래도 안되면 무한도전 등을 보며 심신의 안정을 취한 후,

다시 처음부터 차분히 진행보세요. :)


끝_




* Reference

http://developer.samsung.com/samsung-z#certification_guide

http://developer.samsung.com/technical-doc/view.do?v=T000000198




+ Recent posts