http://www.codewrecks.com/blog/index.php/2015/06/23/git-for-windows-getting-invalid-username-or-password-with-wincred/


만약 login이 귀찮아 wincred를 아래처럼 설정해서 썼다면, 비밀번호가 바뀌었을때 대략 난감해진다.

git config --global credential.helper wincred

이 상황에서는 제어판의 "자격 증명 관리자" 를 찾아 들어가 관련 repository와 관련된 것을 지워주고 다시 git 명령을 치면 된다.

저작자 표시
신고

'Open Source > git / svn / bazaar' 카테고리의 다른 글

[GIT] windows에서 invalid username (wincred)  (0) 2016.10.18
commit.template - default commit message  (2) 2012.07.12
resume in github  (2) 2012.02.15
github에 내 사이트 만들기.  (1) 2012.01.17
svn과 proxy  (0) 2010.08.11
Git 사용법(Manual)  (1) 2010.01.10
Posted by 소혼

ewebkit (WebKit/Efl)은 최근 WebKit1 포트를 제거했습니다. 옛날 코드를 사용하지 않는다면, WebKit2만 사용이 가능한 셈입니다.


이 둘의 가장 큰 차이는 이전에 적었던 글에서도 이야기한 것처럼 단일 프로세스를 통해 실행되느냐, 멀티 프로세스 환경에서 실행되는가입니다.

따라서 사용자의 요청(예를 들어 url을 로드해라, resize해라)등은 프로세스간 통신(IPC)을 거쳐 웹 컨텐츠를 담당하는 WebProcess에게 전달됩니다.

그러나 이러한 IPC 메커니즘을 통해 처리하기 어려운 것들이 있습니다. 대표적인 것이 JavaScript binding입니다. JavaScript binding은 native 코드를 javascript interface로 컨텐츠에 추가하여 web page에서 해당 interface를 통해 native code를 수행할 수 있게 하는 방법입니다.

WebKit2에서 이러한 것들을 수행하기 위해서는 WebProcess에서 사용자의 코드들을 수행할 수 있어야 합니다.


이를 위해 Injected Bundle이라는 것을 WebKit2에서는 제공하고 있습니다.

그러나 Injected Bundle은 WebKit2의 인터페이스를 사용하고 있기 때문에, ewebkit은 이를 한단계 감싼 ewk_extension 을 제공합니다.

그림으로 보면 위와 같습니다.

EWebKit2_Extension을 쓰려고 하는 사용자는 EWebKit2_Extension을 이용하여 extension을 만들어야 합니다.

이 때, 반드시 "void ewk_extension_init(Ewk_Extension *extension)" 을 구현하여야 합니다.


또, user application 에서는 ewk_context_new_with_extensions_path()를 사용하여 자신이 작성한 extension 라이브러리의 path를 건네주어야 합니다.


ewebkit은 WebProcess를 실행(fork)할 때, WebProcess가 호출할 injected bundle, 즉 ewebkit_extension_manager의 위치와 사용자 extension의 위치를 같이 넘겨줍니다.

WebProcess는 실행 직후 ewebkit_extension_manager를 로드(dlopen)하고 extension_manager가 extension을 로드하면 extension을 쓸 준비는 끝나게 됩니다.


extension은 이후 WebProcess에 자신이 원하는 타이밍에 WebProcess로부터 콜백들을 받고 적절한 일(javascript binding같은)을 수행할 것이며, message를 이용하여 user application과 서로 통신하게 될 것입니다.


간단한 extension의 예제는 아래에 있습니다.

https://github.com/ewebkit/samples/tree/master/devs/ryuan/extensions


저작자 표시
신고

'Open Source > EFL' 카테고리의 다른 글

[EFL] EWebKit Extension  (0) 2014.09.23
transparent ewebkit  (0) 2014.07.30
Hello ewebkit?  (2) 2014.03.14
WebKit/efl 하면서 쓸 ctags 만들기  (0) 2013.12.17
Elementary Dark theme  (0) 2013.10.17
[TIZEN][EFL] 타이젠 상에서 EFL 예제 실행하기  (9) 2013.08.02
Posted by 소혼

기존 글:

Hello, ewebkit



이번에는 ewk_view에 투명한 배경을 주는 예제를 소개할까 합니다.

기존의 예제(simple.c)를 약간 수정하는 정도의 예제입니다.


먼저 투명한 배경에 대한 설명을 하겠습니다.


일반적으로 웹 페이지는 웹뷰(ewk_view)의 전체 영역에 컨텐츠를 그리게 됩니다.

웹페이지는 body 태그의 배경을 이용하여 컨텐츠의 배경색을 갖게 되는데, 보통 다음과 같이 사용합니다.

### html

<!doctype html>

<!- no background -->

<body>HELLO</body>


### html

<!doctype html>

