2014. 10. 2. 01:49

모든 UI어플리케이션은 메인 메뉴와 타스크 전환자에서 실행이 가능하며 서비스 어플리케이션은 다른 어플리케이션에 의해서 실행될 수 있다.  또한 모든 어플리케이션(UI와 서비스 어플리케이션)은 디바이스가 등록된 조건과 부합된 상태가 되었을 때 실행될 수 있다. (예: 특정 시간, NFC관련 데이터 수신 등)  어플리케이션이 실행되면 프로세스 메니져(Process Manager)는 필요한 라이브러리와 어플리케이션의 실행 바이너리를 메모리에 적제하고 어플리케이션의 인스턴스가 시작 포인트- OspMain() 메소드 - 에서 생성되고 실행된다. 


어플리케이션의 라이프 사이클

생성되어 실행된 모든 UI어플리케이션과 서비스 어플리케이션은 다음 그림의 왼쪽과 같은 기본적인 라이프 사이클을 갖는다.  UI어플리케이션의 경우, 추가적으로 우측의 프레임 라이프 사이클을 포함하며 생성하된 AddFrame() 메소드가 호출 될 때 초기화(OnInitializing) 된다.

어플리케이션이 실행되면 OnAppInitializing() 이벤트 핸들러가 호출되고 이때 프레임이 추가된다. 만약 실패하면 어플리케이션이 종료된다.



어플리케이션의 상태 전환
모든 타이젠 네이티브 어플리케이션들은 위 그림의 왼쪽 라이프 사이클의 4개 이벤트 핸들러에 대응하는 4가지 상태를 갖는다.


1. 초기화 중 상태(Initializing)
- 어플리케이션 프레임워크가 어플리케이션을 초기화 한다. (Tizen::App::App)
- 이전 실행에서 저장된 어플리케이션의 데이터가 복구될 수 있다.(Tizen::App::AppRegistry 클랫)
- UI어플리케이션의 경우, 어플리케이션의 프레임이 생성되어야 한다. (Tizen::App::UiApp)

2. 실행 중 상태(Running)
- UI어플리케이션이 실행중이라면 포그라운드나 백그라운드 모드간 전환이 가능하고, 전환 과정에서 어플리케이션의 프레임의 상태가 변경된다.

3. 종료 중 상태(Terminating)
- 어플리케이션이 리소스를 해제하고 상태를 저장한다.

4. 종료 상태(Terminated)
- 어플리케이션 프레임워크가 메모리로부터 어플리케이션을 제거한다.

프레임의 상태 전환 
어플리케이션이 초기화 된 후에는 실행 상태가되고 프레임은 활성화(Activated), 비활성화(Deactivated), 최소화(Minimized)와 같이 3가지 중 한가지 상태를 갖게 된다. End 키를 누르거나 시스템 리소스가 부족할 경우, 어플리케이션은 종료될 수 있으며 OnAppTerminating 이벤트 핸들러가 호출되어 어플리케이션의 리소스를 해제하고 어플리케이션이 프레임을 삭제하면 프레임의 상태는 파괴화(Destroyed)된 상태가 된다.


1. 활성화 상태(Activated) : 입력 디바이스로부터 이벤트를 받고 화면에 보여지는 상태
2. 비활성화 상태(Deactivated) : 다른 앱이 활성화 상태가 되면 활성화 상태 앱은 비활성화 상태가 된다. 이 상태에서 입력은 받을 수 없다. 비활성화 상태의 앱은 부분적으로 화면에 보여질 수 있다. (예를 들어 시스템 팝업창이 뜨면-전화가 오거나 알람이 울리면- 앱은 비활성화 상태가 된다.)
3. 최소화 상태(Minimized) : 새로운 프레임이 기존 프레임을 완전히 덮으면 기존 프레임은 최소화 되면 화면에서 사라진다. (예: 홈키가 눌렸을 경우, 다른 UI애플리케이션이 실행되었을 경우) 최소화 상태가 되면 3D또는 애니메이션 작업과 같은 그래픽 처리는 중단되어야 하며 불필요한 리소스는 해제되어야 하고 미디어 처리와 센서 관리는 중단되어야 한다.  따라서 최소화 상태에서 다시 활성화 상태가 되면 중단되었던 작업들이 재시작되어야 한다.
4. 파괴화 상태(Destructed) : Tizen::App::App 클래스의 Terminate()메소드가 호출되거나 시스템의 리소스(메모리 또는 배터리 파워)가 부족한 경우 앱이 종료될 수 있다.  앱의 종료는 OnAppTerminating()이벤트 핸들러에 의해서 관리된다.

