관련 링크
The Chromium Project
Chromium OS


관련 서적

구글크롬OS클라우드OS와의첫만남
카테고리 컴퓨터/IT > 대학교재
지은이 코이케 료지 (한빛미디어, 2010년)
상세보기


학회지에 스마트폰 관련 논문을 쓰고 난 후, 넷북, 태블릿에도 관심이 많이 생겼습니다. Google에서 넷북,태블릿으로 탑재하려고 만들고 있는 Chrome OS에 대해서 관심이 있다보니, 모 기자님에게 구글이 취재원에게 잠시빌려준 ChromeOS 탑재 넷북 CR-48을 잠시 만져보기도 하였습니다. 그러나 뭔가 부족한듯한 느낌에 직접 Chrome OS를 빌드해서 사용해보자는 생각이 번쩍떠오르더군요.

2011.05.05

The Chromium Project 에서 Chromium OS 소스를 다운로드 받은 후 컴파일을 하였습니다.

Chromium OS 컴파일 방법은 Chromium OS Developer Guide  를 참조하시면 됩니다.

(64bit 머신에서 컴파일을 해야되더군요. 컴파일하는 방식이 Gentoo Linux 설치하듯 화면이 나와서 뭔가 무섭다는 느낌이 들었습니다. 실제로 OS를 구성하려면 계속 빌드만 몇 시간씩 투자를 해야합니다.

이번에 크롬 OS를 컴파일 해서 설치하려니, 64bit 머신을 구입 후 집에서 빌드 및 서버 굴려야겠단 생각을 계속 하게 되었습니다. - 전기값은 어쩌려고? ㅠㅠ)

Chromium OS의 컴파일이 완려된것을 확인하곤, 2011.05.06 USB메모리에 Chromium OS 부트이미지를 넣고, 컴퓨터에 부팅을 해보았습니다.


첫화면은 언어, 키보드 및 네트워크 설정이더군요.

Chromium OS 시작할때의 화면.


저 화면에서 언어 및 키보드, 네트워크 설정을 하면, 다음 화면에선 구글 계정으로 접속하기 화면이 나옵니다. 구글 계정입력한 후 비밀번호까지 입력하여 로그인을 하면 Chrome 웹브라우저 같은 화면이 나옵니다.

Google사에서 Chrome OS를 탑재한 Cr-48 노트북을 사용해본 사람으로서, 지금은 cr-48경우보다 속도는 빠릿해지고, 플래시도 돌아가고, 버벅거리는 면이 많이 줄었다는 걸 느꼈습니다. 그러나 아직도 불안정적이라 가끔 웹브라우저가 뻗기도 합니다.

페이스북, 트위터를 사용해도 AJAX로 돌아가는 부분도 버벅임도 없고, 심지어 페이스북 앱인 시티빌을 원활하게 할수 있습니다. (시티빌을 할수 있다니 이건 대박)

UI는 Chrome 웹브라우저 쓰는 것과 흡사하다고 보면 됩니다. Chrome 웹브라우저만 쓰는 컴퓨터를 접했다고 보면 이해 되실겁니다.


Chromiu, OS를 사용한 소감: Chrome 웹브라우저만 돌아가는 넷북을 만져보았답니다.

구글의 전략은 유비쿼터스환경에서 클라우드 컴퓨팅으로 구글 서비스를 언제 어디서든 사용하는 것입니다. 안드로이드와 크롬OS는 인터넷을 접속할 수 있는 수단이지요.  크롬OS는 인터넷을 쓰려는 저연령층과 저소득층에 만족스럽게 쓰일듯 합니다.


자세한 생각은 정리해서 다시 블로깅 하기로 하겠습니다.

Buy me a coffeeBuy me a coffee


HTC Desire에 커스텀 롬을 계속 설치하고 엎어버리고를 반복하다.. 심심했습니다.

명색이 컴퓨터공학과 4년공부하고 대학원 수료한 학생인데, Android Source를 빌드해서 휴대폰에 올려볼까란 생각에 갑자기 안드로이드 소스를 XDA-Developers 에서 찾기 시작하였습니다.


여러가지 안드로이드 소스들 중에서 저는 CyanogenMod 를 선택하여 컴파일 하기로 하였습니다.

