천재태지의 세상 돌려보기

seoz.egloos.com

- About Me... - Enlightenment, EFL - 타이젠 Tizen - 주영이의 2009 바이크 여행기



[Tizen][번역] 타이젠 1.0 (Larkspur) SDK와 EFL을 이용해 타이젠 네이티브 애플리케이션 개발하기 ├ 타이젠 Tizen

[ 타이젠 게시물 목차 : http://seoz.egloos.com/3872102 ]

(타이젠 2.0 부터는 SBS 대신 GBS 빌드 도구를 사용합니다. 이 문서는 타이젠 1.0에만 유효합니다.)

[역자 서문]
안녕하세요? 천재태지 서주영입니다.

마이클 쉘던이라는 분이 작성한 "타이젠 1.0 (Larkspur) SDK와 EFL을 이용해 네이티브 애플리케이션 개발하기"[1]를 번역해봤습니다. 마이클 쉘던에게 번역을 하겠다고 승락을 받은지는 꽤 됐는데 이제야 글을 올리게 되었습니다.
이 글은 타이젠 1.0 SDK를 이용해서 EFL 네이티브 애플리케이션을 개발하는 첫번째 가이드이자 유일한 가이드라고 볼 수 있습니다.

마이클 쉘던은 그가 미고(MeeGo) 플랫폼에서 QT로 작성한 Eyrie라는 음악 인식 애플리케이션을 타이젠 플랫폼에 EFL로 하루만에 포팅하는 후기[2]를 올리면서 사람들의 주목을 받았습니다. 물론 핵심 코드는 재사용을 할 수 있었고, 대부분 GUI 부분을 작업했는데요, Eyrie의 GUI가 단순해서 그런지 하루만에 포팅을 했다고 합니다. (참고로 그는 EFL을 처음 접했습니다.)

이 가이드는 현재 공개된 타이젠 SDK 1.0을 기준으로 하고 있기 때문에 스크래치박스2라는 환경에서 애플리케이션을 빌드하고 있습니다. 하지만 알려진 바[3]와 같이 타이젠은 추후에 OBS를 사용할 예정이기 때문에 나중에는 이 가이드도 수정되어야 할 것 같네요.


타이젠 1.0 (Larkspur) SDK와 EFL을 이용해 네이티브 타이젠 애플리케이션 개발하기

마이클 쉘던

개요

타이젠에서 EFL(Enlightenment Foundation Libraries)을 이용하면 네이티브(native) 애플리케이션을 개발할 수 있다. 하지만 SDK 1.0 배포판에서는 이 기능이 특별히 노출되지 않았고 HTML5와 자바스크립트 기반의 애플리케이션 개발에 초점이 맞추어져 있다. HTML5나 자바스크립트가 좋긴 하지만 이들이 모든 애플리케이션에 적합한 것은 아니다. 타이젠을 자세히 이해하기 위해 미고 하마탄(MeeGo Harmattan, 노키아의 N9에 사용됨) 기반으로 개발한 Eyrie라는 애플리케이션을 타이젠으로 포팅하기로 했다.

Eyrie는 분명히 웹앱에 적합하지 않다. Eyrie는 마이크를 이용해 음성 샘플 원본을 가져와 음향 정보(fingerprint)를 추출하기 위해 시그널 프로세싱을 해야 한다. 내가 아는 한 타이젠 웹 API로는 이렇게 하위단에서 음성 입력을 처리할 수 없다. 만약 웹 API로 이런 것들이 가능하다고 하더라도 정보(fingerprint)를 처리하려면 EchoPrint codegen 라이브러리를 자바스크립트로 재작성해야 한다. 

하지만 EFL을 이용하여 Eyrie를 타이젠으로 포팅하는데 24시간이 채 걸리지 않았다. 고맙게도 미고와 타이젠 모두 멀티미디어 프레임워크로 GStreamer를 사용하는데다 EchoPrint codegen 라이브러리가 두 플랫폼에서 쉽게 컴파일이 됐기 때문에 결국 해야할 것은 QML로 작성된 UI를 EFL로 바꾸는 것 뿐이었다. 아래에 타이젠 에뮬레이터에서 돌아가는 초기 포팅 버전을 담았다. (나에겐 실제 개발 장비가 없다.) UI는 아직 다듬어지지 않았지만 기본 기능은 동작한다.


< EFL로 타이젠에 포팅한 음악 인식 애플리케이션 Eyrie 영상 >

이 강좌에서 아주 간단한 EFL 애플리케이션을 생성, 빌드, 패키징, 배포해보겠다. 이를 통해 타이젠 SDK 1.0에서 네이티브 애플리케이션 개발 흐름에 대한 감을 잡기 바란다.

스크래치박스(Scratchbox)

분명하지는 않지만 타이젠 SDK는 IDE를 통해 패키지 빌드와 관련된 스크래치박스 환경을 지원하고 있다. 순전히 IDE를 이용해 EFL 애플리케이션을 작성할 수도 있지만, IDE를 무시하고 스크래치박스를 직접 사용하는 방법이 더 쉽다. 그렇게 되면 여러분이 익숙한 다른 에디터나 IDE를 사용할 여지가 생긴다. 타이젠 IDE만 가지고 작업을 하려거든 '타이젠 플랫폼 개발자 가이드'[4]를 참고 하기 바란다. 도움이 될 것이다.

세부적인 설명을 시작하기에 앞서 타이젠 SDK를 ~/tizen_sdk 디렉토리에 설치했다고 가정하겠다.

스크래치 박스 환경에 접속하기 전에 어떤 타겟(targets)을 사용가능한지 확인해야 한다. 아래 명령어를 실행해보자. (역자 주: ~/tizen_sdk/SDK/build-system/toolchains/scratchbox2/bin/를 PATH 환경 변수에 추가하면 전체 경로를 사용할 필요 없이 편리하게 명령어를 사용할 수 있다.)
~/tizen_sdk/SDK/build-system/toolchains/scratchbox2/bin/sb2-config -l
타이젠 SDK 1.0에서는 아래와 같은 결과가 나왔다.
(역자 주: 만약 아무 결과가 나오지 않는다면 Tizen SDK를 실행해서 Tizen Project를 생성한 후, 한번 빌드하자. 그러면 아래와 같은 타겟이 생성된다.)
 
tizen-device-1.0.sb2_gcc45sbox2.armel.cdeb
tizen-device-1.0.sb2_gcc45sbox2.armel.platform
tizen-emulator-1.0.sb2_gcc45sbox2.i386.platform

(역자 주 : 역자도 같은 명령을 실행해본 결과 아래와 같은 결과가 나왔다.
tizen-device-1.0_gcc45sbox2.armel.cdeb
tizen-device-1.0.sb2_gcc45sbox2.armel.cdeb
tizen-device-1.0.sb2_gcc45sbox2.armel.platform
tizen-emulator-1.0.sb2_gcc45sbox2.i386.cdeb
tizen-emulator-1.0.sb2_gcc45sbox2.i386.platform
진하게 표시한 부분이 마이클 쉘던과 다른 부분이다.)

나는 x86에서 에뮬레이터를 사용하고 있기 때문에 tizen-emulator-1.0.sb2_gcc45sbox2.i386.platform 타겟을 사용하겠다. 실제 장치에서 실행가능하도록 패키징을 하려면 아래 명령에서 이 부분을 armel 타겟으로 바꿔야 한다. 두 종류의 armel 타겟이 왜 별도로 존재하는지 모르겠지만 둘 다 사용 가능하리라 생각한다.

일반적인 사용자로서 스크래치박스에 접속하려면 다음과 같이 한다.
~/tizen_sdk/SDK/build-system/toolchains/scratchbox2/bin/sb2 -t tizen-emulator-1.0.sb2_gcc45sbox2.i386.platform
이 환경에서 빌드하고 패키지를 수정하는 일을 완벽하게 할 수 있다. 스크래치박스에서도 홈디렉토리에 접근 가능하지만, 홈디렉토리를 제외한 디렉토리는 읽기 속성 밖에 주어지지 않아서 새로운 패키지를 설치할 수 없다.

패키지를 설치할 수 있는 세션을 시작하려면 아래와 같이 한다.
~/tizen_sdk/SDK/build-system/toolchains/scratchbox2/bin/sb2 -e -R -t tizen-emulator-1.0.sb2_gcc45sbox2.i386.platform
이 환경은 패키지를 설치하는데만 적합하다. 대부분의 컴파일 도구를 사용할 수 없기 때문에 일반적인 개발에는 적합하지 않다. Elementary 툴킷을 이용해서 간단한 EFL 애플리케이션을 작성해보겠다. 우선 Elementary 개발 패키지를 설치해야 한다.
apt-get install libelm-dev
스크래치박스 환경은 데비안에 기반하고 있기 때문에 스크래치박스에서 대부분의 데비안 도구를 사용할 수 있다. 그래서 Elementary 패키지 이름을 정확하게 모른다면 다음과 같이 패키지 이름을 검색할 수 있다.
apt-cache search elementary
검색된 결과에서 원하는 패키지 이름을 찾을 수 있다. 이클립스 기반 IDE에서 기본 툴바에 패키지를 관리하는 메뉴가 있긴 하지만 패키지를 검색하는 기능은 없는 것 같다. 그래도 스크래치박스를 사용하지 않고 IDE만 사용하려고 한다면 도움이 될 것이다.

Elementary

이제 에뮬레이터와 실제 장치를 대상으로 애플리케이션을 빌드할 수 있는 환경을 구축했다. 이 강좌에서는 레이블을 출력하는 아주 간단한 Elementary 애플리케이션을 만들어보겠다.
#include <elementary.h>

static void on_quit(void *data, Evas_Object *obj, void *event_info) {
        elm_exit();
}

EAPI int elm_main(int argc, char *argv[]) {
        Evas_Object *win, *bg, *box, *lbl;

        // 윈도우 생성
        win = elm_win_add(NULL, "eflexample", ELM_WIN_BASIC);
        elm_win_title_set(win, "Tizen EFL Example");
        evas_object_smart_callback_add(win, "delete,request", on_quit, NULL);

        // 배경 생성
        bg = elm_bg_add(win);
        evas_object_size_hint_weight_set(bg, 0.0, 0.0);
        elm_win_resize_object_add(win, bg);
        evas_object_show(bg);

        // 레이블을 배치할 박스 생성
        box = elm_box_add(win);
        elm_box_horizontal_set(box, EINA_FALSE);
        evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, 0.0);
        evas_object_size_hint_align_set(box, EVAS_HINT_FILL, 0.0);
        elm_win_resize_object_add(win, box);
        evas_object_show(box);

        // 레이블 생성
        lbl = elm_label_add(win);
        evas_object_size_hint_weight_set(lbl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
        elm_object_part_text_set(lbl, NULL, "Hello Tizen!");
        elm_box_pack_end(box, lbl);
        evas_object_show(lbl);

        // 윈도우 표시
        evas_object_show(win);

        // Elementary 메인 루프 시작
        elm_run();

        return 0;
}

ELM_MAIN();
~/src/tizen/eflexample 디렉토리에서 작업을 한다고 가정하고 위 소스코드를 ~/src/tizen/eflexample/eflexample.c 에 저장한다.

Elementary에 대한 자세한 정보는 'Elementary 위키[5]'페이지를 참고하기 바란다. (역자 주: Elementary는 EFL의 위젯 라이브러리이다.)
이 예제를 빌드하기 위해 Makefile을 사용하겠다. 복잡한 프로젝트에서는 autotools나 cmake를 활용하기 바란다.
CFLAGS=`pkg-config --cflags elementary`
LDFLAGS=`pkg-config --libs elementary`

eflexample:
$(CC) $(CFLAGS) eflexample.c -o eflexample $(LDFLAGS)

all: eflexample

clean:
rm -f eflexample

install: all
mkdir -p $(DESTDIR)/opt/share/applications
cp com.mikeasoft.eflexample.desktop $(DESTDIR)/opt/share/applications/
mkdir -p $(DESTDIR)/opt/com.mikeasoft.eflexample
cp eflexample $(DESTDIR)/opt/com.mikeasoft.eflexample/
cp icon.png $(DESTDIR)/opt/com.mikeasoft.eflexample/
이 파일을 ~/src/tizen/eflexample/Makefile 에 저장한다.

설치 경로에 $(DESTDIR)을 추가함으로써 데비안 패키징 설정에서 설치 경로를 지정하고 .deb로 패키징되기 전에 임시 디렉토리를 사용할 수 있게 한다.

스크래치박스 세션 안의 ~/src/tizen/eflexample 디렉토리 안에서 make를 수행하면 컴파일이 잘 되어야 한다.

런쳐(Launcher)

앞에서 Makefile을 만들면서 com.mikeasoft.eflexample.desktop과 icon.png 파일을 설명하지 않았다. 이 파일은 타이젠 런쳐에 우리가 작성한 애플리케이션을 추가하기 위해 사용된다. .desktop파일은 다른 애플리케이션의 .desktop과 함께 /opt/share/applications 디렉토리에 설치되며 내용은 다음과 같다:
Name=EFL Example
Type=Application
Exec=/opt/com.mikeasoft.eflexample/eflexample
Icon=/opt/com.mikeasoft.eflexample/icon.png
Comment=An example of how to write native EFL applications for Tizen
Version=0.1
X-TIZEN-TaskManage=True
X-TIZEN-Multiple=False
X-TIZEN-Removable=True
이 파일을 ~/src/tizen/eflexample/com.mikeasoft.eflexample.desktop 로 저장하자.

.desktop에는 타이젠에서만 사용되는 몇 가지 옵션이 있다. 첫 번째, X-TIZEN-TaskManage는 타이젠 작업 관리자(task manager)에 나타나게 할지 여부를 결정한다. 두 번째, X-TIZEN-Multiple은 애플리케이션을 동시에 여러개 띄울 수 있도록 설정한다. 만약 이 값이 false라면 똑같은 애플리케이션을 또 실행하는 대신에 이미 실행중이던 애플리케이션을 복구해서 화면에 보여준다. 우리가 만든 간단한 예제는 애플리케이션을 복구할 필요가 없기 때문에 작업 관리자는 두 번째 클릭이 된 경우 애플리케이션을 종료시킨다. 마지막으로 X-TIZEN-Removable은 애플리케이션 관리자로 우리가 만든 애플리케이션을 제거할 수 있는지를 표시한다.

아이콘은 Enlightenment의 로고를 사용하겠다.

이 파일을 ~/src/tizen/eflexample/icon.png로 저장하자.

패키징(Packaging)

이 단계에서 우리가 만든 eflexample 바이너리를 일일이 장치에 복사해서 커맨드라인에서 실행할 수도 있지만 재배포하기 좋은 완벽한 방법은 데비안 패키지를 만드는 것이다.

첫 번째로 패키지에 대한 설명과 의존성을 기술하는 control파일을 작성한다.
Source: com.mikeasoft.eflexample
Section: user/other
Priority: extra
Maintainer: Michael Sheldon
Build-Depends: debhelper (>= 7), libelm-dev
Standards-Version: 3.8.4
Homepage: http://blog.mikeasoft.com

Package: com.mikeasoft.eflexample
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: An example of creating EFL applications for Tizen
Architecture: any
이 파일은 ~/src/tizen/eflexample/debian/control로 저장한다.우리는 표준 빌드 시스템을 사용하고 있어서 DESTDIR 인자를 처리할 수 있기 때문에 데비안 패키징에 사용할 rules 파일을 정의하는데 debhelper를 사용할 수 있다.
#!/usr/bin/make -f
%:
dh $@
이 파일은 ~/src/tizen/eflexample/debian/rules로 저장한다.그리고 changelog를 작성한다.
com.mikeasoft.eflexample (0.1.0-1) unstable; urgency=low

* Initial release

-- Michael Sheldon Sat, 23 Jun 2012 04:32:27 +0100
마지막으로 debhelper의 어떤 버전과 호환성을 맞출 지 기록한다.
echo 7 > ~/src/tizen/eflexample/debian/compat
이제 패키지를 빌드할 준비가 됐다. 패키지를 빌드하려면 일반 사용자로 스크래치박스 세션에 로그인해야 한다. 다음을 실행하자.
~/tizen_sdk/SDK/build-system/toolchains/scratchbox2/bin/sb2 -t tizen-emulator-1.0.sb2_gcc45sbox2.i386.platform
아래와 같이 패키지를 빌드한다.
cd ~/src/tizen/eflexampledpkg-buildpackage -rfakeroot
빌드가 끝나고 패키징이 되면 패키지 파일은 상위 디렉토리에 위치하게 된다. (예: ~/src/tizen/)

배포 (Deploying)

우리가 작성한 애플리케이션을 패키징했으므로 SDK에 들어있는 sdb 도구를 이용해 배포할 수 있다. 이 방법은 에뮬레이터나 연결된 장치 모두에 적용할 수 있다. 우선 데비안 패키지를 장치에 옮기고 /tmp 디렉토리에 복사한 후 장치에서 dpkg를 이용하여 패키지를 설치한다. 기본적으로 설치되어 있지 않은 패키지에 의존성을 가지고 있다면 우리가 만든 패키지를 설치하기 전에 그 패키지들을 apt-get으로 설치해야 한다. 하지만 libelm은 기본적으로 타이젠에 설치되어 있기 때문에 우리는 단지 다음과 같이 하면 된다.
~/tizen_sdk/SDK/sdb/sdb push ~/src/tizen/com.mikeasoft.eflexample_0.1.0-1_i386.deb /tmp/ &&
~/tizen_sdk/SDK/sdb/sdb shell dpkg -i /tmp/com.mikeasoft.eflexample_0.1.0-1_i386.deb
타이젠 애플리케이션 런쳐에 우리 예제 애플리케이션의 아이콘이 나타나면 이를 클릭해서 애플리케이션을 실행하면 된다.

소스 코드

전체 소스코드는 다음 링크에서 다운로드할 수 있다: eflexample.tar.gz[6]



[ 타이젠 게시물 목차 : http://seoz.egloos.com/3872102 ]

공유하기 버튼

싸이월드 공감트위터페이스북
 

핑백

덧글

  • woohyun 2012/07/19 00:33 # 삭제 답글

    Coooooooooooool ~ 따라 해보고 있어요 ㅋㅋㅋ
  • 천재태지서주영 2012/07/19 14:09 #

    ㅎㅎ 레퍼런스 폰에 올려보니 잘 되네 ^^
  • 안녕하세요 2012/08/09 17:19 # 삭제 답글

    안녕하세요. 좋은 자료 잘 보고 있습니다.

    제가 따라해보는 중에 안되는 부분이 있어서 질문을 드리고자 합니다.

    ~/tizen_sdk/SDK/build-system/toolchains/scratchbox2/bin/sb2-config -l

    이 부분을 수행해서 목록이 나와야 된다고 하셨는데 저한테는 목록이 안뜹니다.

    scratchbox2 가 설치되지 않았다고 하여 설치하고 다시 실행해보니

    No targets found, create some with sb2-init!

    이런 메시지가 나오네요.

    TIZEN_SDK는 기본 경로에 설치하였고 왠지 TIZEN_SDK 설치시에 scratchbox2가 함께 설치되어 별다른 과정없이 목록이 떠야할 것 같은데.. 잘안되네요.

    혹시 해결방법을 아시면 도와주세요.

    운영체제는 우분투 12.04를 사용하고 있습니다.

    감사합니다.
  • 천재태지서주영 2012/08/11 00:32 #

    안녕하세요? 서주영입니다.
    sb2-config -l의 결과에 target이 없다면 Tizen SDK를 실행하시고 아무 Tizen 프로젝트나 만들어서 한번 빌드하시면 됩니다.
    혹시 해보시고 잘 안되시면 말씀해주세요.
    조만간 관련 글을 올리도록 하겠습니다.
    감사합니다.
  • 안녕하세요 2012/08/16 15:42 # 삭제 답글

    안녕하세요.

    조언해주신 대로 tizen ide 에서 프로젝트를 만들어 빌드해 보았습니다.

    우선 우분투 12.04버전에서 설치가 제대로 진행되지 않아 11.04 버전으로 바꾸어 진행하였습니다.

    기본 제공되는 샘플로 프로젝트를 만들고 에뮬레이터에 올려서 돌려보았습니다.

    그 후, scratchbox2의 target이 생겼나 확인해 보았는데 scratchbox2가 설치 되지 않았다하여

    apt-get install scratchbox2 로 설치하고 다시 프로젝트를 만들어 돌린 후 확인해보았습니다.

    /home/lin/.scratchbox2 missing, create some targets with sb2-init!

    이런 결과를 보이며 여전히 제대로 안되는것 같습니다.
  • 천재태지서주영 2012/08/19 21:54 #

    안녕하세요? 서주영입니다.
    음.. 혹시 Tizen SDK에서 어떤 프로젝트를 생성하셨나요? 제가 테스트해본건 Tizen Platform Project였는데 한번 이 프로젝트를 생성하시고 빌드해보시기 바랍니다.
    그리고 scratchbox2가 설치되지 않은건 이상하네요. Tizen SDK를 설치하실 때, 어떤 것을 설치할 지 선택하는 부분에서 전체를 다 선택하셨나요?
    그래도 안 되시면 말씀해주세요. 위 방법으로 몇 개 PC에서 테스트를 하긴 했는데요, 며칠 내로 새 PC에서 테스트를 해보겠습니다.
  • 안녕하세요 2012/08/22 16:23 # 삭제 답글

    안녕하세요.

    Tizen Platform Project를 빌드해보니 말씀해주신대로 target이 생성되었습니다. 감사합니다.

    그리고 계속 따라 해보려고 하는데 쉽지가 않네요.

    ~/tizen_sdk/SDK/build-system/toolchains/scratchbox2/bin/sb2 -e -R -t tizen-emulator-1.0.sb2_gcc45sbox2.i386.platform

    요 부분을 실행해 보니

    Invalid mapping mode: slp2
    Failed to configure /home/lin/tizen_sdk/SDK/build-system/toolchains/gcc-4.5.3.sb2/usr/bin/gcc
    Failed to upgrade configuration files

    이런 응답이 나오고

    apt-get install libelm-dev

    요 부분은 설치가 안되네요.

    인터넷 검색을 통해 E17을 설치하긴 했는데 어떻게 하는지 잘 모르겠습니다.

    apt-cache search elementary

    요 부분은 아무반응없이 넘어가네요.

    저같은 초보자는 따라하는 것도 힘드네요 ㅠㅜ

    자꾸 귀찮게 해드려 죄송합니다 ㅜ
  • 천재태지서주영 2012/08/24 00:18 #

    안녕하세요? 서주영입니다.
    한단계를 통과하니 다른 관문이 또 있군요
    혹시 sb2-config -l을 했을 때 결과가 어떤 값이 나오나요?

    그리고 이렇게 피드백을 주셔서 정말 감사합니다 ^^
    사실 아무것도 모르는 분도 쉽게 따라할 수 있도록 가이드를 작성하는 것도 중요한데요, 그 부분이 미흡했던 것 같습니다.
    도움주셔서 고마워요~
  • 천재태지서주영 2012/08/29 06:32 #

    음.. 이상하네요. 방금 해봤는데 잘 됩니다. 혹시 스크린샷을 보내주실 수 있으신가요?
    http://imagebin.org/index.php?page=add
    여기에 이미지를 올리시고 링크를 보내주세요~
  • 안녕하세요 2012/08/24 10:42 # 삭제 답글

    sb2-config -l

    했을 때

    tizen-device-1.0.sb2_gcc45sbox2.armel.platform
    tizen-emulator-1.0.sb2_gcc45sbox2.i386.platform
    tizen-device-1.0.sb2_gcc45sbox2.armel.cdeb

    이렇게 세줄이 나옵니다.
  • 천재태지서주영 2012/08/28 22:53 #

    움.. 이상하군요.
    새로 산 노트북에서 테스트해봐야겠어요.
    번역된 것 말고 한국어로 된 가이드를 작성해야겠네요 ^^
  • 자판떼기 2013/01/21 22:06 # 답글

    처음으로 Tizen을 접해보는 사람입니다.

    native api는 아직 공개 되지 않은건가요 document에는 web app api만 있더라고요

    C++로된 라이브러리를 쓰려고 해서 native app으로 개발을 해야 할 것 같은데요...

    native app으로 개발 한다면 안드로이드나, 아이폰 처럼 webview가 있나요?? 웹페이지를 보여 줄 일이 있어서요.!!!

    Tizen 초짜의 질문 이었습니다.
  • 천재태지서주영 2013/01/22 00:35 #

    지난 2012년 10월에 있었던 Korea Linux Forum 2012의 타이젠 세션에 따르면, 타이젠 2.0의 로드맵은 다음과 같습니다.

    - Tizen 2.0 Magnolia – Jan. 2013
    Native APIs, more Web APIs, Security Enhancements, etc

    Native API 도 공개한다고 합니다. (이는 작년 5월 9일 타이젠 컨퍼런스 키노트에서 이야기가 되었습니다: http://seoz.egloos.com/3838402)
    아직 공식적인 이야기는 없지만 WebView와 같은 위젯은 기본적으로 필요하지 않을까 생각해 봅니다.

    참고로 타이젠과 관련된 질문은 http://seoz.egloos.com/3907148 여기에 해주시면 좋을 것 같아요 ^^
댓글 입력 영역