<body bgcolor="red">Hello, I am red background</body>


### html

<!doctype html>

<head><style>body { background-color: green; } </style></head>

<body>Hello, I am green background</body>


두번째와 세번째는 배경을 갖는 예제인 반면, 첫번째는 배경을 갖지 않는 예제입니다. 그러나 만약 첫번째 예제를 브라우저에서 실행한다면 흰 배경 위에 HELLO라는 글자가 적혀 있는 것을 보게 될 것입니다.


일반적으로 거의 대부분의 브라우저들은 기본 배경을 흰색으로 제공하고 있습니다.

그래서 웹 컨텐츠를 제작하는 대부분의 분들이 배경을 지정하지 않고 있습니다.

(

하지만 만약 흰 배경을 사용하지 않는 브라우저가 나타나면 어쩌실건가요? ㅡ.ㅡ

그리고, 특정 모바일 디스플레이들은 흰색일 때 배터리 소모가 극심합니다.

)


webkit도 기본 배경을 흰색으로 정하고 있지만, 다른 색을 쓰거나, 투명하게 그릴 수 있는 방법을 제공하고 있습니다.

ewebkit에서 관련 API는 ewk_view_bg_color_set 이라는 API가 존재합니다.


### c++

/**
 * Sets the background color and transparency of the view.             
 *
 * @param o view object to change the background color
 * @param r red color component
 * @param g green color component                                          
 * @param b blue color component     
 * @param a transparency             
 */
EAPI void ewk_view_bg_color_set(Evas_Object *o, int r, int g, int b, int a);

각각의 color component들은 0 부터 255 사이의 숫자여야 합니다.


일반적으로 EFL에서는 evas_object_color_set이라는 API를 이용하여 evas object의 색을 지정했지만,

ewebkit에서는 alpha를 제외하곤 evas_object_color_set의 다른 인자들을 사실상 무시합니다.

이유는, evas_object_color_set의 alpha가 전체 컨텐츠의 opacity를 다루는 반면, ewebkit은 배경만의 opacity를 다루어야 하는 요구사항이 있기 때문입니다.

즉, evas_object_color_set은 evas_object 전체의 색을 조절하는 API로 ewebkit에서는 contents의 색은 contents가 지정해야 하기 때문에 RGB값은 무시됩니다. (현재)


ewk_view_bg_color_set 을 사용하는 예제는 아래와 같습니다.

https://github.com/ewebkit/samples/blob/master/devs/ryuan/transparent.c

### c++

// gcc transparent.cpp `pkg-config --cflags --libs elementary ewebkit2
#include <Elementary.h>
#include <EWebKit2.h>

void on_done(void *userData, Evas_Object *webView, void *eventInfo)
{
   elm_exit();
}

EAPI_MAIN int
elm_main(int argc, char *argv[])
{
   ewk_init();

   Evas_Object* win;
   win = elm_win_add(NULL, "sample", ELM_WIN_BASIC);
   elm_win_title_set(win, "sample");
   evas_object_smart_callback_add(win, "delete,request", on_done, NULL);
   elm_win_autodel_set(win, EINA_TRUE);

   Evas_Object* bg = elm_bg_add(win);
   evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
   elm_bg_color_set(bg, 0, 0, 255);
   elm_win_resize_object_add(win, bg);
   evas_object_show(bg);

   Evas_Object* ewk = ewk_view_add(evas_object_evas_get(win));
   ewk_view_html_string_load(ewk, "<!doctype html><body>HELLO</body>", NULL, NULL);
   ewk_view_bg_color_set(ewk, 0, 0, 0, 0);

   evas_object_resize(ewk, 400, 400);
   evas_object_move(ewk, 0, 0);
   evas_object_show(ewk);

   evas_object_resize(win, 400, 400);
   evas_object_show(win);

   elm_run();

   ewk_shutdown();
}
ELM_MAIN()

배경 속성이 없는 web contents를 위해 url 대신 ewk_view_html_string_load를 이용했습니다.

그리고 ewk_view_bg_color_set 을 통해 ewk_view의 배경을 투명하게 만든 예제입니다.


위에서 elm_bg의 색을 blue로 했기 때문에 파란색 배경 위에 HELLO라는 글자가 적혀있어야 합니다.

만약 검은색으로 나온다면, ewebkit을 최신으로 빌드해보시기 바랍니다.

