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


얼마 전에 출시된 타이젠 스튜디오 2.0을 설치하여 실행할때,

아래 사진처럼 "Decoration Calculation" 에러가 나실 때 해결방법입니다.



Tizen Studio > Window > Preferences > General > Appearance > Label Decorations

위의 메뉴에 진입하여,

"Javascript Function Override Indicator" 항목의 체크를 해제해주면 됩니다.



위의 에러는 이클립스 관련 에러로서 아래 스택오버플로우에서 보고된 내용입니다.

https://stackoverflow.com/questions/27373824/eclipse-an-internal-error-occurred-during-decoration-calculation-java-lang


본 포스트에 대한 기본내용은 타이젠 SDK팀에서 제공해주셨습니다.


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


지난 한 달간 온오프믹스를 통해 Tizen Talks의 참가자를 받아왔습니다.

참고 : [Tizen Talks 2016 in Seoul] 타이젠 개발자 행사 참가자 2차 추가모집

생각보다 많은 분들께서 참석 의사를 밝히셔서 굉장히 놀랐습니다.


타이젠에 관심있는 대학생들 뿐만 아니라,

공기업, 대기업, 벤쳐기업 등 다양한 곳에서 근무하시는 분들이 참가신청을 해주셨습니다.

서울 뿐만 아니라 대구, 부산 등 지방에서 올라오시는 분들도 계시더군요.

관심을 가져주셔서 다시 한 번 감사합니다.


애초에 행사는 20~30명을 위해 기획되었지만,

인원모집 단계에서 총원을 100여명까지 늘렸습니다.

마음 같아서는 참가신청을 원하는 모든 분들을 받아들이고 싶었지만,

장소가 협소하여 어쩔 수 없이 온오프믹스 참가신청을 마감하였습니다.

현재 대기인원 포함 200여분이 등록을 하셨기에 대기등록도 어렵습니다.

참석을 원하는 분은 따로 알려주세요.


애초의 세션 발표안이 약간 수정되었습니다.

참가자를 모집하며 듣고 싶은 내용에 대한 정보를 수집하였는데요,

좀 더 깊이있게 그리고 폭넓게 파고 들어야 하는 세션은 다음으로 미루기로 결정하였고,

플랫폼 전체를 훑으며, 서로 유기적으로 연결되는 세션을 남겨두었습니다.



박영주, Application, "타이젠을 말하다."

이세문, Application Framework, "Tizen Application Inside Out"

정우현, UI Framework, "타이젠 UI앱의 필수, EFL 파헤치기"

문관경, Window system, "더 빠르고 더 유연한 윈도우 시스템(Wayland on Tizen 3.0)"

우상정, Kernel / System Framework, "바닥부터 만들어보는 Tizen"

윤  진, Native App, "타이젠 오픈소스의 커미터가 되어보자! "

이승환, SDK Plugins, "Tizen SDK를 이용한 Tizen Platform 개발"


이번 행사를 위해 어디에서도 들을 수 없는 내용을 준비하고 있습니다.

발표자 분들께서 한창 리허설을 하고 계실 수도 있겠네요.



권오훈, Service Framework, "타이젠 서비스 개발 공통기능 파헤치기"

김기동, Security, "더 안전해진 개인정보 관리"

강석현, Web App, "Javascript Is Eating The World"


상기 세 개 세션은 다음 TT때 찾아뵙도록 하겠습니다.

개인적으로 꼭 듣고 싶은 세션들이어서 아쉬움은 크지만,

일회성 행사가 아니기에 다음 TT를 기다려보기로 합니다.



이 행사는 개발자들이 직접 주관하는 행사입니다.

현업에서 코드를 짜고 있는 개발자들이 만든 행사이기에,

여러가지로 부족한 점이 많이 있습니다.


원래의 취지는 개발자들끼리 한 번 모여서 '우리끼리' 넋두리를 늘어놓아보자 정도인데요,

행사 참석자가 많아져서 그냥 넋두리만 늘어놨다가는 안될 것 같더군요.


그래서 개발자들이 코딩하다 말고 장보고 준비하여 다과를 마련하였습니다.

대단한 것은 아니나 귀엽게 봐주셨으면 좋겠습니다.


주차는 기본적으로 불가하나,

먼 지역에서 오신 분들에게는 예외적으로 주차하실 수 있도록 하겠습니다.

이 부분은 참석자분께서 받은 메일로 답변주시면 됩니다.


며칠 안남았네요.

날도 추운데 감기 조심 하시고 행사날 뵙겠습니다.

끝_

  1. 코코콩 2016.01.20 11:06 신고

    흐어어어... 참석하고싶으나........ㅠㅠ

    혹시 발표자료 올려주실수 있으신가요?

    • 안녕하세요~ 코코콩님.
      제가 만든 자료는 Tizen Talks 그룹 및 본 블로그에 올릴 예정이고,
      다른 발표자 분들의 자료는 Tizen Talks에 올리려고 합니다. :)



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


얼마 전에 TT(Tizen Talks) 행사를 개최한다는 사실을 알려드렸는데요.

예상 외로 많은 분들이 관심을 가져주셔서 참가자 1차 모집을 마감하였습니다.

1차 모집 인원은 발표장 크기에 걸맞게 50명으로 책정했었지요.


비록 국내에 타이젠 모바일 제품이 출시되지 않았지만,

타이젠이 탑재된 기어시리즈가 널리 알려지고 있어서 10명만 와도 성공이라고 생각했었죠.


사실 발표자만 10명이 넘고,

행사운영으로도 그만한 숫자의 사람들이 투입이 되는데요,

행사를 준비하는 사람이 참가하는 사람보다 많아도 실망하지 말자고 다짐하고 있습니다.

(사실, 무명의 행사에 10명만 와도 성공이죠)


실제로는 얼마나 와주실지 아직도 걱정스럽기는 하지만,

그래도 참석의사를 밝히신 분이 50명이 넘었다는 사실에 감탄하고 있습니다.

