이번에 안드로이드의 리눅스 기반 애플리케이션 만들기에 도전을 해보았습니다.

리눅스를 기반한 안드로이드 플랫폼 개발을 위해선 C언어를 우선 알아야 합니다.

C언어 정도는 Java를 알면 금방 배우는 쉬운 언어입니다^^


C언어를 알았으면 리눅스 기반의 안드로이드 애플리케이션을 만들때 필요한 크로스 컴파일용 툴 체인(Tool Chain)을 설치해야합니다.

툴체인은 android-group-koreaDownload에 여러가지 종류가 있는데 그 중 하나인 arm-cortex_a8-linux-gnueabi-20100108.1030.tar.bz2 을 다운로드 받아 Ubuntu 10.04에 툴 체인을 설치하였습니다.

(※ Tool Chain설치는 [common]Kandroid Toolchain Ver.20090108 for Cortex-A8를 참고하시면 됩니다.)


툴체인을 설치 후엔 아래와 같이 C언어 코드(hello.c)를 작성합니다.


#include <stdio.h>
int main(int argc, char *argv[])
{
    printf("Hello, Android!\n");
    return 0;
}

코드 작성후 아래와 같이 컴파일 합니다.

저는 arm-cortex_a8-linux-gnueabi-20100108.1030.tar.bz2 를 다운 받아서 arm-cortex_a8-linux-gnueabi-gcc가 들어갔습니다. 툴체인의 버전에 따라 이름이 다르긴해도 툴체인의 컴파일러 실행파일 뒤에는 gnueabi-gcc가 붙습니다.


studioego@studioego-desktop:~/working$ arm-cortex_a8-linux-gnueabi-gcc hello.c -static -o hellostatic

컴파일을 하고 나선 컴퓨터에서 실행하려면 안됩니다. 이유는 컴퓨터(x86)용으로 컴파일 한 것이 아니라 안드로이드용 기계(arm)용으로 컴파일되어 돌아가지 않을뿐.


studioego@studioego-desktop:~/working$ ./hellostatic
bash: ./hellostatic: cannot execute binary file

위의 실행파일을 실행시키려면 x86용으로 컴파일을 하지 않았기 때문에 실행이 되지 않습니다.


컴파일하여 나온 결과파일을 안드로이드폰인 제 hTC Desire에 넣어보고 실행을 하겠습니다.


studioego@studioego-desktop:~/working$ adb push hellostatic /data/ch13
614 KB/s (586197 bytes in 0.931s)
studioego@studioego-desktop:~/working$ adb shell
# cd /data/ch13
# chmod 777 hellostatic
# ./hellostatic
Hello, Android!
#




위의 화면에서 나온 것 처럼 Hello, Android!가 실행됩니다.

그리고 휴대폰에서 터미널을 띄어넣고 hellostatic을 실행해도 똑같은 화면이 나옵니다.




단순한 애플리케이션이지만 C언어로도 Android 어플을 만들수 있다는 것을 보여줍니다.

여기까지 경지에 오려면 툴체인의 개념을 잘 알아야 하던데, 아직 저도 툴체인쪽 개념은 젬병 ㅡㅡ;;

Buy me a coffeeBuy me a coffee





N8 in the hand
N8 in the hand by RafeB 저작자 표시비영리동일조건 변경허락


N8 homescreen widgets
N8 homescreen widgets by RafeB 저작자 표시비영리동일조건 변경허락


이번에 발표가 될 Nokia N8이 N시리즈에서 마지막으로 Symbian을 쓰는 폰이되었다고 합니다. N8을 Symbian으로 쓰고 다음 N시리즈는 전부 Maemo의 후속 OS이고 Intel사와 합작하여 만든 MeeGo가 들어간다고 합니다.

단 N시리즈 모델에서 올해 여름에 나올 N8이 마지막 Symbian모델이고, 후속 N시리즈가 MeeGo가 탑재될뿐, Symbian 은 계속 탑재되어 나올겁니다.  예산에 민감한 C시리즈(이건 진짜 저가폰)은 S40으로 존재할것입니다. (참고: S60이 Symbian OS중에서 가장 성능과 기능이 많은 OS입니다. S40는 저가용 휴대폰에 탑재되는 OS.)

