본문 바로가기

IT/Tizen

[Tizen] 타이젠 SDK 네이티브 앱 디렉토리 구조

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

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