그리고 대기자 명단에 올려서 참석의사를 적극적으로 피력하는 분도 계셨습니다.

타이젠 행사에 관심을 가져주는 모든 분께 진심으로 감사드립니다.


그래서 발표장을 좀 더 널직한 곳으로 변경하였습니다.

물론 현재까지 온오프믹스를 통해 신청의사를 밝히신 50분이 모두 오시진 못하겠지만,

백만분의 일의 확률로 모두 오실 수도 있을테니 참가자를 더 받으려면 공간을 넓혀야죠.


행사장소는 삼성전자 서초사옥 3층 그대로이지만,

3층에 있는 가장 넓은 대강의장에서 진행하려 합니다.

총 백여명이 들어갈 수 있는 공간입니다.




사진 촬영 : 박문경 연구원님


물론 공간이 넓어진 만큼 부담스러운 마음도 생기긴 합니다.

좁은 곳에서 10명은 왠지 가득차 보이지만,

넓은 곳에서 10명은 굉장히 휑해보일테니까요;

그래서 공간을 넓히는 것에 대한 상당한 부담감이 있지만,

장소가 모자라는 것보다는 남는게 차라리 나을테니,

공간이 휑해서 오는 심리적 압박은 준비하는 쪽에서 스스로 이겨내기로 했습니다.


온오프믹스에 추가로 참가신청을 받을 수 있도록 인원을 늘려놓았습니다.

애초에 계획했던 50명에서 100명으로 2배 늘렸는데요,

50명이 가득차서 헛걸음 하셨던 분들은 다시 신청해주세요.



2차 추가모집으로 등록된 사람은 '15. 12. 25 기준으로 78명입니다.

참석자 100명에 추가 대기자 50명으로 설정해두었습니다.

만약 참석예정자 100명이 꽉찬다면 대기자로 등록해주세요.

참석예정자분들께 전화/문자로 참석여부를 확인한 후 대기자 분들을 추가로 확정할 예정입니다.

그러니 연락가능한 전화번호를 꼭 남겨주세요 :)

참석신청은 여기에서 하실 수 있습니다.

그리고 각종 문의는 TT 공식사이트에서 하실 수 있습니다.

https://www.facebook.com/groups/tizentalks/


끝으로 TT 행사 댓글을 하나 언급하고 싶습니다.

황보진원님께서 "(생략)... 가능성을 보고서 울산에서 서울까지... 가려합니다. 기회가 주어진다면 직접 가능성을 보고 같은 가능성을 보는 이들과 교류하고 싶습니다. 기대하고 있습니다."라고 댓글을 남겨주셨습니다.

행사를 준비하는 입장에서 여러가지를 고민하게 만드는 댓글입니다.

먼길 오시는 만큼 헛된 걸음으로 돌아가시지 않도록 열심히 준비하겠습니다.


그럼 즐거운 하루 보내세요~

끝_



  1. 타이젠... 2015.12.27 15:14

    타이젠의 발전을 애타게 기다리는 분들도 많습니다. 저는 아니지만 타이젠폰 해외에서 직구했다가 램관리도 안되는 등 운영체제의 기본부터 개선해야 한다먀 다음 업데이트를 기다린다는 분도 있습니다.. 빨리 발전하길 바랍니다.

    • 안녕하세요? 의견 감사드립니다! 타이젠 모바일에 메모리 관련 정책은 매번 진화하고 있는 것으로 알고 있습니다. 그 사이에 불편을 느끼셨다니 여러가지로 송구스럽네요. 의견 주신 것을 소홀히 하지 않고 차기 버전에 반영할 수 있도록 하겠습니다. 감사합니다.



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


드.디.어.

서울에서 타이젠 플랫폼 개발자들과 소통하는 자리를 마련하였습니다.

타이젠 플랫폼의 다양한 측면을 엿보실 수 있는 좋은 기회입니다.


박영주, Application, "타이젠을 말하다."

이세문, Application Framework, "Tizen Application Inside Out"

박춘언, UI Framework, "타이젠 UI앱의 필수, EFL 파헤치기"

우상정, Kernel / System Framework, "바닥부터 만들어보는 Tizen(Tizen from Scratch)"

문관경, Window system, "더 빠르고 더 유연한 윈도우 시스템(Wayland on Tizen 3.0)"

권오훈, Service Framework, "타이젠 서비스 개발 공통기능 파헤치기"

김기동, Security, "더 안전해진 개인정보 관리"

이승환, SDK Plugins, "Plugin을 추가하여 나만의 SDK를 만들기"

강석현, Web App, "Javascript Is Eating The World"

윤  진, Native App, "타이젠 오픈소스의 커미터가 되어보자! "


1회 TT(Tizen Talks)에서는 타이젠 플랫폼을 전체적으로 조망해보고,

2회, 3회... TT에서는 주요 Framework 별로 살펴볼 예정입니다.

타이젠 플랫폼에 관심있으신 분들의 많은 참여 부탁드립니다.


Tizen Talks 공식 그룹 : https://www.facebook.com/groups/tizentalks/

Tizen Talks 2016 in Seoul 등록하기 : http://onoffmix.com/event/59258


그럼 행사날 뵙겠습니다.

윤진 드림.

  1. YOhoho 2015.12.17 01:49

    우와아아아 기대됩니다 신청완료!

  2. 2015.12.19 08:17

    비밀댓글입니다


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


Tizen 개발자 사이트에 방문해 보면 개발에 참고할만한 자료들이 많습니다.

말로만 좋다고 해봐야 입에 발린 소리를 하는 것으로 비춰질지도 모르니,

이번 포스팅은 철저히 Tizen 개발자 사이트의 자료를 이용하도록 하겠습니다.



여기에 들어가보시면 상기 그림과 같은 드럼앱 작성법이 나와 있습니다.

드럼을 치면 그에 맞는 소리가 플레이되는 간단한 앱입니다.