그러나 X 시리즈와 E시리즈등의 Nokia 장치들에는 계속 Symbian OS가 탑재될 예정입니다.


According to the Nokia peeps we spoke to, the N8 will be the last N-series to run on Nokia's Symbian platform; all N-Series from here on will run MeeGo. This leaves Symbian (in its current version 3 and the future version 4) on Nokia's X- and E-series devices, with the budget-conscious C-series making use of the existing Series 40 platform. The N9 will be the first MeeGo device, but with the N8 shipping at the end of Q3 or early Q4 it's hard to say whether the N9 will see the inside of phone stores before the end of the year.
출처: Nokia N8: in depth



Nokia사가 Symbian을 계속 밀다 앱 구현이 편리하며 확장성이 있는 iPhone과 Android에 밀려 고전하여 Open Source화를 하였습니다.

이제는 iPhone과 Android랑 상대가 되지 않으니 (참고로 액정크기를 iPhone이나 Android폰같이 못늘리는 것이 Symbian의 구조적인 결함) Symbian으로 iPhone과 Android폰이 경쟁하는걸 포기한듯 합니다. 다만 Symbian은 저가폰에서 엄청난 활약을 할것입니다. 

Nokia사에 MID(Mobile Internet Device)에 돌아가는 Linux기반의 OS로 만들던 Maemo를 가지고 N900을 만들어 iPhone과 Android에 대항을 하려고 노력도 하였지만 그렇게 성공하진 않았습니다.

이후 Maemo OS는 Intel사와  합작하여 MeeGo를 만들겠다고 선언하였지요. 이제 MeeGo가 Nokia의 고가폰 라인에 Symbian대신 탑재되었다는 선언을 보게 되었습니다.

이제 iPhone, Android 그리고 MeeGo가 경쟁하는 모습을 보게 되었습니다.

(Symbian은 죽지 않을뿐, 저가폰엔 계속 들어가고 iPhone과 Android폰같은 하이엔드급 폰엔 MeeGo OS로 대응하여 스마트폰 시장을 수성하겠다는 Nokia의 전략이 보입니다.)

아래는 Nokia N8의 소개 동영상입니다.

Introducing the new Nokia N8




Nokia N8 overview - Part 1 of 3

Nokia N8 overview - Part 2 of 3

Nokia N8 overview - Part 3 of 3

Nokia N8

Buy me a coffeeBuy me a coffee

2010년 6월 24일 오전 0시 21분경 모님과 IRC채널에서 대화하다


<blueguy^> OddEgo / htc 갔더니..
<blueguy^> OddEgo / desire 커널 소스 공개 되어 있더군요.
<OddEgo> 우와
<OddEgo> 커널 소스 공개되어서 xda 분들이 롬을 올리군요... ㅎㄸ
<blueguy^> OddEgo / 이미지 새로 올리는데 만족하지 말고..
<blueguy^> 직접 한번 빌드해서 올려 보는 것이..
<blueguy^> 흐흐.
<OddEgo> virtualbox에 올리면 능력자가 되는건가요?!
<OddEgo> 이미지 새로 올리는데 만족하지 말고.. // 어떻게 정곡을 잘 찌르십니까? ㅎㅎ
<blueguy^> OddEgo / 버박에 올리면 능력자가. 될 듯.
<blueguy^> 흐흐.
<blueguy^> qemu에는 그냥 올릴 수 있어요.


htc에서 공개된 안드로이드 소스코드를 x86용으로 포팅해서 올리면 엄청난 굇수가 되어 있겠지?

Buy me a coffeeBuy me a coffee



이번 Nokia와 Intel의 합작 OS인 MeeGo OS v1.1의 Demo 동영상이 공개되었습니다.

Pre-Alpha MeeGo for tablets demo

Nokia N800-Nokia N810-Nokia N900 류의 MID(Mobile Internet Device)의 개념(Maemo OS)과 Tablet의 개념을 합하고 Intel과 합작하여 넷북시장을 타켓으로 하는 MeeGo의 출시가 임박했다는 것이 느껴지군요. (MeeGo는 Maemo의 후속 OS입니다)