Posted by 모바일헌터
2014. 9. 24. 17:10

위치기반으로 폰사용 프로파일을 자동으로 조정하여 주는 타이젠 어플을 제작하고 있습니다.
 iOS와 Android로도 제작을 진행할 예정입니다.

git 저장소: https://github.com/mobilehunter/passion

in-door에서는 비콘을 이용하여 좀 더 정밀한 지원을 할 예정입니다.


Posted by 모바일헌터
2014. 9. 19. 03:42

[ Application Settings Editor ]

Application Settings는 각 어플리케이션을 위하여 사용자의 설정을 저장하기 위한 기능이다.  

- "Application Settings"는 IDE에서는 Project의 setting디렉토리 밑에 위치하는 setting.xml파일에 포함


- 실제 폰에서는 Settings의 Downloaded applications 메뉴에서 다운로드된 애플리케이션들의 설정정보를 보고, 수정할 수 있다.




Application Settings Editor를 이용하여 setting.xml파일을 만들어보자.

- File → New → Other → Tizen → Tizen App Setting File

- Project Explorer view에서 프로젝트를 선택하고 왼쪽 마우스 버튼을 클릭하고 New→Tizen App Setting File

XML파일은 다음과 같은 엘리먼트들로 구성되며 파일이 처음 생성되었을 경우 <settings>가 구성되어 있으며 <settings>에서 <setting>을 "Add Setting ChildElement" 옵션을 이용하여 추가할 수 있다.

 엘리먼트

 내용

 <settings>

 setting.xml의 루트 엘리먼트 

 <setting>

 settings를 표기 위한 각 페이지를 위한 엘리먼트 (그런데 실제로는 1개의 setting만 허락됨으로 굳이 <settings>내에 <setting>를 다시 표기하는 이유는 모르겠다.

 <group>

아래의 setting값들을 그룹으로 묶어서 표기할 수 있다.

 <bool>

토글 컨트롤로 on/off를 표기한다.

 <integer>

스핀 컨트롤로 일정 범위의 수를 표기한다.

 <string>

수정가능한 텍스트 컨트롤로 문자열을 표기한다. 

 <label>

수정이 불가능한 텍스트 레이블 컨트롤로 문자열을 표기한다. 
 <expandlist>

여러 조건들 중 한가지를 고를 때 라디오 버튼들의 그룹을 표기한다.

 <expanditem>

expandlist의 각 조건들의 문자를 라디오 버튼과 표기한다. 

 <launch>

App 컨트롤을 실행하기 위한 엘리먼트이다. (...)





Posted by 모바일헌터
2014. 9. 16. 02:24

91년 처음 C언어 책을 펼쳤을 때 제일 먼저 만들어 보았던 "Hello World" 어플을 만들어 봅시다.


여러분이 프로그램책을 한번이라도 읽으신 경험이 있으시다면 Hello World 프로그램을 만들어 보셨을 것입니다.  아마도 "Hello World" 앱을 작성하면서 기본적인 언어의 구조를 파악하고 개발환경에 대한 소개를 접하며 컴파일을 통해 자신의 첫번째 앱을 손쉽게 만들어 봄으로써 자신감을 얻으실 수 있을 것이라고 생각합니다.


Tizen SDK 2.2.1을 기준으로 작성하였다.



타이젠 SDK설치  


만약 Tizen SDK를 아직 설치하지 않으셨다면 "0-1. 타이젠 SDK설치"를 참조하시어 설치를 하신 후에 다음을 진해하십시오.


목표를 확인하자!


프로그램을 실제로 만들기 전에 우리가 만들 "Hello World" 앱을 한번 살펴보자. 간단하게 타이틀에 Hello World!를 표기하고 OK 버튼을 중앙에 위치시켜 보았다. 이 복잡하지 않은 앱이 여러분의 첫번째 타이젠 네이티브 앱이 될 것이다.





Tizen IDE를 실행


Tizen IDE()를 SDK가 설치된 폴더 하위 폴더인 ide 폴더 안에서 찾아서 실행하자!

 Workspace Launcher에서 Workspace의 위치를 설정하자! Tizen IDE에서 생성하는 프로젝트들이 저장될 폴더를 workspace라고 한다.


 만약 workspace를 처음 선택하신 것이라면 다음과 같은 환영 창을 보실 수 있다.


새로운 프로젝트를 생성하자


 새로운 프로젝트를 생성하자

- menu에서 file  new →  (project...  → tizen  → ) Tizen Native Project 혹은
- Project Explorer에서 Secondary Click  →  new →  (project...  → tizen  → ) Tizen Native Project


  Template를 선택하고 Tizen Native 트리에서 Form-based Application을 선택한다. 

- With SceneManager나 Without SceneManager 문제가 안된다. 나중에 SceneManager에 대해서 설명할 예정이다.

 템플릿으로부터 workspace 디렉토리에 소스가 생성되었다.



UI Builder를 이용하여 리소스를 수정하자


 "UI Builder"를 실행해보자!
- Project Explorer에서 HelloWorld→res→screen-size-normalIDL_FORM.xml 파일을 더블클릭 하거나

- Project Explorer에서 HelloWorld에서 오른쪽 마우스를 클릭하고 메뉴에서 "Run Native UI Builder"를 선택하자.


 UI를 수정하자!

- 외쪽 상단의 "Outline" view에서 IDL_FORM을 선택하고 Header를 선택하거나 중앙의 "Form" view에서 "Hello Tizen!"이라고 적혀있는 Head 영역을 직접 클릭해보자.

- Header가 선택된 상태에서 좌층 하단의 "Properties" view에서 Title Text를 "Hello Tizen!"에서 "HelloWorld!"로 변경하고 저장하자.

HelloWorld를 빌드하자


  Project Explorer에서 HelloWorld Project를 선택하고
- menu → Project   Build Project 혹은
- F10 혹은
- 오른쪽 마우스 버튼을 클릭하여 프로젝트를 빌드하자.


  빌드가 정성적으로 에러없이 종료 되었다면 애뮬레이터에서 HelloWorld 앱을 테스트해보자.

- 앱을 테스트 하기 위해서는 애뮬레이터를 실행하거나 실제 디바이스를 연결해야 한다.

- 애뮬레이터나 실제 디바이스에 앱을 설치하기 위해서는 


애뮬레이터를 연결하자


  Connection Explorer view에서 애뮬레이터 메니져 버튼을 클릭하여 실행하자.

  새로운 VM을 생성하기 위해서 + 버튼을 누르고 VM의 이름을 Detail에서 입력하고 Confirm 버튼을 누르자.

  생성된 VM하단의 ▶버튼을 클릭하여 애뮬레이터를 실행하자. 

  다으모가 같이 애뮬레이터가 실행된다.


 애뮬레이터가 실행되면 Connection Explorer가 어떻게 변경되는지 확인해보자.


개발자/판매자 Certificate를 생성 등록


 사이닝 관련 작업을 수행하지 않았다면 다음과 같은 에러 다이얼로그를 보게된다.

     [타이젠 앱 보안관련 아키텍쳐]

  Preferences > Security Profiles 를 선택하시고 개발자와 배포자 시그니쳐를 생성해보자!

  - Tizen SDK → Security Profiles를 선택하고 Security Profiles를 추가해보자. (Add 버튼 클릭!)

 Profile Name을 입력하자.

 Generate 버튼 클릭

Hello World 프로그램을 실행해보자.


 Project Explorer에서 HelloWorld를 선택하고 

    * menu에서 Run → Run 혹은
    * ⌘ F11 혹은
    * 오른쪽 마우스를 클릭하고 Run As 
  1. Tizen Native Project



수고하셨습니다.

  


Posted by 모바일헌터
2014. 9. 16. 02:18

모바일 디바이스 시스템과 유저 개인적인 데이터를 효과적으로 보호하기 위하여 타이젠 보안 아키텍쳐는 권한(privileges)과 리눅스의 기본 보안 모델의 앱 사이닝 기반의 보안 아키텍쳐를 사용한다.

  • 권한(Privileges) : 보안에 민감한 API들을 사용할 경우 요청된 권한을 정의해야만 한다.
    • 안드로이드의 Menifest에서 정의되는 Permission에 대응하는 구조이다.
  • 앱 사이닝(Application signing) : 타이젠 앱은 개발자와 배포자의 시그니쳐에 의해서 서명되어야 한다.
    • 개발자 시그니쳐 (Author Signature)
    • 배포자 시그니쳐(Distributor Signature)
  • 사생활관련 API를 위한 예외처리 관리(Exception handling for privacy-sensitive APIs)

[Check API and Privilege Violations]
API와 Privilege의 위한 사항에 대해서 Project 메뉴에 "Check API Violation", "Check Privilege Violation", "Check API and Privilege Violations" 메뉴를 활용하여 개발 중에 확인 할 수 있다. 

체크 결과는 Problem 뷰에 Infos 트리에 표기된다.

  • API Violation Type
    • API 버전 경고 (API version alarm)
      • API가 특정 버전 이후부터 제공되기 시작한 경우
        ☆ 특정 버전 이후부터 제공 되었기 때문에 manifest.xml의 Basic 탭에서 "Min API version"을 조정하거나 해당 API를 사용하지 않는 것이 좋다.
    • API 호환성 경고 (Compatibility alarm)
      • API가 버전별 호환성에 문제가 있는 경우
        ☆ 버전 별로 호환이 되지 않기 때문에 문제점을 확실히 파악하고 사용해야 한다.
    • API 삭제 경고 (Deprecated API alarm)
      • API가 특정 버전 이후부터 더 이상 사용되지 않는 경우
        ☆ 하위 호환성을 고려하여 실제로 삭제되는 경우는 드물다. 따라서 컴파일이되지만 중요도가 떨어져 더 이상 사용되지 않아 앞으로 사라지게 될 API이므로 가능하면 사용하지 않는 것이 바람직하다
  • Privilege Violation Type
    • Undefined privilege alarm
      • privilege의 추가를 필요로 하는 API를 사용하였지만 menufest에 추가되지 않은 경우
        ☆ menifest파일을 오픈하여 Privileges탭에서 해당 privilege를 추가한다.
    • Unused privilege alarm
      • menufest에 privilege를 추가하였지만 추가된 privilege에 속하는 어떤 API도 사용하지 않은 경우
        ☆ 불필요한 privilege는 삭제하고 만약 나중에 privilege에 속하는 API를 사용 예정이라면 무시한다.


[개발자와 배포자 시그니쳐를 생성해보자!]

1. Preferences를 실행하자.
  - menu → Tizen  IDE Preference or ⌘ + ,

  - Tizen SDK → Security Profiles를 선택하고 Security Profiles를 추가해보자. (Add 버튼 클릭!)

  - Profile Name을 입력하자.

- Generate 버튼 클릭






Posted by 모바일헌터
2014. 9. 16. 00:20

타이젠은 표준기반 오픈소스 플랫폼이다.  스마트 폰을 시작으로 태블릿, 웨어러블(시계), 자동차등 다양한 장비를 지원할 예정이다. 다음은 타이젠의 아키텍쳐에 대한 그림이다.


타이젠의 전신인 SLP 초기에는 Native Application만을 GTK+ 기반으로 지원하였으며, 그 후 EFL을 추가하면서 UI Framework를 강화하고 Web Runtime을 통해 Web Application을 지원하였지만 타이젠은 Web과 Native Application을 위해 Framework으로 분리하고 Core에 각종 Framework들을 Web과 Native Framework 이 공유할 수 있는 구조를 갖추었다.  

지난 6월2일 Tizen 2.3 Alpha가 릴리즈되었으며 다음의 사이트에서 확인할 수 있다.
> Tizen 2.3 Alpha SDK and Source code release 

스마트 폰에서는 위와 같은 구조이지만 웨어러블(시계)와 TV에서는 Natvie Application을 지원하지 않고 Web Application만을 지원한다.  Camera의 경우도 Web Application으로 UI를 구성한 듯 한다. 자동차는 인텔의 주도하에 Qt쪽으로 기우는 형국이다.  뭔가 표준화를 지향한다기 보다는 제각각 따로 놀고 있는 분위기이다.


SDK 2.2 버전을 OSX 에 설치하기에 대한 글



Posted by 모바일헌터
2014. 9. 14. 21:51

"삼성전자 스마트 TV 앱스 개발자 포럼"에서 타이젠기반 삼성 TV개발을 위한 SDK를 다운 받아 아 설치해보자. 아직은 스마트 TV 앱스 개발자 포럼이 완전하게 타이젠을 지원하기 위한 준비가 되어 있다고 보기는 힘들지만 일단 설치를 하고 기본적인 사항들을 살표보자.

SDK 1.0 Beta Dwonload

우측의 SDK 1.0 Beta Download 이미지를 클릭하고 SDK 다운로 사이트로 이동하자

TIZEN TV SDK 1.0b

Mac OS를 위한 SDK를 다운로드 하고 인스톨 메니져를 실행하자.

압축파일을 해제하고 

터미널에서 chmod를 이용하여 "inst-manager.bin"에 실행모드를 추가하고 sudo를 이용하여 실행하자. 
$ chmod +x ./inst-manager.bin
$ sudo ./inst-manager.bin

물론, inst-manager.dmg 파일로 부터 설치 관리자를 실행할 수 있지만 현재 버전은 약간의 문제가 있는 듯 하다. 다음과 같은 경고 창을 발생하며, "예"를 선택하고

이미지를 임의로 선택하여 주어도

intelhaxm을 설치하기 위해서 권한을 요청하는 루팅이 포함되어 있는 것 같지 않아 다음과 같은 실패화면을 보여주게 된다.

따라서, 1.0b를 설치하신다면 터미널에서 "inst-manager.bin"을 실행하여 설치하실 것을 권한다. 설치 관리자 초기 화면에서 "Next" 버튼을 클릭하면 다음과 같이 SDK 설치 위치를 선택할 수 있다. 

위치를 설정하고 "Next" 버튼을 누르시면 정상적으로 설치가 되는 것을 보실 수 있으며

금방, 설치가 완료된다.






Posted by 모바일헌터
2014. 9. 10. 21:17

안드로이드 혹은 타이젠 에뮬레이터가 OSX 10.9와 Windows 8.1에서 정지하는 현상이 있으시다면 HAXM의 버전을 확인해보세요. 이를 해결하기 위해서 2013년 11월 27일  Intel Hardware Accelerated Execution Manager (Intel® HAXM) 의 핫픽스 버전이 발행되었다. 현재는 2014년 4월 15일에 업데이트된 1.0.8 버전이 최신입니다.

다른 플랫폼 사이트에서는 최신 버전의 링크를 제공하지만 타이젠에서는 이전 버전을 제공하여 최신 OS에서 문제가 발생하고 있습니다. 타이젠 사이트에서 HAXM을 다운로드 받아서 설치하셨다면 다음의 사이트에서 핫픽스 버전을 다운로드 받으시기 바랍니다.

참고 사이트: Android emulator freezing OSX 10.9 
Intel hardware Accelerated Execution Manager [핫픽스 버전 다운로드]

국내 사이트들에 아쉬움이 많이 남는 것을 외일까요? 

Posted by 모바일헌터
2014. 9. 4. 19:23

타이젠 메인 사이트(https://www.tizen.org)에 접속하여 최신 타이젠 SDK의 버전을 확인가능


현재(2014년9월4일) 최신 타이젠 SDK 의 버전은 2.2.1입니다. 


SDK다운로드 사이트로 이동하시어 사용하시는 운영체제에 맞는 SDK 설치관리자를 다운로드 받으시면 됩니다.  

사전 준비 작업을 진행할 수 있도록 합시다.  (참조: 타이젠 SDK를 위한 필수구성 요소)

  1. SDK이미지 다운로드
    • 설치 관리자를 통해 설치를 할 경우 많은 양의 데이터를 Package Server로부터 다운로드 받게 됩니다. 아래에서 설명드리겠지만 SDK이미지를 미리 다운로드 받아두시면 설치시간을 단축시키실 수 있습니다.
  2. 자바설치
  3. 인텔 하드웨어 가속 실행 관리자(HAXM) [윈도우즈 혹은 맥 사용자]
    • HAXM은 윈도우즈 혹은 OSX를 사용하는 인텔 프로세서가 탑재된 시스템에서 사용 가능 합니다. (대부분의 시스템이 해당 기능이 Disabled된 상태로 출시가 되므로 BIOS에서 해당 기능을 재설정 해주어야 합니다.  "인텔 하드웨어 가속 실행 관리자"사이트를 통해 HAXM만을 따로 설치치 가능합니다. )
  4. 맥에서 Tizen SDK를 설치할 경우 설정하여줄 것이 하나더 있습니다.

 "시스템 환경설정"(System Preferences)에서

"보안 및 개인정보"를 클릭하시고 "Mac App Store 및 확인된 개발자" (Mac App Store and identified developers) 로부터 다운로드한 응용프로그램만 허용된다는 항목을 

"모든 곳(Anywhere)"으로 변경 후 다시 설치 관리자를 실행해보세요.

그렇지 않으면 다음과 같은 에러 메시지를 보시게 됩니다.


※ 당황스럽네요. HAXM이 Windows 8.1과 OSX 10.9에서 멎어 버리는 증상이 있습니다. 해당 OS 버전을 사용하고 계시다면 다음의 사이트에서 핫픽스 버전을 다운로드 받으시고 설치하시기 바랍니다.  [핫픽스 버전 다운로드]

Step0. 이제 설치 준비가 완료 되었습니다.

Step1. 설치 관리자를 실행합시다.

Step2. [Advanced] 버튼을 클릭하시고 

Step3. 미리 다운로드해 놓은 SDK image를 선택해주세요.


Step4. [OK] 버튼을 누르시면 압축을 풀게 됩니다.


Step5. [License Agreement]에 동의를 하시고 [Next] 버튼을 클릭하시고

Step6. 설치 유형을 선택하시고 [Next] 버튼을 클릭하세요.

Step7. 설치 위치를 선택하시고 [Install] 버튼을 클릭하시면

Step8. 설치가 진행됩니다.

Step9. HAXM을 설치하기 위해서 사용자의 패스워드를 입력합니다.

특별한 에러 메시지 없이 설치를 마무리 하셨다면 이제 개발 준비가 완료된 것입니다. 곧 개발 관련 자료들도 업로드 할 수 있도록 하겠습니다.


Posted by 모바일헌터