위의 그림만 봐도 드럼앱을 개발하고 싶은 욕구가 솟아나오시지요? :)


소리를 재생하려면 Player API를 사용합니다.

Player는 다수의 API로 구성되어 있는데,

그 중 라이프 사이클과 관련된 함수가 가장 중요합니다.

- player_create(), player_destroy()

- player_prepare(), player_unprepare()

- player_start(), player_stop(), player_pause()

위의 함수들로 Idle, Ready, Playing, Paused 상태를 관리합니다.


Player 상태 다이어그램


player_create()에서 재생을 위한 핸들을 생성해주면 Idle 상태로 진입합니다.

핸들을 이용하여 player_prepare()를 하면 비로소 재생할 준비를 합니다.

재생 준비가 되면 Ready 상태에 이르게 되는데요,

player_start()로 Playing 상태로 바뀌고,

player_pause()로는 Paused 상태로 바뀌며,

player_stop()을 실행하면 다시 ready 상태가 됩니다.


Player 상태 변이


위에서 언급한 상태 다이어그램을 함수 측면에서 살펴볼 수도 있습니다.

표에서는 각각의 함수를 실행하기 전에 수행해야할 pre-state를 확인할 수 있습니다.

대부분의 함수가 sync로 동작하기 때문에 절차적 프로그래밍을 하면 됩니다.

player_prepare_async()만이 async인데요, 드럼앱에서는 따로 사용하지 않았습니다.


우선, player 핸들을 생성하여 준비하는 단계를 살펴보겠습니다.

총 9개의 드럼이 있기 때문에 각각의 소리를 재생하기 위해서 9개의 player 핸들을 생성해야합니다.


static void init_base_player(app_data *ad)
{
player_create(&ad->player1);
player_set_uri(ad->player1, "/opt/usr/apps/org.tizen.drums/res/sounds/ride.wav");
player_prepare(ad->player1);

player_create(&ad->player2);
player_set_uri(ad->player2, "/opt/usr/apps/org.tizen.drums/res/sounds/crash.wav");
player_prepare(ad->player2);

player_create(&ad->player3);
player_set_uri(ad->player3, "/opt/usr/apps/org.tizen.drums/res/sounds/tom2.wav");
player_prepare(ad->player3);

player_create(&ad->player4);
player_set_uri(ad->player4, "/opt/usr/apps/org.tizen.drums/res/sounds/hihat2.wav");
player_prepare(ad->player4);

player_create(&ad->player5);
player_set_uri(ad->player5, "/opt/usr/apps/org.tizen.drums/res/sounds/hihat1.wav");
player_prepare(ad->player5);

player_create(&ad->player6);
player_set_uri(ad->player6, "/opt/usr/apps/org.tizen.drums/res/sounds/tom1.wav");
player_prepare(ad->player6);

player_create(&ad->player7);
player_set_uri(ad->player7, "/opt/usr/apps/org.tizen.drums/res/sounds/floor.wav");
player_prepare(ad->player7);

player_create(&ad->player8);
player_set_uri(ad->player8, "/opt/usr/apps/org.tizen.drums/res/sounds/snare.wav");
player_prepare(ad->player8);

player_create(&ad->player9);
player_set_uri(ad->player9, "/opt/usr/apps/org.tizen.drums/res/sounds/bass.wav");
player_prepare(ad->player9);
}


위의 함수를 보시면, player_create()를 9번 수행한 것을 확인할 수 있습니다.

그리고 획득한 핸들로 player_set_uri()를 사용하여 재생할 파일 경로를 입력하였습니다.

"file://"와 같은 prefix를 넣지 않고 바로 절대경로를 입력하여도 동작합니다.

파일 경로까지 입력하였으니 이제 재생을 위한 준비를 할 차례입니다.

player_prepare()함수를 사용하여 sync로 재생 준비를 마칩니다.


void play_audio(player_h player)
{
player_state_e player_state;
player_get_state(player, &player_state);
if (player_state == PLAYER_STATE_PLAYING) {
player_stop(player);
}
player_start(player);
}


이제 드럼을 터치하면 재생을 할 차례입니다.

재생을 하기에 앞서 현재 재생 중인지 여부를 확인합니다.

player_get_state() 함수를 사용하여 현재 상태를 확인할 수 있습니다.



함수를 통해 총 5가지 상태 중 하나의 값을 얻어옵니다.

만약 이미 플레이 중이라면,

player_get_stop()으로 플레이를 멈춥니다.

그리고 다시 player_start()로 재실행을 합니다.


드럼마다 이벤트 영역을 설정하여 play_audio() 함수를 실행하도록 합니다.

총 9개의 드럼이 제각각의 소리를 내는 것을 확인할 수 있습니다.

9개의 이벤트 영역을 설정하는 방법도 흥미로우니,

시간이 허락한다면 한 번 소스를 살펴보는 것도 좋습니다.


player를 위해 할당받은 자원을 정리할 차례입니다.

9개의 핸들에 대해 아래 두 함수를 이용하여 정리작업을 합니다.


    player_unprepare(app->player1);
    player_destroy(app->player1);


이상 아주 간단한 player 사용법이었습니다.

player에는 이외에도 굉장히 다양한 기능이 있습니다.

시간이 허락한다면 좀 더 복잡한 앱의 소스를 분석해보는 시간을 가져보겠습니다.


그럼 좋은 하루 보내세요~

끝_



* References

https://developer.tizen.org/

https://developer.tizen.org/community/tip-tech/drums-tizen

https://developer.tizen.org/dev-guide/2.4.0/org.tizen.native.mobile.apireference/group__CAPI__MEDIA__PLAYER__MODULE.html


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


타이젠 앱개발과 관련하여 자주 접하는 질문들을 하나씩 포스팅하기로 마음 먹었었는데요,

(마음만 먹었습니다;)

근데 워낙 많은 질문이 들어와서...