Mobile 시장에서 세계 1위인 Nokia가 Symbian으로 계속 스마트폰 시장을 이끌다 Apple의 iPhone과 Google의 Android에 밀려 점차 힘을 못쓰고 있던데, 이번 MeeGo의 등장으로 iPhone과 Android의 경쟁에 참여하길 기대합니다^^

Symbian으로 지키다 휘청거리던 Nokia가 MeeGo를 과연 성공할수 있을까? 

Buy me a coffeeBuy me a coffee



Mozilla에서 Firefox 3.6.4를 2010년 6월 22일에 출시하였습니다.

여러가지 버그들을 잡았지만 제일 큰 버그였던 Flash가 깨지면 웹브라우저도 꺼지는 버그를 잡았답니다. 그 기능을 Crash Protection(오류 보호)기능이라고 부릅니다.

Google Chrome같이 플래시가 깨져도 계속 브라우저가 돌아가게끔 만들어졌다고 합니다.

점점 Firefox도 Google Chrome을 닮아가는 인상을 보여주군요.

이 Crash Protection(오류 보호)기능은 Windows와 Linux에서만 된답니다. 안타깝께도 Mac에서 Crash Protection(오류 보호)기능은 올해 하반기에 쓸수 있다고 하군요.


Firefox 3.6.4가 나온건 새벽에 Twitter를 보다 @Firefox 에서 이런 글이 올라왔더군요.

Firefox 3.6.4 with crash protection now available!http://mzl.la/aJLuio

위의 글 처럼 Firefox를 실행하니 업데이트를 하고 있었습니다.

업데이트를 완료하고 나선 웹 브라우져 재시작을 하였습니다.


재시작을 하고 나선 Firefox를 실행하였더니 잘 돌아가군요.



지금까지 계속 Firefox 3.6에 대한 마이너 업데이트들이 이뤄지고 있지만, 언젠간은 Firefox4가 나오겠지요? Firefox 4가 나오면 어떻게 바뀔련지는 궁금합니다^^

Buy me a coffeeBuy me a coffee



위의 링크에 있는 파이낸셜뉴스 기사를 보고 깜짝놀랐습니다.


'자바'는 통상 6개월 정도 학원에서 수업을 받으면 애플리케이션을 개발할만큼의 실력이 쌓이는 것으로 알려져있다.

자바(Java)가 6개월 정도 학원에서 수업 들으면 애플리케이션을 개발할만큼의 실력이 나온다니?

전산학 4년 공부하여 컴퓨터공학 심화과정 공학사를 받은 저도 몰랐던 사실. 그리고 놀라운 사실이였습니다.

솔직히 학원에서 자바를 배운다면 실무에서 바로 쓸만한 것을 배우겠지요. 전산학의 기본기는 가르쳐주지 않을겁니다. 이 언어에 이런 라이브러리 쓰면 된다 저런 라이브러리를 쓰면된다는 실무에서나 쓸법한 속성과정을 배웁니다.

전산학 4년배운 사람은 저런 속성과정 금방 마스터하고 바로 투입 할수 있을겁니다.

학원에선 전산학 4년동안 가르치는 깊이있는 내용을 가르쳐줄까요?

 Android OS에서 Java VM대신 사용하는 Dalvik VM에서 메모리 관리 이슈나 VM에서 어떻게 돌아가고, 가비지 콜렉션은 어떻게 돌아가는지, XML을 어떻게 구성해서 어떤 형식으로 변환하는지에 대해서 부터 시작하여 Android OS의 Kernel 단에서 Linux 코드가 어떻게 돌아가고 부트로더가 어떻게 동작하며를 가르쳐줄까요?


예전 학원에서 Java를 6개월만에 배워 SI업체 간다는 소리를 많이 들었다만... 사회적인 인식이 "안드로이드는 Java를 사용하니 앱을 뚝딱만들것이다."라는 편견이 위험하다는걸 알려주고 싶습니다.

6개월이면 언어는 배울 수 있겠지만 앱 개발은 완전 다른 이야기입니다. 일단 안드로이드 앱자체가 Java는 기본 개념과 XML에 대한 개념은 당연히 갖춰야 하는 이야기입니다. 쉽게 말해서 Java Web Service(Java+XML+Network)하던 사람들이라면 금방 배울수 있는 것이지 Java만 가지곤 쉽게 알수 없습니다.