저는 Ubuntu 10.10 32bit 컴퓨터(구입한지 6년된 ThinkPad R52)에서 CyanogenMod컴파일을 하게 성공하였습니다.


처음에 맥북프로에서 컴파일 하다보니 아래와 같은 에러로 인하여 포기하였습니다. 아 SnowLeopad 가 64비트라서 32비트로 컴파일하다 Linking문제가 생겼나 봅니다 -ㅁ-

Install: out/host/darwin-x86/bin/dictTest

host Executable: emulator (out/host/darwin-x86/obj/EXECUTABLES/emulator_intermediates/emulator)

ld: illegal text reloc to DwarfCUImpl<Dwarf_CUHdr<Dwarf32_SizeHdr, unsigned int>, unsigned int>::get_pc_address_file_info(unsigned long long, Dwarf_AddressInfo*)from out/host/darwin-x86/obj/STATIC_LIBRARIES/emulator-elff_intermediates/emulator-elff.a(dwarf_cu.o) in anon for architecture i386

collect2: ld returned 1 exit status

make: *** [out/host/darwin-x86/obj/EXECUTABLES/emulator_intermediates/emulator] Error 1


Ubuntu에서 Android 2.3.3. Gingerbread OS탑재된 CyanogenMod 컴파일 하여 아래와 같은 결과를 만들었고, 에뮬레이터에서 실행해보니 잘 돌아갑니다.

Generated: (out/target/product/generic/android-info.txt)

Target system fs image: out/target/product/generic/obj/PACKAGING/systemimage_intermediates/system.img

Install system fs image: out/target/product/generic/system.img

Target ram disk: out/target/product/generic/ramdisk.img

Target userdata fs image: out/target/product/generic/userdata.img

Installed file list: out/target/product/generic/installed-files.txt

studioego@studioego-laptop:~/android/system$ 

컴파일 성공하면 위의 메시지가 나옵니다 ㅎㅎ

아래는 컴파일 후 에뮬레이터를 이용하여 결과물을 실행한 화면입니다. 잘 돌아갑니다.

Emulator 실행 화면


Gingerbread가 탑재된 CyanogenMod

에뮬레이터에 볼수 있는 Android 2.3.3 정보 1

에뮬레이터에 볼수 있는 Android 2.3.3 정보 2


본인이 빌드를 했으면 빌드 번호에 본인 이름의 컴퓨터와 컴파일 한 날짜가 들어갔을겁니다. ㅎㅎ

Cyanogen_generic-eng 2.3.3. GINGERBREAD eng.studioego.20110327.012445 test-keys


Android Source컴파일하여 에뮬레이터로 올리는 방법을 알았으니 이제 HTC Desire에 CyanogenMod 소스코드를 올리는 것도 올리겠습니다. 

이후에 저만의 커스텀롬 올리는 방법과 Android Source분석도 올릴예정입니다.

Buy me a coffeeBuy me a coffee

출처:
XDA-Developers[ROM-DEV] Honeycomb v4 Full SDK Port to Desire (DEVELOPERS ONLY) 


Android 폰인 HTC Desire에 태블릿 전용 Android OS인 Honeycomb을 포팅한 동영상과 ROM을 XDA Developer의 개발자가 공개를 하였습니다.

설마 했다 Honeycomb UI가 탑재된 디자이어의 화면을 보고는 어안이 벙벙했습니다.


지금까지 작동되는건 아래와 같습니다.

  • 터치 스크린(touch screan)
  • 3D 가속(3D acceleration)
  • 바탕화면(wallpapers)
  • 데이터 연결(data connection) - 3G 연결
  • 문자 송수신(sms send/receive)
  • 웹 브라우징(browser)
  • 갤러리(CM7 Gallery) - CyanogenMod 갤러리

아직까지 작동 안되는 건 아래와 같습니다.

  • Wifi(와이파이 연결이 안되는 아이러니한 상황)
  • Audio( 소리또한 안나온다니 ;ㅁ;)
  • Camera(카메라 기능 작동 안된다군요 ;ㅁ;)
  • default gallery crashes when choose something

아직은 WIFI연결과 소리, 카메라 그리고 구글 제공 기본 갤러리가 안된다는 문제가 있군요.

언젠간 UFO를 주운 굇수가 해결해줄것이라 믿습니다.