내년이 되어도 모든 답변을 포스팅할 수 있을지 모르겠습니다.


일단 이번 포스팅에서는,

화면이 꺼지면 안되는 앱이 필수로 사용하는 전원 API를 살펴보도록 하겠습니다.


전원 관련 API는 총 4개가 있습니다.

여기서 CPU와 Display의 전원은 request & release 함수를 이용하여 제어하지요.

하지만, 2.4부터는 보다 강력하면서 사용하기도 쉬운 API가 추가되었습니다.

그에 따라 request & release API는 deprecated 수순을 밟고 있습니다.


그 대신 efl_util에서 window screen mode를 설정할 수 있도록 API를 제공합니다.

함수 이름에 직접적으로 언급되어 있듯,

이 함수는 윈도우의 상태를 기준으로 파워를 제어하게 됩니다.

윈도우가 화면에 보이는 상태에서만 위의 함수로 지정한 상태로 진입하고,

화면에서 완전히 사라지면 n초 후 화면은 꺼지게 됩니다.


EFL_UTIL_SCREEN_MODE_DEFAULT는 시간이 경과하면 화면을 끄고,

EFL_UTIL_SCREEN_MODE_ALWAYS_ON은 화면이 켜져있는 상태를 유지합니다.


기존에는 앱의 라이프사이클인 pause / resume 콜백에서 device power 함수를 사용하여,

- 앱이 pause가 되면 상시 전원 on에서 사용시만 on으로 변경하고,

- 앱이 resume이 되면 상시 전원 on 상태로 유지하였었는데요,


이제는 윈도우의 상태에 따라,

- 윈도우가 사라지면(곧, 앱이 pause가 되면), ALWAYS_ON 상태가 자동으로 해제되어 화면이 꺼지도록 제어가 됩니다.

- 반대로 윈도우가 나타나면(곧, 앱이 resume이 되면), ALWAYS_ON이 다시 설정되게 됩니다.

그렇기에 앱의 라이프 사이클 대신 기능의 라이프 사이클에 맞춰 함수를 사용하면 됩니다.

간단하지요? :)


그럼 오늘도 좋은 하루 보내세요~

끝_


* References

https://developer.tizen.org/community/tip-tech/keeping-screen-awake-until-pressing-hold-button

https://developer.tizen.org/dev-guide/2.4.0/org.tizen.native.mobile.apireference/group__CAPI__SYSTEM__DEVICE__POWER__MODULE.html

https://developer.tizen.org/dev-guide/2.4.0/org.tizen.native.mobile.apireference/group__CAPI__EFL__UTIL__MODULE.html

  1. 2015.12.11 23:00

    비밀댓글입니다


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


타이젠 관련 행사를 진행하면 으레 받는 질문 중에 하나가 '인증'과 관련된 부분입니다.

타이젠 SDK로 소스를 빌드한 후,

패키지를 에뮬 혹은 타겟에 설치하고자 할 때 인증관련 에러를 접하게 되는데요,

알고나면 별거 아니지만 문제를 해결하기까지 시행착오를 겪는 경우가 아주 많지요.

따라서 그런 시행착오를 조금이나마 줄이고자,

타이젠 사이트에 정리되어있는 내용에 살 좀 붙여서 공유하고자 합니다.

한국어 보다 영어가 편리하신 분은 여기에서 참고하셔도 됩니다.

(위의 자료는 오픈소스그룹의 조재민 책임연구원께서 준비한 것으로 추정됩니다.)


SDK와 Z1 간에 개발자/디바이스 인증을 받는 법은 이미 포스팅한바 있습니다.

[Tizen] 타이젠 SDK와 Z1 연결이 되나요? 인증은 필수!

위의 포스팅은 전체적인 인증절차를 살피고자 문제없이 진행된다는 가정하에 쓰여졌었는데요,

처음 인증을 받고자 하는 분들은 위의 포스팅을 참고하시고,

문제가 생겼을 때 본 포스팅으로 도움을 얻으셨으면 좋겠네요.



* 인증을 위한 첫걸음, SDK Extension 설치하기

타이젠 플랫폼이 탑재된 상품은 견고한 보안을 갖추고자 다각도로 노력하고 있습니다.

따라서 Z1, Z3와 같은 모바일 상품이나,

Gear 시리즈와 같은 웨어러블 상품에서는 해킹위협을 원천차단하고자 합니다.

그 첫번째 단추가 검증되지 않은 앱을 설치하지 못하도록 막는 것입니다.

그렇기 때문에 복잡한 인증절차를 거칠 필요가 있습니다.

인증절차를 아직 밟지 않으셨다면 위에서 언급한 포스팅을 참고하여 인증을 받아주세요.

아래 링크를 참고하여 모바일 혹은 웨어러블 Extension을 설치하시면 됩니다.


- Mobile SDK Extension

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


- Wearable SDK Extension

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



* Active secure profile is not set.
  Please check the signing configurations at Preferences > Security Profiles.

위의 에러메시지는 저자 & 장치 인증을 받지 않았을때 나타납니다.

Extension SDK를 설치하시고 저자 & 장치 인증을 먼저 받으세요.

그리고 Connection explorer에서 연결된 디바이스를 클릭합니다.

마우스 오른쪽 버튼을 눌러 메뉴를 띄운 후,

"Permit to install applications"를 선택해주세요.

(그러면 device-profile.xml을 /home/developer 디렉토리에 설치가 되죠.)

위의 절차를 정확히 수행했다면 더 이상 이런 에러가 발생하지 않을겁니다.



* 'Launching TizenApp' has encountered a problem.
  Error code: SIGNATURE_INVALID

위의 에러메시지를 자세히 읽어보면 "Check author certificates"라는 부분이 있습니다.

저자인증이 제대로 진행되지 않아서 발생하는 에러겠지요.

이미 인증을 모두 진행하셨더라도 저자 인증을 다시 진행해야합니다.