기자 양반의 머릿속에 자바가 6개월정도 학원에서 단기 속성으로 개발 가능하다면 왜 전산학과가 있을 필요가 없지요. 학원만 나오면 개발자 되는 시대.

개발자의 진입장벽이 매우 낮게 보이니 기자양반도 만만하게 보이는 세상입니다.

ps. 개발하려면 아이폰으로 전향해야겠다는 결심을 하군요. (그러나 돈 없어서 맥북+아이폰 못사고 안드로이드폰 개발 하려는 사람)

Buy me a coffeeBuy me a coffee

Coffeenix라는 사이트에서 여러 글들을 보다 흥미로운 기사를 보게 되었습니다.

Computer World에서 나온 기사인 Unix turns 40: The past, present and future of a revolutionary OS 이였습니다.




지금 보시는 것 같이 UNIX는 1969년도에 개발되어서 2009년도에 40주년 기념기사(Unix turns 40: The past, present and future of a revolutionary OS )까지 나온 오래된 운영체제입니다.

1969년 8월 Ken Thompson, Dennis Ritchie가 AT&T의 Bell 연구소에서 UNIX를 개발한 후 점차 발전에 발전을 거듭하게 되었습니다. UNIX가 개발되면서 C언어도 1974년도에 Ken Thompson, Dennis Ritchie에 의해 개발되었기 때문에 C언어를 제대로 이해하고 쓰려면 UNIX에 대한 개념이 있어야 하는 구석이 있지요.

(Windows에서 왜 써야하는지에 대한 개념들은 UNIX계열 OS의 시스템 콜 관련 공부하다 보면 이해가 금방되더군요. UNIX의 잔재랄까?) 

이후 시간이 지나 UNIX는 메인프레임, 워크스테이션등 대형컴퓨터에서 주로 사용하던 OS가 되었습니다. 일반적으로 데스크탑, 랩탑 으로 부르는 소형컴퓨터(x86기반)에선 OS를 MS사의 DOS, Windows로 사용하게 되었구요.


시간이 1985년, 스티브 잡스는 본인이 사장으로 있던 Apple사에서 쫒겨나게 됩니다. 그 후에 사람들을 규합하여 1985년도엔 NeXT사를 차려 NEXTSTEP이란 OS를 가지고 워크스테이션(NeXTcube, NeXTstation) 컴퓨터 장사를 했었습니다.


The World's First Web Server
The World's First Web Server by sbisson 저작자 표시비영리변경 금지

위의 사진은 세계 최초의 웹서버입니다. 1991년 Tim-Berners Lee가 NeXT Workstation으로 세계 최초의 웹서버를 만들었습니다.


어느덧 1990년, 핀란드에선 한명의 괴짜가 등장하게 됩니다. Linus Torvalds라는 핀란드 대학원생이 소형컴퓨터(x86 기반)인 데스크탑, 랩탑에 UNIX와 비슷한 시스템을 Linux라는 OS를 만들면서 Open Source로 GPL공개를 선언하고, 돈 받고 소프트웨어를 팔기보단 소스코드를 아예 공개해버리게 됩니다.


Linus Torvalds
Linus Torvalds by theducks 저작자 표시동일조건 변경허락


(참고로 Torvalds는 Linux를 만들기 전, 네덜란드의 Tanenbaum교수가 만든 UNIX 클론의 MINIX를 가지고 OS분석을 하다 Linux OS를 만들었다고 합니다.)

GPL공개를 하여 소스코드가 전부 공개되어서인지 소형컴퓨터(x86 기반)인 데스크탑, 랩탑에 DOS, Windows를 사용하는게 지루했던 Geek들이 Linux를 설치하면서 커뮤티니를 만들게 되고, 점차 쓸만한 운영체제가 되게 되었습니다.


위의 NeXTSTEP, Linux같은 OS를 설명하면서 왜 스마트폰과 연관이 있는가?? 쌩뚱맞는 글을 쓰고 있다고 생각하시면 오산. 

제가 소개를 하였던 NeXTSTEP은 1997년 스티브 잡스가 Apple사로 다시 컴백을 하면서 Mac OS X 10의 기반이 되었습니다. 스티브 잡스가 Apple사로 다시 돌아오면서 1997년 10억 달러의 적자를 낸 애플사를 1년 만에 4억 달러 가까운 흑자를 내게 만드는 기염을 토하게 되었죠.