(HTC Desire 등의 HTC제품들은 거의 누군가가 hack을 하여 안드로이드 커스텀롬을 다 만들어주는듯.)


ps. XDA 개발자들은 굇수들의 집합. (현재 쓰고 있는 제 폰인 HTC Desire도 이미 XDA개발자가 만든 Gingerbread OS ROM로 탑재하여 사용하고 있습니다. 그래서 Gingerbread SDK를 사용하여 테스트 중입니다)

Buy me a coffeeBuy me a coffee

관련글

Engadget - Live from Apple's iPad 2 event (update: it's over!)


요즘, 일찍 잠을 자는 버릇때문에 대략 오후 10시정도에 잠에 듭니다. 그렇기 때문에 Apple의 Keynote가 있던 한국시각 3월 3일 오전 2시 정도엔 한참 자고 있었지요.

2011년 3월 3일 오전 9시경. 지하철 안에서 Steve Jobs가 나왔다는 그 iPad 2 event를 Engadget을 통해 글과 사진으로 보았습니다.

글과 iPad 2 발표현장 사진을 보다 아주 웃겼던 사진을 보았습니다.

2011: Year of the copycats?

iPad 2 발표현장에서 구글,삼성HP, BlackBerry, Motorola 를 짝퉁만드는 회사로 취급한 Steve Jobs. 출처: Engadget


2011: Year of the copycats?

위의 문구를 언급하며 Steve Jobs는 Google, Samsung, HP, BlackBerry, Motorola사를 짝퉁만드는 회사로 소개하였습니다.

10:18AM "We've gotten off to an exceptional first year. We'd like to build on that. What about 2011? Everyone's got a tablet. Will 2011 be the year of the copycat? If we did nothing, maybe a little bit... probably not."

스티브 잡스(Steve Jobs)는 2010년도에 iPad를 만들었더니, 1년지나 2011년도에 들어서니 iPad를 따라하여 만드는 구글(Android Honeycomb OS), 삼성, Motorola같은 안드로이드 태블릿 생산업체, HP(Web OS기반 태블릿), BlackBerry(태블릿 생산)등이 iPad 짝퉁을 만들었다고 노골적으로 놀렸습니다.

참고로 Copycat의 뜻은 아래와 같습니다.


[명] 《구어》 《경멸적》 흉내내는 사람, 모방자. 

 ━ [형] 모방의. 

 ━ [동] (남의) 흉내를 내다; 〔남의 작품〕을 표절[모방]하다. 