제대로 인증을 완료한 후 Connection explorer에서 연결된 디바이스를 클릭합니다.

마우스 오른쪽 버튼을 눌러 메뉴를 띄운 후,

"Permit to install applications"를 선택해주세요.

(그러면 device-profile.xml을 /home/developer 디렉토리에 설치가 되죠.)

위의 절차를 정확히 수행했다면 더 이상 이런 에러가 발생하지 않을겁니다.



* 'Launching basic' has encountered a problem.
   Errors occurred during the build.

팝업의 하단을 잘 살펴보면 "Invalid password"라는 문구가 보입니다.

인증서를 등록하셨다면 저자인증 파일을 등록하면서 패스워드를 입력하셨을 겁니다.

바로 그 패스워드가 잘못되었을 경우 위와 같은 에러가 발생합니다.

Preferences > Tizen SDK > Security Profiles

위의 경로로 진입하셔서 Author 인증시 입력한 패스워드를 다시 잘 입력해보세요.

만약 패스워드가 기억이 안나신다면 Author 인증를 새로 해주세요.



* 'Launching basic' has encountered a problem.
  Error occurred while signing the widget.
  Both an author and a first distributor must be required.
  Please check your profile information.

팝업 내용을 살펴보면 저자인증 부분이 잘못된 것을 알 수 있습니다.

저자인증시 입력한 패스워드를 다시 한 번 확인해주세요.

만약 패스워드가 기억이 안나신다면 Author 인증를 새로 해주세요.



* Registration failed.
  Reason: java.lang.Exception: Generic Exception caught.
  Given final block not properly padded.

생소한 자바에러가 보이지만 '등록(Registration)'과 관련된 부분이란 것을 눈치챌 수 있습니다.

만약 Legacy certificate로 저자 & 장치 인증을 하셨다면,

Legacy certificate 파일이 잘못되었을 수 있습니다.

제대로 된 Legacy certificate으로 다시 인증을 받아보시길 권해드립니다.


그게 아니라 저자 & 장치 인증을 각각 받았다면,

저자인증 입력한 패스워드가 잘못되었을 수도 있습니다.

저자인증을 위한 암호를 다시 한 번 입력해보세요.

암호가 기억나지 않는다면 다시 저자인증을 하시길 추천해드립니다.



* There is no certificate for the selected device.
  Please update your certificate.

위의 팝업을 만나면 장치인증 파일에 문제가 있을 수 있습니다.

SDK와 연결된 장치와 장치인증을 받은 장치가 맞는지 확인해보세요.

device-profile.xml 파일을 열어서 <TestDevice>의 DUID와 SDK 연결된 장치의 DUID를 비교하시면 됩니다.

만약 DUID가 다르다면 연결된 장치로 장치인증을 다시 받으셔야 합니다.



* Certificate has not been installed to device yet.
  Please perform 'permit to install applications' of the context menu in Connection Explorer.
  For more information, refer to Help Contents: Certificates.

위의 에러메시지는 저자 & 장치 인증이 제대로 수행되지 않았을때 나타날 수 있습니다.

인증을 하지 않으셨다면,

Extension SDK를 설치하시고 저자 & 장치 인증을 먼저 받으세요.


(인증을 이미 하신 경우 포함) 인증절차를 완료한 후,

Connection explorer에서 연결된 디바이스를 클릭합니다.

마우스 오른쪽 버튼을 눌러 메뉴를 띄운 후,

"Permit to install applications"까지 선택을 해주셔야 합니다.

(그러면 device-profile.xml을 /home/developer 디렉토리에 설치가 되죠.)

위의 절차를 정확히 수행했다면 더 이상 이런 에러가 발생하지 않을겁니다.



* 'Launching nativetest - Debug' has encountered a problem.

  Cannot create package.

패키지를 생성하지 못했다는 경고문구입니다.

문구가 구체적이지 않기 때문에 수정포인트를 잡을 수가 없네요.

이 문구는 certificate가 잘못되었을 확률이 높습니다.

Preferences > Tizen SDK > Security Profile

위의 경로에 진입하여 저자 & 장치 인증부터 다시 진행해보세요.



* 'Launching test - Debug' has encountered a problem.
  Cannot install application.

위의 에러는 패키지를 설치할 때 발생하는 에러입니다.

유감스럽게도 'Error message: Success'라고 되어 있기 때문에 더 난해졌습니다.

에러메시지가 '성공'이라고 하네요. 하핫;

이럴 때 좌절하고 싶으실지는 모르겠지만 조금만 참아주세요.


문구가 난해하기 때문에 딱부러진 해결책도 없습니다.

저자 & 장치인증서를 처음부터 다시 받아보세요.

그리고 Connection explorer에서 연결된 디바이스를 클릭합니다.

마우스 오른쪽 버튼을 눌러 메뉴를 띄운 후,

"Permit to install applications"를 선택해주세요.

(그러면 device-profile.xml을 /home/developer 디렉토리에 설치가 되죠.)

위의 절차를 정확히 수행했다면 더 이상 이런 에러가 발생하지 않을겁니다.


이상으로 인증실패 총정리편을 마치겠습니다.

그 외의 에러팝업도 있을 수 있겠죠?

여기에 언급되어 있지 않은 에러팝업을 보신다면,

tizen.org의 Q&A 게시판에서 도움을 받으시는게 가장 빠른 방법입니다.

그게 부담되신다면 답글을 남겨주세요.

담당자분께 확인하여 답변해드리겠습니다.

(시간이 좀 더 걸리겠지요.)


그럼 좋은 하루 보내세요~

끝_


* References

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

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