그 후 스티븐 잡스는 컴퓨터시장뿐만 아니라  OSX10기반으로된 iPod라는 MP3가 나왔고 iPhone이 출시되고 iPad까지 출시가 됩니다.


wwdc-keynote_125
wwdc-keynote_125 by Dekuwa 저작자 표시비영리동일조건 변경허락


Linux는 GPL로 공개가 된후, 점차 소형컴퓨터(X86기반)뿐만 아니라 임베디드 장비에도 차츰 많이 들어가게 되었습니다.

그러다 2005년도, 구글은 Android사를 인수하게 됩니다. Android사는 안드로이드 OS를 Linux기반으로 만들던 회사였는데 구글이 인수함으로 모바일 OS를 구글이 원하는데로 제작하게 됩니다.

이후 2008년 10월 21일에 Android OS가 공개가 됩니다. 이후 Google은 hTC와 상호간 파트너쉽을 맺고 여러가지의 Android폰을 제작하게 됩니다.

Android Dev Phone 1 - G1 in Tagzania
Android Dev Phone 1 - G1 in Tagzania by tagzania 저작자 표시동일조건 변경허락


Spotify
Spotify by Johan Larsson 저작자 표시



Andy Rubin, Google
Andy Rubin, Google by Erwin Boogert 저작자 표시비영리

위의 분은 Google의 부사장 Andy Rubin 입니다.

지금까지 제가 UNIX의 역사를 이야기 하다 UNIX라는 것이 발전되어 NeXTSTEP-MacOSX-iOS(IPhoneOS), Linux-Android등의 소개를 하게 되었습니다.

쉽게 말해서 Mac OS는 UNIX의 후손, iPhone에 들어간 iOS도 UNIX의 후손입니다. 

Linux는 UNIX의 복제품이고, Android OS는 Linux의 자손. 대부분 스마트폰은 UNIX계열이란 결론이 나게 됩니다.

1969년도에 개발된 UNIX의 후손들은 PC시장에선 MS사의 Windows때문에 힘을 못쓰지만, 스마트폰시장에선 MS사의 Windows Phone이 삽질을 너무 많이 한 탓에 UNIX계열인 iPhone, Android가 강세인거지요.

UNIX family tree를 보다 스마트폰의 조상도 따져보면 UNIX, Linux라는 걸 알게 되니 UNIX란 OS를 40여년전에 설계한 Ken Thompson, Dennis Ritchie가 대단하다고 느껴집니다.

그 당시에 이렇게 컴퓨터의 개념이 확장될줄도 몰랐을것이고 대형 컴퓨터에서 사용하던 개념이 조그마한 장비에도 들어갈 줄은 누가 감히 생각하겠습니까?

UNIX의 설계를 아주 확장성 있게 한 것으로 40년전의 OS의 기본개념이 지금까지도 지속된것 같습니다.

결론: iPhone, Android 스마트폰의 원류는 UNIX였다.

Buy me a coffeeBuy me a coffee



Linux용 nProtect가 출시된다고 합니다.

리눅스용 nProtect가 출시되니 리눅스용 공인인증서 개발이 가능하겠군요?

그래서 리눅스(Ubuntu, Fedora Core, CentOS, Debian, Gentoo, Mandriva, etc) 배포판에 nProtect가 들어가서 은행 홈페이지에 쉽게 접속하여 은행 업무를 할수 있겠군요.

라고 쓰면 페이크이고 보안상 문제가 분명 있을것이다.

Windows용으로 나온 nProtect를 보면 각종 버그와 프로그램 오류로 Windows를 새로 설치해야하는 부작용도 있고, nProtect가 해킹의 위협이 될수도 있다. 

Linux용으로 nProtect를 낸다면 키보드 보안한다고 키값 매핑을 root권한으로 가로채고 하다 root권한 뺏기면 어떻게 하려고?

그리고 배포판마다 은근 설정할 값이 달라서 문제일건데 모든 배포판에 뿌리려면 개발 비용 상승도... 

Windows같이 권한이 강력하지 않은 OS야 해킹의 문제가 있겠다만, Linux같이 권한문제에 대해 강한 OS에서 root권한이 필요하다고 프로그램이 요구해서 쓰다 root계정이 뚫려 털리면 답없습니다. 