(esp. in children's use) a person who copies another's behavior, dress, or ideas. 

• [as adj. ] denoting an action, typically a crime, carried out in imitation of another : copycat killings.



안드로이드 OS를 지지하는 사람으로서는 그닥... -_-;; 그래도 iPad가 뜨니 태블릿 시장 진출하려는 기업들이 늘어난건 인정해야됩니다.


iPad 2가 발표되었으니 이젠 Google측에서 Honeycomb OS를 업그레이드 하거나 아님 새로 내놓거나, BlackBerry쪽도, HP쪽도 iPad 2보다 능가할 정도의  성능향상된 태블릿을 내놓을 듯 합니다.


ps. 대한민국 신문의 기사를 보니 가관입니다. "스티브 잡스, 경쟁사로 삼성전자 언급 ... 출시국 한국 제외" - 이거 황론곡필 정도? 경쟁사 개념보단 짝퉁 만드는 회사로 놀렸는데;;

ps2.  3월 3일 수업시간에 교수님께서 아이패드 이야기 꺼낸걸 보고 깜짝 놀랐음. 교수님도 관심 있었구나. (논문 주제가 스마트폰쪽이다 보니 스마트폰 사촌되는 태블릿도 관심을 안가질수는 없음)

Buy me a coffeeBuy me a coffee




The honeycomb emerges...


Honeycomb delivery!


I, for one, welcome our new sweet sticky overlords


Honeycomb 조형물이 구글 캠퍼스(구글 본사)에 설치되었습니다.

Honeycomb 조형물에선 안드로이드 로봇이 꿀집에서 애벌레처럼 있는 모습이 보입니다. 아마 꿀벌이 안드로이드 로봇에게 밥 주는 느낌이랄까?

ps. 구글이란 기업은 참 재미있군요. 안드로이드 버전이 계속 발표될때마다 구글 캠퍼스(구글 본사)에 계속 조형물을 올릴 생각을 하는가봐요. Cupcake(Android 1.5), Donut(Android 1.6), Eclair(Android 2.1), Froyo(Android 2.2), Gingerbread(Android 2.3), Honeycomb(Android 3.0)으로 알파벳순서로 계속 이름 붙이며 조형물 올리니, 재미있는 기업이에요.
Buy me a coffeeBuy me a coffee

SKT 트위터인 @SKtelecom 에서 폭탄선언이 올라왔더군요.


SKT 공식 블로그에서도 "SK텔레콤 아이폰 도입 결정"라는 제목으로 글이 올라왔더군요.


SKT가 드디어 아이폰 출시를 검토한다고 했다 이제 아이폰 도입/공급까지 하겠다고 공개를 하였군요.

그러나 SKT가 입으로만 아이폰 도입하겠다는 전적이 있는지라, 출시일정을 발표해야 믿을수 있을것입니다. (왜이리 믿음이 없는걸까? ㅠㅠ)


현재, KT망이 사람들이 많이 이용하여 통화품질이 안좋고 등등 사람 많은 곳에선 KT망이 불안정합니다. 통화품질이 우수한 SKT로 아이폰나오면 진짜 개통할까 고민이 되는 글이 나오니 고민 되군요^^

참고로, 아이폰4를 지금 도입한다고 해도 아이폰4가 나온지 꽤 시기가 지난지라 실익은 없을테니, 차기 아이폰5 시장을 KT고객으로 부터 빼놓으려는 SKT의 노림수도 보이군요.


KT와 SKT의 공정한 경쟁을 기대해봅니다^^

Buy me a coffeeBuy me a coffee



안드로이드 3.0 Honeycomb SDK가 최종으로 올라왔다고 합니다. 그리고 Level 11의 API가 최종적으로 확정되었으며, 이 SDK 를 기반으로 개발을 진행해서 안드로이드 마켓에 등록할 수 있습니다.

참고로 Android 3.0 Platform의 사용자용 설명과 개발자용 설명은 링크에 있습니다.

그리고 Android SDK Tools(r10)을 업데이트 하였고, Eclipse용 ADT Plugin을 업데이트를 하였습니다.


Together with the new platform, we are releasing updates to our SDK Tools (r10) and ADT Plugin for Eclipse (10.0.0). 


아래는 제 맥북에서 새로 업데이트된 Android SDK Tools r10과 Android 3.0 Honeycomb SDK API 11을 설치하는 모습입니다.


Packages Install in Android ADT

Installing Android SDK



설치 끝나고 나서 에뮬레이터를 실행하니 뭔가 바뀐 구석은 있군요. (에뮬레이터 속도를 더 빠르게 만들었으면 하는 바람이 ㅎㅎ)

Android SDK Tools(r10)과 Eclipse plugin ADT에서 예전과 다르게 바뀐 부분

  • UI Builder improvements in the ADT Plugin:
    • New Palette with categories and rendering previews. (details)
    • More accurate rendering of layouts to more faithfully reflect how the layout will look on devices, including rendering status and title bars to more accurately reflect screen space actually available to applications.
    • Selection-sensitive action bars to manipulate View properties.
    • Zoom improvements (fit to view, persistent scale, keyboard access) (details).
    • Improved support for <merge> layouts, as well as layouts with gesture overlays.
  • Traceview integration for easier profiling from ADT. (details)
  • Tools for using the Renderscript graphics engine: the SDK tools now compiles .rs files into Java Programming Language files and native bytecode.

Buy me a coffeeBuy me a coffee

Android 프로그래밍을 하다 C코드를 Java코드와 연동해야하는 일이 생겼습니다.

Android NDK를 이용해 빌드하다보니 ant를 사용하여 안드로이드 프로그램을 빌드하였습니다.

Linux에서 빌드할때와 Mac OSX에서 빌드할때 미묘한 차이가 생기더군요.


Java로 된 안드로이드 소스코드는 UTF-8로 분명히 저장되어 있는데, Ant가 Linux에서 돌릴때엔 ascii로 인식해서 컴파일을 하더군요. 결국엔 안드로이드 어플에 한글이 깨져 나오는 문제가 있습니다.

Mac에서는 아무런 문제없이 빌드되고 안드로이더 어플에 한글이 깨져나오는 일이 없습니다. 참 미묘하기도 하지요?


참고로 CentOS5에 설치한 Ant 버전은 아래와 같습니다.

[studioego@localhost ~]$ ant -version

Apache Ant version 1.7.1 compiled on June 27 2008

[studioego@localhost ~]$ 



그리고 Mac  OSX 10.6에 설치된 Ant버전은 아래와 같다.

Dae-Hyun-Sung-ui-MacBook-Pro:~ studioego$ ant -version

Apache Ant version 1.8.1 compiled on September 21 2010

Dae-Hyun-Sung-ui-MacBook-Pro:~ studioego$


CentOS5 에서 Ant를 실행했을때


$ ant debug

Buildfile: build.xml

    [setup] Android SDK Tools Revision 8

    [setup] Project Target: Android 2.2

    [setup] API level: 8

    [setup] 

    [setup] ------------------

    [setup] Resolving library dependencies:

    [setup] No library dependencies.

    [setup] 

    [setup] ------------------

    [setup] 

    [setup] 

    [setup] Importing rules file: tools/ant/main_rules.xml


-debug-obfuscation-check:

-set-debug-mode:

-compile-tested-if-test:

-dirs:

     [echo] Creating output directories if needed...

    [mkdir] Created dir: /******/bin/classes

-pre-build:

-resource-src:

     [echo] Generating R.java / Manifest.java from the resources...

     [null] /home/studioego/android/platform-tools/aapt: /usr/lib/libz.so.1: no version information available (required by /home/studioego/android/platform-tools/aapt)

-aidl:

     [echo] Compiling aidl files into Java classes...

-pre-compile:

compile:

    [javac] Compiling 5 source files to /******/bin/classes

    [javac] /******/src/org/ccl/mobile/student/AnnoLine.java:4: warning: unmappable character for encoding ascii

    [javac] // 시작점 좌표

    [javac]            ^

    [javac] /******/src/org/ccl/mobile/student/AnnoLine.java:4: warning: unmappable character for encoding ascii

    [javac] // 시작점 좌표

    [javac]             ^

    [javac] /******/src/org/ccl/mobile/student/AnnoLine.java:4: warning: unmappable character for encoding ascii

    [javac] // 시작점 좌표

    [javac]              ^

    [javac] /******/src/org/ccl/mobile/student/AnnoLine.java:4: warning: unmappable character for encoding ascii

    [javac] // 시작점 좌표

    [javac]               ^

    [javac] /******/src/org/ccl/mobile/student/AnnoLine.java:4: warning: unmappable character for encoding ascii

    [javac] // 시작점 좌표

    [javac]                ^

    [javac] /******/src/org/ccl/mobile/student/AnnoLine.java:4: warning: unmappable character for encoding ascii

    [javac] // 시작점 좌표

    [javac]                 ^

    [javac] /******/src/org/ccl/mobile/student/AnnoLine.java:4: warning: unmappable character for encoding ascii

    [javac] // 시작점 좌표

    [javac]                  ^

    [javac] /******/src/org/ccl/mobile/student/AnnoLine.java:4: warning: unmappable character for encoding ascii

    [javac] // 시작점 좌표

    [javac]                   ^

    [javac] /******/src/org/ccl/mobile/student/AnnoLine.java:4: warning: unmappable character for encoding ascii

    [javac] // 시작점 좌표

    [javac]                    ^

    [javac] /******/src/org/ccl/mobile/student/AnnoLine.java:4: warning: unmappable character for encoding ascii

    [javac] // 시작점 좌표

    [javac]                      ^

(생략)

    [javac] 100 warnings

(생략)



이후 소스코드는 UTF-8로 분명히 저장했는데도 안드로이드 어플에서 글씨가 깨져 나옵니다.


Mac OSX 10.6 Snow Leopard 에 탑재된 Ant를 실행했을때

$ ant debug

Buildfile: /******/build.xml

    [setup] Android SDK Tools Revision 10

    [setup] Project Target: Android 2.2

    [setup] API level: 8

    [setup] 

    [setup] ------------------

    [setup] Resolving library dependencies:

    [setup] No library dependencies.

    [setup] 

    [setup] ------------------

    [setup] 

    [setup] 

    [setup] Importing rules file: tools/ant/main_rules.xml

-debug-obfuscation-check:

-set-debug-mode:

-compile-tested-if-test:

-pre-build:

-dirs:

     [echo] Creating output directories if needed...

-aidl:

     [echo] Compiling aidl files into Java classes...

-renderscript:

     [echo] Compiling RenderScript files into Java classes and RenderScript bytecode...

-resource-src:

     [echo] Generating R.java / Manifest.java from the resources...

-pre-compile:

...

(생략)

BUILD SUCCESSFUL

Total time: 10 seconds


소스코드도 UTF-8로 저장되었고 안드로이드 어플에서 한글이 깨지는 일이 없이 문제 없이 돌아갑니다. 


ant의 버전 차이때문에 그런건가요?


이 문제 때문에 Linux용 최신 ant binary 버전을 다운 받아서 사용했어도 똑같은 일이 발생하더군요.

버전문제는 아는 것 같고.. Linux용 ant를 직접 빌드해서 사용해야 문제가 해결될까요?


한글이 깨지는 문제때문에 구글링 한 결과 android-sdk폴더안의 파일을 수정해야되더군요

android-sdk디렉토리 안에 있는 tools/ant/main_rules.xml 을 열고 나서 

<property name="java.encoding" value="ascii" /> 부분을 찾습니다. 

 120     <!-- compilation options -->

 121     <property name="java.encoding" value="ascii" />

 122     <property name="java.target" value="1.5" />

 123     <property name="java.source" value="1.5" />

이후 ascii를 UTF-8로 수정후 저장합니다.

 <property name="java.encoding" value="UTF-8" />

이후에 다시 ant로 안드로이드 어플 컴파일 하면 한글이 깨지는 문제가 사라집니다.

참조: android: getting rid of “warning: unmappable character for encoding ascii”

(역시 구글링하면 모든 문제가 대부분 해결 되더군요 ㅎㅎ)


참고로 Mac OSX에선 기본적으로 UTF-8로 설정되어서 위와 같이 한글이 깨지는 문제가 없더군요.

아래는 맥의 ant 설정파일의 내용입니다.

/Users/studioego/android-sdk-mac_86/tools/ant/main_rules.xml

124     <!-- compilation options -->

125     <property name="java.encoding" value="UTF-8" />

126     <property name="java.target" value="1.5" />

127     <property name="java.source" value="1.5" />


Buy me a coffeeBuy me a coffee


하루종일 Android OS에서 C/C++코드와 Java 코드를 연동하기 위해서 Android NDK를 사용하여 프로그래밍중입니다.

C/C++로 개발된 기능을 Java에서 쓰기 위해서 JNI(Java Native Interface)를 사용해야되긴 하지만 처음 접하니 어렵군요.

분명히 Visual Studio에서 빌드하여 성공한 코드가 JNI(Java Native Interface)로 빌드할땐 에러가 나니 짜증이 나군요.


ps. 2011년 2월 21일 오후 5시 18분경 컴파일 성공. 이제 마무리 작업만 하면 됩니다 ~_~





Buy me a coffeeBuy me a coffee

출처: Android DevelopersWhat is the NDK?


Android NDK는 안드로이드 어플리케이션(앱)에 Native code(C,C++등)을 이용한 임베딩 요소들을 사용할수 있는 툴셋입니다.

참고로 NDK는 Native Development Kit의 약자입니다.

안드로이드 어플리케이션(앱)은 Dalvik Virtual machine(VM)에서 돌아갑니다. NDK는 C나 C++같은 Native code를 어플리케이션에서 구현할수 있게 허락해줍니다.


NDK를 쓰는 이유

  1. Garbage Collection이 무서워서
  2. 메모리가 너무 많이 필요해서 (over 16M~24M of JVM)
  3. 다른 C/C++ 라이브러리를 사용하고 싶어서
  4. ㅂㅌ인증을 받고 싶어서...(농담입니다 @.@)

영상처리쪽이나 음성처리같이 메모리를 많이 필요하는 어플 구현에 NDK를 써야 최상의 결과를 낼수 있을겁니다.
ps. 그러나 용량이 엄청많이 늘어나겠지.. (먼산)
Buy me a coffeeBuy me a coffee

+ Recent posts