https://developer.tizen.org/community/tip-tech/trouble-shooting-certification

  1. 하수 2016.07.19 01:06

    안녕하세요 타이젠 연습해보려는 학생입니다!! 간단히 native로 만들고 실행해보는데
    'Launching fakekakaotalk - Debug(1)' has encountered a problem
    The program file specified in the launch configuration des not exist

    이러는데 어떻게 해결해야하나요?? 어려운것도 없엇는데 벌써이러네요....

    • 안녕하세요. 제가 지금 러시아 오지탐험 중이라 직접 확인해볼 수가 없는데요. 심지어 인터넷도 너무 느려서 이 댓글을 확인하는것만 오분 정도 걸렸습니다. 하하. 죄송하지만 페이스북에 Tizen talks 그룹이 운영되고 있는데 거기서 한번 물어보시겠어요?


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


본 포스팅은 이틀에 걸쳐 졸음과 싸워가며 작성한 포스팅입니다.

오탈자가 있을 수 있으니 너그러운 맘으로 지적질(?) 부탁드립니다;


사실 이전 포스팅에서도 타이젠 개발환경의 핵심툴인 sdb를 언급한 적이 있습니다.

- sdb 설치하기 : [Tizen] 우분투에 타이젠 플랫폼 툴인 gbs & sdb 설치해보기

- sdb 사용하기 with Gear S2 : [Tizen/Gear S2] 타이젠 기어S2와 호스트 PC 연결하기


하지만 하루에도 수십차례 이용하는 sdb의 주요 기능에 대해 다룬 적이 없더군요.

어쩌면 지금 이 시간에도 수많은 타이젠 개발자들이 sdb를 이용하고 있을텐데요.

이 포스팅에서는 타이젠 개발자들이 주로 사용하는 sdb 기능을 설명하도록 하겠습니다.


sdb는 개발시스템과 디바이스(혹은 에뮬)을 연결하여 사용할 수 있도록 도와주는 툴입니다.

개발시스템과 에뮬 혹은 디바이스 혹은 에뮬과 디바이스를 동시에 연결할 수도 있지요.

파일을 주고 받고, 원격 쉘 접속을 위해 sdb를 사용하고 있습니다.


이런 sdb를 사용하기 위해서는 2가지 전제조건이 있습니다.


전제 1. 당연히, sdb를 설치하셔야겠지요.

sdb는 기본적으로 Tizen SDK와 함께 설치됩니다.

따라서 Tizen SDK를 설치하셨다면,

tizen-sdk/tools/sdb를 찾으실 수 있을겁니다.

만약 SDK 없이 sdb 툴만 리눅스환경에서 따로 받고 싶으시면 위에 언급한 포스팅을 참고해주세요.


전제 2. sdb로 붙이려는 디바이스의 debug 모드를 "On" 하셔야합니다.

디바이스에서 debug 모드를 켜놓지 않으면 sdb를 붙일 수 없지요.

타이젠 플랫폼에서는 Home > Settings > Device Info. > USB Debugging에서 설정하고,

타이젠 상품 Gear 시리즈에서는 Apps > Settings > Gear Info. > Debugging에서 설정하며,

타이젠 상품 Z1, Z3에서는 아래 포스팅을 참고해서 debug 모드를 설정하실 수 있습니다.

[Tizen] 타이젠 Z1에 개발자모드 메뉴가 숨겨져 있는 까닭은?


전제조건을 모두 만족하셨다면 이제 sdb 명령어를 살펴볼 차례입니다.

sdb 명령어는 도스나 리눅스 쉘에서 직접 사용할 수 있습니다.


sdb [option] <command> [parameters]


option에는 총 3가지 명령어가 있습니다.

옵션 1. "-d" 디바이스와 연결할 때 사용하는 명령어입니다.

개발시스템과 연결한 장치가 여러개 있을 경우,

그 중 USB와 직접 연결된 디바이스에 -d 옵션으로 접속할 수 있습니다.


옵션 2. "-e" 에뮬레이터와 연결할 때 사용하는 명령어입니다.

개발시스템과 연결한 장치가 여러개 있을 경우,

그 중 에뮬레이터에 -e 옵션으로 접속할 수 있습니다.

   

옵션 3. "-s" 시리얼넘버로 디바이스 혹은 에뮬에 접속할 수 있습니다.

시리얼 넘버는 sdb get-serialno 명령어로 얻을 수 있는데요,

앱개발할 때 사용한 경험이 거의 없군요 :)


위의 명령어 세가지는 말 그대로 옵션입니다.

개발시스템에 에뮬레이터와 디바이스가 모두 연결되어 있고,

둘 중 하나를 번걸아가며 접속할 때 유용하게 사용할 수 있습니다.

에뮬과 디바이스 중 하나만 접속이 되어 있다면,

옵션을 사용하지 않아도 접속된 에뮬 혹은 디바이스에 알아서 접속해줍니다.


command에는 다수의 유용한 명령어가 있습니다.

명령어 1. "root" <on | off>

root 명령어는 sdb로 에뮬 혹은 디바이스에 루트 권한으로 접속하게 해줍니다.

에뮬이나 플랫폼 바이너리가 탑재된 TM1 시료에서 사용할 수 있습니다.

Z1, Z3, Gear1, Gear2와 같은 상품에서는 root 권한을 얻을 수 없습니다.


명령어 2. "connect" <host>[:<port>]

connect는 Gear S2를 연결할 때 사용합니다.

이 명령어는 아래 포스팅을 참고해주세요.

[Tizen/Gear S2] 타이젠 기어S2와 호스트 PC 연결하기


명령어 3. "shell"

shell 명령어는 리모트쉘로 에뮬 혹은 디바이스에 접속할 수 있게 해줍니다.

쉘 명령어로 장치에 접속을 한뒤,

플랫폼에 설치된 다양한 명령어를 사용하여 장치의 상태를 확인할 수 있습니다.

top 혹은 ps를 사용하여 장치상태를 확인해보세요 :)


굳이 리모트 쉘에 접속할 필요없이,

쉘명령어만 한 번 사용하여 결과를 보고 싶다면,

sdb shell <명령어> 형식을 사용하면 됩니다.

예를 들어 ps 상황만 체크하고 싶다면,