(최근 수정 :https://bugs.webkit.org/show_bug.cgi?id=135333)


추신. 현재 ewk_view_bg_color_set과 EFL 관련 버그가 하나 더 있는 것 같습니다.

만약 ewk_view_bg_color_set의 RGB요소에 값을 주고 alpha를 준 경우, elm_bg의 색과 blend되고 있습니다.

만약 투명한 웹뷰가 필요한 경우라면 RGB요소를 모두 0으로 주시기 바랍니다.

저작자 표시
신고

'Open Source > EFL' 카테고리의 다른 글

[EFL] EWebKit Extension  (0) 2014.09.23
transparent ewebkit  (0) 2014.07.30
Hello ewebkit?  (2) 2014.03.14
WebKit/efl 하면서 쓸 ctags 만들기  (0) 2013.12.17
Elementary Dark theme  (0) 2013.10.17
[TIZEN][EFL] 타이젠 상에서 EFL 예제 실행하기  (9) 2013.08.02
Posted by 소혼


Tizen Wearable SDK beta 1.0 이 릴리즈 되었습니다.

( http://developer.samsung.com/samsung-mobile-sdk/ )


아래는 기본으로 설치되어 있는 예제들 사진입니다.


에뮬레이터와 Analog watch 화면


카메라 앱과 에뮬레이터 콘트롤 패널




저작자 표시
신고

'Open Source' 카테고리의 다른 글

Tizen Wearable SDK 예제 사진  (0) 2014.03.18
Qt (framework)설치 on Ubuntu(우분투)  (0) 2011.04.12
[benchmark] jsgamebench  (0) 2011.03.22
[번역] bison(바이슨?) license  (0) 2011.01.22
bada SDK 설치하기  (2) 2010.08.20
FreeNode IRC 접속  (0) 2009.12.10
Posted by 소혼
TAG Tizen
2014.03.14 08:44

ewebkit은 WebKit 엔진 기반에 EFL 라이브러리를 사용하여 UI를 표현하는 라이브러리입니다.

(WebKit/EFL 이라고도 부르는데,  저는 so 파일 이름에 따라 ewebkit이라고 부르고 있습니다.)


물론,  Elementary의 elm_web이 ewebkit 에서 사용하는 ewk_view의 간단한 wrapper 클래스이지만 아직 문제가 많은 상태이기 때문에(1.9) ewebkit을 직접 쓰는 방법을 권장하고 있습니다. (또 타이젠(~2.2) 에서는 elm_web을 사용하실 수 없습니다.)

이 글에서는 elm_web이 아닌 ewk_view를 사용해서 간단한 페이지를 만드는 법을 공유하려고 합니다.


ewebkit 라이브러리는 현재 두 종류가 있습니다.

ewebkit : WebKit1/EFL 포트에 기반하는 라이브러리

ewebkit2 : WebKit2/EFL 포트에 기반하는 라이브러리


둘의 가장 큰 차이는 간단히 설명드리면 웹페이지를 렌더링하는 코어영역을 같은 프로세스에서 처리하느냐(ewebkit), 다른 프로세스에서 처리하느냐(ewebkit2) 입니다.

대부분의 인터페이스는 유사하지만, 이런 프로세스 모델의 차이에서 몇몇 인터페이스에는 차이가 있습니다.


참고로 타이젠과 같은 경우 1.0에서는 ewebkit을 사용하였고, 2.0부터는 ewebkit2를 사용하고 있습니다.

(현재 ewebkit은 webkit.org에서 제거되어 ewebkit2만 남았습니다.)


ewebkit을 사용한 코드들은 elm_web (http://git.enlightenment.org/core/elementary.git/tree/src/lib/elm_web.c) 이나 WebKit 프로젝트 내의 http://trac.webkit.org/browser/trunk/Tools/EWebLauncher/main.c 가있습니다.

ewebkit2를 사용한 코드들은 elm_web2(http://git.enlightenment.org/core/elementary.git/tree/src/lib/elm_web2.c),  또는 WebKit 프로젝트 내의 http://trac.webkit.org/browser/trunk/Tools/MiniBrowser/efl/main.c 가 있습니다.


참고삼아 보시면 될 듯 하고, 이 글에서는 ewebkit2 의 코드를 MiniBrowser 기반으로 설명을 드리려고 합니다.

(http://trac.webkit.org/browser/trunk/Tools/MiniBrowser/efl/main.c 정도의 설명입니다.)


혹시 EFL 에 대해서 잘 모르신다면, 이 글을 읽기에 부담스러우실 수 있습니다.

(과감히 뒤로가기를 누르셔도 됩니다.)


(

혹, EFL에 관심이 있으시면 먼저 아래 글을 보시는 것을 추천드립니다.

https://events.linuxfoundation.org/images/stories/pdf/lfcs2012_raster.pdf

)


1. 생성 / 소멸

다른 EFL 라이브러리들처럼 ewebkit/ewebkit2도 전역의  _init 과  _shutdown 을 가지고 있습니다.


### c++

int main ()

{

    ewk_init();

    ...

    ewk_shutdown();

    return 0;

}

반드시 사용하기 전에 호출해주셔야 합니다.

가능하면 main 시작하자마자 ewk_init을 호출하고, loop가 끝난 후 ewk_shutdown을 호출해주시는 것이 좋습니다.


다음으로,ewk_view 객체를 만들어야 합니다.

ewk_view를 만드는 방법은 여러가지가 있습니다. 하나씩 살펴보도록 하겠습니다.


1) ewk_view_add(Evas *e)

ewk_view_add 는 ewk_view를 만드는 가장 쉬운 방법입니다.

간단한 페이지를 로드하는 데는 적합하지만, alert/prompt/confirm이라던가 새창을 열거나 그 밖에 UI의 도움을 받아야 하는 많은 것들을 할 수 없습니다.

또, ewebkit에서는 관계없으나 ewebkit2에서는 매 evas object가 별도의 WebProcess를 생성하여 동작하게 됩니다.


### c++

Evas_Object *o = ewk_view_add(e);

ewk_view_url_set(o, "http://bunhere.tistory.com");


2) ewk_view_add_with_context(Evas *e, Ewk_Context *context)

ewebkit에서는 없는 함수입니다.

ewebkit2에서는 web context 라는 것이 있어서 하나의 web context는 하나의 WebProcess를 생성하게 합니다. 만약 이미 생성한 web context 안에 웹뷰를 만들려고 하면 이 함수를 사용해서 생성하면 됩니다.


### c++

// o 와 같은 context(web process)에서 동작하는 ewk_view를 생성

Evas_Object *o2 = ewk_view_add_with_context(e, ewk_view_context_get(o));


3) ewk_view_smart_add(Evas *e, Evas_Smart *smart, Ewk_Context *context, Ewk_Page_Group *group)

해당 API는 ewebkit에는 없습니다.(유사한 방법이 있으나 별도의 API 로 존재하지 않습니다.)


이 API 를 쓰면 ewk_view가 할 수 있는 일을 모두 할 수 있습니다.

물론 그만큼 사용하기 어렵다는 문제도 있습니다.


먼저, 인자들을 하나씩 살펴보도록 하겠습니다.

Evas *e

현재 생성하는 ewk_view의 기반이 될 canvas입니다.


Evas_Smart *smart

ewk_view는 여러 Evas_Object들 중 smart object로 만들어졌습니다.

Smart Object를 만드는 것에 대한 자세한 내용은 아래 글을 참고하시면 좋을 것 같습니다.

http://docs.enlightenment.org/stable/efl/Example_Evas_Smart_Objects.html


일반적으로 smart object를 만들때는 smart class를 만들어서 evas_object_smart_add를 호출하면 되지만, ewk_view는 추가로 처리해야 하는 인자들이 있어서 ewk_view_smart_add를 대신 사용합니다.

ewk_view_smart_add는 내부적으로 evas_object_smart_add의 일을 수행하게 됩니다.

(ewebkit은 evas_object_smart_add를 사용합니다.)

Evas_Smart를 만드는 법은 복잡하기 때문에 아래에서 다시 설명하겠습니다.


Ewk_Context *context

여러 ewk_view는 하나의 context를 가질 수도 있고, 여러개의 context를 가질 수도 있습니다.

하나의 context에 기반한 ewk_view들은 많은 것을 공유하게 됩니다.

특히 하나의 프로세스에서 수행되게 될 것입니다.

context를 구하려면 기존의 ewk_view 를 이용하여 ewk_view_context_get(o)을 하거나, ewk_context_default_get()을 이용하여 default context를 생성하면 됩니다.


Ewk_Page_Group *group

page group을 이해하는 쉬운 예제는 자바스크립트로 실행한 새창입니다. 자바스크립트로 새창을 열면 해당 페이지와 새로 열린 페이지는 opener / child 관계를 갖게 됩니다. 이 두 페이지는 같은 세팅을 가져야 합니다. 세션도 공유할 것이고요.

이렇게 같은 설정을 가져야 하고 정보들을 공유해야 한다면 같은 page group으로 묶어야 합니다.

page group을 얻는 방법은 기존의 ewk_view를 이용하여 ewk_view_page_group(o)을 호출하거나 ewk_page_group_create(group_name) 을 호출하여 특정 그룹을 생성하면 됩니다. group_name이 null이면 임의의 그룹을 생성하게 됩니다.


Evas_Smart 만들기

Evas_Smart를 만들려면 smart class를 하나 만들어야 합니다.

특히 ewk_view를 위한 smart class는 Evas_Smart_Class 를 확장한 Ewk_View_Smart_Class입니다.

사용자는 Ewk_View_Smart_Class를 확장하거나, Ewk_View_Smart_Class를 고쳐서 쓸 수 있습니다.

확장을 해서 쓸 경우, 기본 구현을 오버라이드하여 이용하기 좋다는 장점이 있습니다만, 대부분의 경우에는 기본 구현이 없습니다.(마우스/터치 이벤트 제외)


이 글에서는 일단 Ewk_View_Smart_Class를 고쳐서 쓰려고 합니다.

###  c++

static Ewk_View_Smart_Class *miniBrowserViewSmartClass()                                                                                                                 
{
    static Ewk_View_Smart_Class ewkViewClass = EWK_VIEW_SMART_CLASS_INIT_NAME_VERSION("MiniBrowser_View");
    return &ewkViewClass;
}

MiniBrowser에서 발췌한 코드로 Ewk_View_Smart_Class 객체를 하나 만들어서 MiniBrowser_View라는 이름으로 초기화했습니다.

이 때, 값들은 모두 NULL로 초기화 될 것입니다.

ewk_view가 제공하는 메소드들로 재정의하기 위해서 ewk_view_smart_class_set을 호출해 주어야 합니다.

사실 ewk_view는 재정의할 메소드들이 별로 없습니다만 이 함수는 반드시 호출되어야 합니다. 가장 중요한 Evas_Smart_Class의 메소드들이 연결될 것입니다.

### c++

    if (!ewk_init())
        return EXIT_FAILURE;

    ewk_view_smart_class_set(miniBrowserViewSmartClass());


이제 어플리케이션에서 필요로 하는 기능들에 대해 추가로 수정을 하시면 됩니다.

### c++

    Ewk_View_Smart_Class *ewkViewClass = miniBrowserViewSmartClass();                                                                                                    
    ewkViewClass->run_javascript_alert = on_javascript_alert;
    ewkViewClass->run_javascript_confirm = on_javascript_confirm;
    ewkViewClass->run_javascript_prompt = on_javascript_prompt;
    ewkViewClass->window_geometry_get = on_window_geometry_get;
    ewkViewClass->window_geometry_set = on_window_geometry_set;
    ewkViewClass->fullscreen_enter = on_fullscreen_enter;
    ewkViewClass->fullscreen_exit = on_fullscreen_exit;
    ewkViewClass->window_create = on_window_create;
    ewkViewClass->window_close = on_window_close;
    ewkViewClass->popup_menu_show = on_popup_menu_show;
    ewkViewClass->popup_menu_hide = on_popup_menu_hide;
    ewkViewClass->context_menu_show = on_context_menu_show;
    ewkViewClass->context_menu_hide = on_context_menu_hide;
    ewkViewClass->input_picker_color_request = on_color_picker_request;
    ewkViewClass->input_picker_color_dismiss = on_color_picker_dismiss;

앞서 말씀 드린 것과 같이 마우스 이벤트와 같은 몇몇 이벤트를 제외하면 ewkViewClass가 추가한 메소드들은 특수한 구현들을 갖고 있지 않습니다.


각각의 메소드들이 어떤 인자들과 반환값을 가져야 하는지는 http://trac.webkit.org/browser/trunk/Source/WebKit2/UIProcess/API/efl/ewk_view.h 를 참고하셔야 합니다.

몇몇 메소드들은 아래에서 좀 더 설명하도록 하겠습니다.


이렇게 smart class가 준비되었다면 Evas_Smart를 만들면 됩니다.

### c++

Evas_Smart *smart = evas_smart_class_new(&ewkViewClass->sc);

sc는 Evas_Smart_Class를 가르키는 주소입니다.


아래는 MiniBrowser에서 ewk_view_smart_add를 호출하는 일부 코드입니다..

### c++

    Evas *evas = evas_object_evas_get(window->elm_window);
    Evas_Smart *smart = evas_smart_class_new(&ewkViewClass->sc);
    Ewk_Context *context = opener ? ewk_view_context_get(opener) : ewk_context_default_get();
    Ewk_Page_Group *pageGroup = opener ? ewk_view_page_group_get(opener) : ewk_page_group_create("");
    window->ewk_view = ewk_view_smart_add(evas, smart, context, pageGroup);


생성과 달리 소멸은 간단히 evas_object_del을 호출해주면 됩니다.


2. Load contents

ewebkit에서 contents를 읽는 방법은 두가지가 있습니다.
가장 기본적인 방법인 url을 읽는 방법과, html string을 읽는 방법입니다.


url을 읽는 API는 다음과 같습니다.

### c++

ewk_view_url_set(view, "http://bunhere.tistory.com");

그 다음은 알아서 로딩이 된 후, 화면에 그려지게 됩니다.


html string을 직접 읽는 방법도 크게 어렵지는 않습니다.

### c++

ewk_view_html_string_load(view, "<!doctype html><body>hello</body>", base_uri, unreachable_uri);

img나 기타 리소스들이 상대 경로로 놓여질 때 읽어올 base_uri, 에러가 났을때 알려줄 unreachable_uri가 추가된 것을 제외하면 특별한 것이 없습니다. 그리고 이 값들은 NULL로 넘겨도 상관없습니다.


간단한 예제


여기까지 이야기한 것들을 바탕으로 가장 간단한 ewebkit 기반의 웹브라우저를 만들어보겠습니다.

https://github.com/ewebkit/samples/blob/master/devs/ryuan/simple.c

### c++

// gcc simplebutton.cpp `pkg-config --cflags --libs elementary ewebkit2`           
#include <Elementary.h>                                                            
#include <EWebKit2.h>                                                              
                                                                                   
void on_done(void *userData, Evas_Object *webView, void *eventInfo)
{
   elm_exit();
}

EAPI_MAIN int
elm_main(int argc, char *argv[])
{
   ewk_init();

   Evas_Object* win;
   win = elm_win_add(NULL, "sample", ELM_WIN_BASIC);
   elm_win_title_set(win, "sample");
   evas_object_smart_callback_add(win, "delete,request", on_done, NULL);
   elm_win_autodel_set(win, EINA_TRUE);

   Evas_Object* bg = elm_bg_add(win);
   evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
   elm_bg_color_set(bg, 0, 0, 255);
   elm_win_resize_object_add(win, bg);
   evas_object_show(bg);

   Evas_Object* ewk = ewk_view_add(evas_object_evas_get(win));
   ewk_view_url_set(ewk, "http://bunhere.tistory.com");

   evas_object_resize(ewk, 400, 400);
   evas_object_move(ewk, 0, 0);
   evas_object_show(ewk);

   evas_object_resize(win, 400, 400);
   evas_object_show(win);

   elm_run();

   ewk_shutdown();                                                                                                                                                      
}                                                                                  
ELM_MAIN()


실행 결과입니다.



저작자 표시
신고

'Open Source > EFL' 카테고리의 다른 글

[EFL] EWebKit Extension  (0) 2014.09.23
transparent ewebkit  (0) 2014.07.30
Hello ewebkit?  (2) 2014.03.14
WebKit/efl 하면서 쓸 ctags 만들기  (0) 2013.12.17
Elementary Dark theme  (0) 2013.10.17
[TIZEN][EFL] 타이젠 상에서 EFL 예제 실행하기  (9) 2013.08.02
Posted by 소혼
TAG EFL, Webkit

ctags -R --exclude=.git --exclude=Examples --exclude=LayoutTests --exclude=ManualTests --exclude=WebKitLibraries --exclude=build --exclude=PerformanceTests  --exclude=Tools --exclude=WebKit.xcworkspace --exclude=layout-test-results  --exclude=WebKitBuild  --exclude=Websites --exclude=Source/*/win --exclude=Source/*/mac --exclude=Source/*/wince --exclude=Source/*/blackberry --exclude=Source/*/mac --exclude=Source/WebKit/--exclude=*.html --exclude=*.js --exclude=*.pl --exclude=*.php .

저작자 표시
신고

'Open Source > EFL' 카테고리의 다른 글

transparent ewebkit  (0) 2014.07.30
Hello ewebkit?  (2) 2014.03.14
WebKit/efl 하면서 쓸 ctags 만들기  (0) 2013.12.17
Elementary Dark theme  (0) 2013.10.17
[TIZEN][EFL] 타이젠 상에서 EFL 예제 실행하기  (9) 2013.08.02
[TIZEN] 2.2 Emulator 실행하기  (0) 2013.08.01
Posted by 소혼

마지막 update : 2014-08-06 (우분투 13.10)



webkit을 빌드할면 소스코드부터 받아야 합니다.

소스코드를 받는 방법은 svn을 이용하거나 git을 이용하면 됩니다.(http://www.webkit.org/building/checkout.html)

 - svn에서 받기 : svn checkout https://svn.webkit.org/repository/webkit/trunk WebKit

 - git에서 받기 : git clone git://git.webkit.org/WebKit.git


EFL latest 기반에서 빌드하려면 아래 "최신 EFL을 사용하여 빌드하기"를 참고하세요.


* jhBuild를 사용하여 빌드하기


WebKit/EFL을 빌드하는 가장 쉬운 방법은 https://trac.webkit.org/wiki/EFLWebKit 을 읽고 따라하는 것입니다.

하지만, 현재 EFL 1.8에 기반하고 있습니다.

간단히 요약하면


1. 관련 패키지 설치

패키지를 설치하는 방법은 아래 스크립트를 실행하는 것입니다.(우분투만 지원)

./Tools/efl/install-dependencies


2. dependency 패키지 업데이트

./Tools/Scripts/update-webkitefl-libs


3. 웹킷 빌드

./Tools/Scripts/build-webkit --efl --cmakeargs="-DSHARED_CORE=ON"


(SHARED_CORE 옵션은 선택사항입니다.)


* 최신 EFL을 사용하여 빌드하기(trunk build)


단, 위 방법은 jhbuild를 사용하여야 하기 때문에 최신 EFL을 사용해서 빌드할 수 없습니다.

** EFL이 /usr/elocal에 설치되어 있다고 가정하겠습니다.


아래 환경 변수들을 세팅합니다. (prefix를 가정했기 때문입니다. 아래 내용을 아시면 적절히 수정하시면 됩니다.)

export LD_LIBRARY_PATH=/usr/elocal/lib:$LD_LIBRARY_PATH

export PKG_CONFIG_PATH=/usr/elocal/lib/pkgconfig:$LD_LIBRARY_PATH

export PATH=/usr/elocal/bin:$PATH


Ubuntu 12.10는 최신 libsoup이 제공되지 않습니다.

 libsoup을 설치합니다.


libsoup은 jhbuild에 있는 url을 통해 받으실 수 있습니다.

ftp://ftp.gnome.org/pub/gnome/sources/libsoup/2.42/libsoup-2.42.0.tar.xz


압축을 풀고, 폴더로 이동하여 아래 명령을 실행합니다.

./configure --without-gnome --disable-introspection --prefix=/usr/elocal

make -j4

sudo make install


이제 웹킷 폴더로 이동하여 build 폴더를 만들고 이동합니다.

mkdir build && cd build


빌드합니다.

cmake .. -DPORT=Efl -DENABLE_ACCESSIBILITY=Off -DENABLE_BATTERY_STATUS=Off -DCMAKE_INSTALL_PREFIX=/usr/elocal

make -j4

sudo make install


(첨:

최신 EFL을 사용하신다면 gstreamer가 설치되어 있을 것입니다.

아니라면, -DENABLE_VIDEO=OFF -DENABLE_VIDEO_TRACK=OFF -DENABLE_WEB_AUDIO=OFF 를 통해 VIDEO 관련 기능을 꺼주셔야 합니다.

gstreamer 빌드 관련해서는 gstreamer 최신 버전 설치하기를 참조하시면 됩니다.

)

위에 몇가지 OFF한 옵션들을 모두 켜서 빌드하려면 atk(ENABLE_ACCESSIBILITY), e_dbus(ENABLE_BATTERY_STATUS)가 있어야 합니다.


test browser

WebKit/Efl을 빌드하면 MiniBrowser라는 테스트 브라우저를 제공하고 있습니다.


아래 명령으로 테스트 브라우저를 실행할 수 있습니다.

./bin/MiniBrowser


* 최신 EFL을 사용하여 빌드하기(tarball)


최근부터 ewebkit의 tarball을 제공하기 시작했습니다.

현재 버전은 1.11 alpha입니다.

http://download.enlightenment.org/rel/libs/webkit-efl/ 에서 받으실 수 있습니다.

(주의: 위에서 제공되는 압축 파일은 전체 소스를 가지고 있지 않고 ewebkit을 빌드하는데 필요한 파일들만을 담고 있습니다.)


기본적으로는 위 trunk 빌드를 참고하시면 됩니다.

빌드할 때는 아래와 같이 적으시면 됩니다.


cmake .. -DCMAKE_INSTALL_PREFIX=/usr/elocal

make -j4

sudo make install


trunk 빌드와의 차이는 EFL port가 기본이며 몇가지 옵션들이 자동으로 꺼집니다. (BATTERY_STATUS)

저작자 표시
신고
Posted by 소혼


최신 Elementary를 빌드하면 됩니다.


전체적으로 버튼 사이즈가 작아졌네요.

저작자 표시
신고

'Open Source > EFL' 카테고리의 다른 글

Hello ewebkit?  (2) 2014.03.14
WebKit/efl 하면서 쓸 ctags 만들기  (0) 2013.12.17
Elementary Dark theme  (0) 2013.10.17
[TIZEN][EFL] 타이젠 상에서 EFL 예제 실행하기  (9) 2013.08.02
[TIZEN] 2.2 Emulator 실행하기  (0) 2013.08.01
[TIZEN] Tizen App store 등록하기  (0) 2013.08.01
Posted by 소혼

Tizen SDK 2.2부터는 EFL 개발을 할 수 있습니다. ( Tizen 2.2 정식 SDK 배포 by SeoZ )

단, Tizen을 설치하실 때 Platform Development를 선택하셔야 하고 리눅스에서만 개발이 가능합니다.


이 글은 우분투 (13.04)에서 작성하였습니다.


먼저 Tizen IDE를 실행하시고 New -> Others를 선택합니다.

Tizen 폴더를 선택하여 Tizen Platform Project를 선택합니다.


Template이 나오고 3가지 방법이 있습니다. 다음 릴리즈에는 Sample들도 추가되길 기대해 봅니다.

EFL Application을 선택합니다.


Hello EFL이라는 메뉴를 선택하고 Project name(여기서는 helloEFL)을 지정합니다.

Finish를 눌러 완료합니다.


그러면 Project Explore에 위와 같이 helloEFL이라는 프로젝트가 생겼음을 알 수 있습니다.

프로젝트는 총 4개의 폴더와 4개의 파일로 이루어져 있습니다.

include/ - 헤더파일들을 모아두는 곳입니다. 지금은 dbg.h라는 디버깅 정보를 출력하기 위한 헤더가 들어있습니다.

packaging/ - Tizen에서 platform개발은 rpm파일을 생성하여 이루어집니다. rpm파일 생성을 위한 정보는 spec에 지정하게 되어 있습니다.

po/ - 다국어 지원을 위한 메타 파일들이 들어있습니다.

src/ - 소스 코드들을 모아두는 폴더입니다. 지금은 main.c만 존재합니다.

CMakeLists.txt - Tizen은 빌드 스크립트로 CMakefile을 선호합니다.(Autotools도 동작합니다.) main.c와 인클루드 정보등 빌드 정보를 담은 CMakeLists.txt가 존재합니다.

org.tizen.helloEFL.png - 이 앱을 설치했을때 나오는 기본 아이콘입니다. 밋밋한 회색 원판입니다.(타이젠 로고라도 넣어줬으면 좋았을텐데 말입니다.)

org.tizen.helloEFL.xml.in - 메니페스트 정보를 담는 파일입니다. 빌드를 하면 이 파일을 바탕으로 org.tizen.helloEFL.xml이 생성됩니다.


일단 예제 실행을 위해 빌드를 해보겠습니다.


먼저 에뮬레이터가 실행되어 있는지 확인합니다.
아래 그림처럼 Project explore 아래에 Connection Explore에 보면 현재 실행중인 에뮬레이터 정보가 보입니다.



없다면, 왼쪽에 휴대폰 모양의 버튼을 클릭해 줍니다. (현재 그림에는 한개의 에뮬레이터가 실행중입니다.)


그 다음 에뮬레이터를 root mode로 변환해야 합니다.(에뮬레이터는 한개만 실행중이라고 가정하겠습니다.)

콘솔창을 열어 아래 명령을 실행합니다.

# sdb root on


또 gbs가 설치되어 있어야 합니다.

gbs설치 방법에 대한 가이드는 source.tizen.org의 documentation에서 찾으실 수 있습니다.


gbs 설치가 잘 되었다면 프로젝트 명에서 마우스 오른쪽 클릭을 하여 Run As -> Tizen Platform Project를 선택합니다.

문제가 없다면 에뮬레이터 화면에서 Hello EFL 을 보실 수 있을 것입니다.

(gbs 빌드는 서버에서 의존성 패키지를 가져와 빌드하고 설치하는 과정을 거칩니다. 따라서 시간이 매우 오래 걸릴 수 있습니다.)


몇가지 문제가 있을 수 있는데, 예를 들어 아래와 같은 상황입니다.

이 팝업은 device가 root모드가 아니기 때문에 나타납니다.

sdb root on 을 실행해줍니다.


문제가 없으면 패키징을 할 것인지 물어봅니다.

우분투의 경우 패키징을 위해 관리자 계정의 비밀번호가 필요합니다.(sudo의 비밀번호)


그림을 첨부하지 않았지만, gbs가 설치되어 있지 않으면 빌드 과정에서 실패가 될 것입니다.

이런 경우 gbs를 설치해 주셔야 합니다.



정상적으로 빌드된 후 실행되면 아래와 같은 간단한 EFL Application을 보실 수 있을 것입니다.



저작자 표시
신고
Posted by 소혼
TAG EFL, Tizen

Tizen 2.2 에뮬레이터는 기존의 에뮬레이터보다 훨씬 예쁩니다.


에뮬레이터를 실행하면 아래와 같은 화면이 뜹니다.

가운데 + 버튼을 누르면 아래와 같은 화면이 나옵니다.


입력해야 할 정보들은 예전과 유사하지만 디자인이 좀 더 예쁩니다.


Name은 적절한 이름을 입력하고 (tizen),

Ram Size는 1025Mb로 늘렸습니다.

File Sharing을 켜고, [...]을 눌러 적절한 폴더를 선택했습니다.


Confirm버튼을 누르면 아래와 같습니다.


왼쪽에 아래와 같이 입력된 간단한 정보를 보여주는 작은 휴대폰 모양이 생깁니다.

파일들은 ~/tizen-sdk-data/emulator-vms/vms 에 생성됩니다.


휴대폰 모양안에 있는 파란 버튼을 클릭하면 아래처럼 에뮬레이터가 실행됩니다.



저작자 표시
신고
Posted by 소혼

티스토리 툴바