nProtect의 여러가지 문제점 중에서 키보드 보안 모듈을 깠지만... 보안프로그램 치곤 여러군데에 허점들이 많습니다. 그걸 Linux에 적용한다면 헬게이트로 갈 위험성이 ㅎㄷㄷ


ps. 이러다 Linux Kernel에 Dalvik VM을 올린 Android OS에 nProtect가 올라가는건 시간 문제. 이제 nProtect때문에 root권한을 자동적으로 얻어 해킹또는 바이러스 감염될 위험성이 커질수도 있겠음. (root권한이 있어야 키보드 관련해서 맵핑 건드리죠)

ps2. nProtect에 대해서 성토하는 글 쓰려다 시간이 늦어서 이렇게 줄여 쓴다만, 인터넷에 검색하면 nProtect의 문제점을 조목조목 알 수 있습니다.

Buy me a coffeeBuy me a coffee

Gwibber

이번에 Ubuntu 10.04에 기본적으로 들어간 SNS Client인 Gwibber에 Me2day 기능 넣는 작업을 하고 있습니다.




※ 참고: Gwibber
Gwibber is an open source microblogging client for Linux. It brings the most popular social networking web services to your desktop and gives you the ability to control how you communicate.
해석: Gwibber은 리눅스에서 오픈소스로 제공되는 마이크로블로깅 클라이언트입니다. 컴퓨터에서 인기있는 소셜 네트워킹 웹 서비스를 가져와, 서로 통신을 할수 있게 해줍니다.


Ubuntu 10.04에 기본으로 들어간 SNS인 Gwibber가 Python과 GTK를 기본으로 구성된 어플이다 보니, Python에 생소한 저에겐 어렵더군요.


미투데이 데스크탑 쉬운 인증에서 토큰 받는 작업은 수월하게 이뤄졌지만, Webkit모듈에 대해 제대로 이해 못해서 몇 시간 삽질 끝에 겨우구현을 하였습니다. 

역시 Facebook 코드를 거의 많이 참조해서야 겨우 구현됨.

(※참조:  미투데이 데스크톱 기반 쉬운인증 )

Gwibber-Me2day Auth 작업중 - Python언어와 webkit, urllib, json모듈을 이용해서 작성중이였음.


데스크탑 쉬운인증을 하기 위해선 

<meta name="X-ME2API-AUTH-RESULT" content="accepted" />

이걸 인식하기만 하면 끝나더군요 -_-;; (일단 어렵게 생각한게 화근. 일주일안에 끝날 것을 좀 시간 많이 끌었음)

지금까지 Me2day 데스크탑 쉬운 인증 작업을 거의 마무리를 지었고 버그만 잡으면 절반은 끝낸것일듯.

미투데이 데스크탑 인증 완료. 이젠 버그 잡으면 Gwibber에 Me2day를 쓸수 있음.


Gwibber에 미투데이를 넣었고, Daum에서 Yozm API가 제공되면 Yozm도 넣을까  고민되군요.

(이로서 국내 SNS를 Gwibber에서 즐기는 건가? ㅎㅎ)

Buy me a coffeeBuy me a coffee


참고사이트
Gwibber - http://gwibber.com/

이번에 Ubuntu 10.04에 기본적으로 들어간 SNS Client인 Gwibber에 Me2day 기능 넣는 작업을 하고 있다.

지금까지 Me2day 데스크탑 쉬운 인증 작업 하고 있는데 과연 어떻게 될지는 @.@

(Facebook의 인증과 비슷한 내용이라서 좀 따라했긴 했지만, 은근 까다로운 과정이다. 미투데이 데스크톱 기반 쉬운인증 )


Gwibber에서 미투데이 인증 부분


인증토큰 받았는데 여기서 더 작업해야함.



여기까지 작업하고, 이제는 로그인 부분만 붙이면 미투데이 로그인해서 글을 쉽게 작성할수 있는 작업은 완료될듯 하다.

Me2day Desktop auth working

me2day login


me2day account auth


(미투데이 글 받아서 파싱과정은 어떻게?? )

Buy me a coffeeBuy me a coffee

+ Recent posts