sdb shell ps를 치면 쉘없이 ps 내용이 바로 출력됩니다.


명령어 4. "install" <pkg_path>

개발시스템에서 빌드한 패키지를 remote로 복사한 후 설치합니다.

패키지만 가지고 있는 경우,

sdb 명령어를 통해 쉽게 복사 & 설치할 수 있겠네요.


명령어 5. "uninstall" <pkg_id>

remote에서 패키지를 삭제할 때 사용할 수 있습니다.

이 때 pkg_id를 정확하게 알아야합니다.

자신이 삭제할 패키지의 ID는 정확히 알아야겠지요?


명령어 6. "push" <local> <remote>

개발시스템에서 빌드한 패키지를 에뮬 혹은 디바이스에 보낼 때 주로 사용합니다.

패키지 뿐만 아니라 각종 파일을 넘기는데 사용하지요.

<local>에는 개발시스템에서 보낼 파일을 기입합니다.

<remote>에는 파일을 받을 장소를 선택합니다.

만약 파일을 받을 디렉토리가 없다면 제대로 푸시되지 않을 수 있으니 미리 만들어주세요.

# sdb push file_to_push.txt /home/developer

위와 같이 file_to_push.txt 파일을 /home/developer 위치에 넣을 수 있습니다.


명령어 7. "pull" <remote> [<local>]

push와 상반되게 리모트 시스템에 있는 파일을 개발시스템으로 가져올 수 있습니다.

<remote>에는 리모트 시스템에 있는 파일을 절대경로로 적어주면 됩니다.

[<local>]을 적지 않으면 현재 디렉토리로 파일을 가져옵니다.


명령어 8. "kill-server" & "start-server"

sdb로 제대로 접속이 안될 경우,

sdb server를 죽였다가 다시 살립니다.

개발시스템과 에뮬 혹은 디바이스가 대부분 제대로 잘 붙는데요,

아주 간헐적으로 알 수 없는 이유 때문에 잘 안붙을 때가 있습니다.

그럴때 서버를 죽였다가 살려보세요. :)


명령어 9. "get-serialno" & "devices"

현재 접속된 디바이스 혹은 에뮬에 대한 시리얼 넘버를 알려줍니다.

여기서 얻은 값을 보고 위에서 설명드린 -s 옵션과 함께 사용하면 됩니다.


명령어 10. "dlog" [<filter_spec>]

개발시스템에 접속한 리모트장치의 상태를 dlog를 통해 엿볼 수 있습니다.

# sdb dlog

위의 명령어로 쉽게 로그를 출력할 수 있지요 :)


이상과 같이 간단하게 sdb의 명령어를 살펴봤습니다.

그럼 오늘도 즐거운 개발하시길... :)


끝_

일개 개발자로서 낯선 플랫폼에 한걸음 다가가기 위해서는,

플랫폼의 철학과 의지를 엿볼 수 있는 SDK를 설치해보아야 합니다.

개발자에게 제공되는 함수를 하나씩 음미하는 것으로,

플랫폼을 이끌어나가는 아키텍트의 판단과 프로그래머의 고민을 엿볼 수 있습니다.

타이젠을 만들고 있는 사람들의 가장 중요한 가치는 무엇일까요.

이 모든 궁금증을 풀기 이전에 오늘은 SDK부터 설치해보고자 합니다.


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


타이젠 SDK를 우분투에 설치하시려는 분은 아래 포스팅을 참고하세요.

[Tizen] 타이젠 SDK 우분투에 설치하기


타이젠 SDK는 공식 홈페이지(https://www.tizen.org)에서 다운로드 받을 수 있습니다.

위에 걸어놓은 링크를 통해 타이젠 홈페이지에 접속해보세요.


공식홈페이지 시작화면 하단을 보면,

"Download the SDK" 버튼을 찾을 수 있습니다.

현재(2015. 5월)까지 공개된 최신버전은 Tizen 2.3입니다.

버튼을 눌러 Tizen SDK 다운로드를 위한 페이지에 들어가보세요.




Tizen SDK로 개발할 수 있는 앱 타입은,

- Web application

- Native application

위의 두 가지라는 사실을 확인할 수 있습니다.

물론, 위의 두 가지 방식이 혼합된 Hybrid type의 앱도 개발할 수 있습니다.


그리고 여느 플랫폼이 제공하는 SDK처럼,

- 코드를 작성하는 Editor

- 컴파일하도록 도와주는 Toolchain

- 개발한 앱을 가상의 환경에서 돌려볼 수 있는 Emulator

- 개발자를 위한 샘플코드와 도큐먼트

위의 컴포넌트들로 구성되어 있습니다.


Tizen SDK는 윈도우, 우분투, 맥OS X에서 사용할 수 있습니다.

여기서는 윈도우 PC에 설치하도록 해보겠습니다.

(우분투나 맥OS X에서도 설치과정은 동일합니다)


Download Tizen 2.3 Rev2 SDK

위의 메뉴에 진입하면 mobile / wearable 앱을 개발할 수 있는 SDK를 설치할 수 있습니다.


Download Tizen SDK for Wearable 1.0.0

위의 버튼을 누르면 wearable 앱을 개발하기 위한 SDK를 설치할 수 있습니다.


여기서는 Tizen 2.3 Revision 2 SDK를 받아,

mobile & wearable 앱을 개발하기 위한 환경을 갖추고자 합니다.



Tizen 2.3 Rev2 SDK 페이지에는,

- Ubuntu 32 bits

- Ubuntu 64 bits

- Windows 7 32 bits

- Windows 7 64 bits

- Mac OS X(Intel)

- Mac OS X(Intel, CLI)

위의 운영체제에서 돌아가는 버전의 SDK를 다운로드 받게 되어있습니다.

자신에게 맞는 운영체제를 선택합니다.


우분투 환경에서는 설치하기 전에 다운로드 받은 파일에 실행권한을 추가해야합니다.

$ chmod +x tizen-sdk_2.3.63_ubuntu-32.bin
$ ./tizen-sdk_2.3.63_ubuntu-32.bin


다운로드 받은 파일을 설치하려고 하면,



위와 같은 팝업이 나타날 수도 있습니다.

위의 팝업은 Java runtime environment(JRE) version 6 이상 버전을 먼저 설치해야 된다는 알림입니다.

JRE를 설치해야 하는 이유는,

Tizen SDK에서 (자바개발자에게 너무나도 친숙한) Eclipse를 사용하기 때문입니다.

Eclipse가 Java로 개발되었기 때문에,

(아래 그림의 Written in Java 참조, wikipedia에서 더 자세한 내용을 볼 수 있습니다.)

Eclipse를 돌리기 위해서는 우선적으로 Java가 돌아갈 수 있는 환경을 구축해주어야 합니다.



이러한 불편함은 Tizen 만의 문제는 아니고,

Eclipse를 설치하고자 하는 모든 플랫폼/환경에서는 항상 발생하는 일입니다.


윈도우에서 JRE를 다운로드 받으려면 오라클 자바 페이지에 들어가야 합니다.

사이트에 접속하여 자신의 환경에 부합하는 Java SE Development Kit을 다운로드 받습니다.

여기서는,

Java SE Development Kit 8u45의 Windows x64(jdk-8u45-windows-x64.exe)를 다운로드 받습니다.

다운로드를 받고 설치를 시작해보세요.


Java SE Development Kit 8 Update 45를 설치한다는 문구를 확인할 수 있습니다.

Next를 눌러 다음으로 넘어갑니다.



그리고 설치를 시작합니다.

설치과정에 어려운 점은 전혀 없습니다.

설치를 완료한 후,

다시 tizen-sdk_2.3.63_windows_64.exe로 설치를 시도합니다.

그러면, 또 이상한 팝업이 하나 나옵니다.


위의 팝업은 자바를 설치한 직후,

자바를 사용하기 위한 환경변수를 설정해주지 않아서 나타났습니다.

환경변수(PATH)를 설정해주는 방법은 여기를 참고하면 됩니다.


윈도우 7의 경우는 아래처럼 하면 됩니다.

  1. 시작 메뉴에서 컴퓨터를 선택합니다.
  2. 상황에 맞는 메뉴에서 시스템 속성을 선택합니다.
  3. 고급 시스템 설정 > 고급 탭을 누릅니다.
  4. 시스템 변수 아래에서 환경 변수를 누른 다음 PATH를 찾아 누릅니다.
  5. 편집 창에서 PATH 값에 클래스 위치를 추가하여 PATH를 수정합니다. PATH 항목이 없으면 새 변수를 추가하고 이름으로 PATH를, 값으로 클래스 위치를 추가하도록 선택할 수도 있습니다.
  6. 명령 프롬프트 창을 다시 열고 Java 코드를 실행합니다

여기서는 PATH에 아래와 같은 경로를 추가해주었습니다.

C:\Program Files (x86)\IDM Computer Solutions\UltraEdit\;C:\Program Files\Java\jdk1.8.0_45\bin


이 단계까지 마쳤으면,

다시 tizen-sdk_2.3.63_windows_64.exe로 설치를 해봅니다.



아직 설치한 SDK가 없으므로 Uninstall 버튼은 비활성화되어있습니다.

Advanced 버튼을 누르면,

패키지를 다운로드 받을 수 있는 서버를 변경하거나 SDK Image로 직접 설치할 수 있는 메뉴가 나옵니다.

여기서는 따로 설정하지 않고 그냥 Install 버튼을 누르도록 합니다.



Mobile profile이나 Wearable profile을 선택할 수 있는 화면이 나옵니다.

여기서는 Custom에 아래처럼 진입하여 Mobile / Wearable / Other tools를 모두 설치합니다.

하지만, Mobile이나 Wearable만 개발하고자 한다면,

하나의 profile만 선택하여 인스톨해도 무방합니다.



Next를 눌러 다음 화면에 진입합니자.

소프트웨어 라이센스에 대한 설명이 나옵니다.



자세히 읽어보고...?

I agree를 눌러 다음으로 진행합니다.

그러면 무려 2.5기가 이상을 다운로드 받고 설치한다는 메시지가 나옵니다.



사이즈가 사이즈이니 만큼,

인스톨하는데 상당한 시간이 소요될 예정입니다.


인스톨 버튼을 눌러보세요.

인텔 CPU를 사용하는 컴퓨터에서는,

Intel Hardware Accelerated Execution Manager(HAXM)를 설치하라는 메시지가 나옵니다.

HAXM을 설치하면, 에뮬레이터를 보다 빠르게 구동할 수 있는 환경이 갖춰집니다.



HAXM 또한 Tizen만의 사항은 아니고,

다른 플랫폼 - 안드로이드 SDK에서도 에뮬레이터 성능 확보를 위해 설치를 제안합니다.


HAXM까지 설치를 마치면,

이제 본격적인 다운로드 & 인스톨의 과정을 거칩니다.



처음에는 멍하니 모니터를 바라보며 %가 올라가는 것을 바라보고 있다가,

그간 밀린 쓰레기 분리수거를 위해 1층에 내려갔다 왔습니다.

그래도 여전히 인스톨 중이네요.


한참을 기다리니 드디어 인스톨이 완료되었습니다.



자, 이제 정말 설치완료.


설치과정은 타 플랫폼과 대동소이해보였고,

특별히 어려운 점은 없었습니다.


자, 이제 SDK를 사용해보겠습니다.

일단 잠 좀 자고,

다음 시간에 계속 해보겠습니다.


끝_


* 타이젠 관련 블로깅

"Tizen Store 182개국 오픈"에 대한 각지 반응

"Tizen Store에 앱을 팔아보겠다는 의지" Tizen Store 계정 만들기

Tizen SDK 설치하기, "생각보다 쉽다"



+ Recent posts