2010/08/07 - [Mobile/Android] - hTC Desire에 Android 2.2 Froyo with Sense UI 올림

의 결과후, 예전 Android 2.1 Eclair보다 얼마나 빨라졌는지에 대한 Benchmark를 하였습니다.



Google에서 내놓은 NexusOne의 Android 2.2 Froyo버전보단 속도가 느리지만 Motorola사에서 내놓은 Droid X와 삼성전자에서 나온 갤럭시S (Galaxy S)보단 속도가 빠르다는군요.

제 휴대폰인 hTC Desire에 유럽발 센스UI가 들어간 Android 2.2 Froyo버전으로 올리니 예전보다 속도가 빨라지고 버벅거림이 정말 많이 없어짐을 느끼게 되었습니다.

이로서 많은 휴대폰들이 Android OS 2.2 Froyo로 올려야 한다는 것을 여기서 답을 낼수 있습니다.

프로요가 아니면 안드로이드 휴대폰이 스마트하게 쓰기 힘들듯한 느낌?

Buy me a coffeeBuy me a coffee

이분은 어느 행성 출신?, originally uploaded by ganadist.

저의 국적은 어디일까요?? (제 사진입니다)

2010년 8월 8일, 종로1가 르메이에르종로타운 1층에서.
미진에서 메밀국수와 메밀전병, 보쌈을 먹고 나서 찍은 사진.

Buy me a coffeeBuy me a coffee



제 휴대폰인 hTC Desire에 유럽에서 먼저 발표된, Sense UI가 탑재된 Android 2.2 Froyo ROM을 찾아 업그레이드 했습니다.

유럽발 hTC공식 OTA판 Android 2.2 Froyo with Sense UI는 아래의 링크에서 찾아서 적용을 하였습니다.

먼저 루팅을 해야 ROM을 마음대로 올릴수 있습니다. 

루팅(Rooting)후 롬을 올리는 작업


위의 화면처럼 유럽에서 나온 Froyo with Sense UI가 적용된 ROM을 적용하려면 루팅을 해야 됩니다.

제 휴대폰인 hTC Desire에 Sense UI가 탑재된 Android 2.2 Froyo 가 설치되어 있습니다.


Android 2.2 Froyo with hTC Sense UI


이후 More Locale 2설치와 Kandroid keyboard를 설치하여 안드로이드폰에 한글이 쉽게 보이고 한글 입력도 수월하게 하였습니다.

Froyo로 올리고 나서 정말 속도가 빨라짐을 체감하고, Flash를 사용가능하게 되었으며, SD카드에 앱 설치도 가능해지고, 태터링 기능이 생겨서 예전엔 어떻게 사용했는지가 궁금할 정도이군요. ㅎㅎ 

Buy me a coffeeBuy me a coffee

CentOS 5.5에서 Android 커널 컴파일 하다 아래와 같은 오류가 생길 때가 있다.


Install: out/target/product/eee_701/system/app/Mms.apk
make: *** No rule to make target `vendor/google/frameworks/maps/
com.google.android.maps.xml', needed by `out/target/product/eee_701/
system/etc/permissions/com.google.android.maps.xml'.  Stop.

이럴 경우엔 eee_701.mk 파일 내용중에서 generic_with_google.mk를 generic.mk로 수정을 한다.

이 경우엔 구글 지도와 구글 토크를 사용하지 못하는 단점은 있다.

출처: [android-porting] Re: Compile error (no com.google.android.maps.xml)

Buy me a coffeeBuy me a coffee



CentOS 5.5에서 Android 커널 컴파일 하다 아래와 같은 오류가 생길 때가 있다.


host C: sqlite3 <= external/sqlite/dist/shell.c

external/sqlite/dist/shell.c: In function ‘callback’:

external/sqlite/dist/shell.c:540: warning: comparison between signed and unsigned

external/sqlite/dist/shell.c:551: warning: comparison between signed and unsigned

external/sqlite/dist/shell.c:561: warning: comparison between signed and unsigned

external/sqlite/dist/shell.c:575: warning: comparison between signed and unsigned

external/sqlite/dist/shell.c:580: warning: comparison between signed and unsigned

external/sqlite/dist/shell.c: In function ‘do_meta_command’:

external/sqlite/dist/shell.c:1051: warning: comparison between signed and unsigned

external/sqlite/dist/shell.c:1603: warning: comparison between signed and unsigned

host Executable: sqlite3 (out/host/linux-x86/obj/EXECUTABLES/sqlite3_intermediates/sqlite3)

/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../libreadline.so: undefined reference to `PC'

/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../libreadline.so: undefined reference to `tgetflag'

/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../libreadline.so: undefined reference to `tgetent'

/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../libreadline.so: undefined reference to `UP'

/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../libreadline.so: undefined reference to `tputs'

/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../libreadline.so: undefined reference to `tgoto'

/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../libreadline.so: undefined reference to `tgetnum'

/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../libreadline.so: undefined reference to `BC'

/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../libreadline.so: undefined reference to `tgetstr'

collect2: ld returned 1 exit status

make: *** [out/host/linux-x86/obj/EXECUTABLES/sqlite3_intermediates/sqlite3] 오류 1

[studioego@localhost cupcake]$

위와 같은 문제가 일어날 경우 아래와 같이 작업을 해준다.

[studioego@localhost cupcake]$ yum install -y readline*

[studioego@localhost cupcake]$ vi ./external/sqlite/dist/Android.mk


ifneq ($(strip $(have_readline)),)

-LOCAL_LDLIBS += -lreadline

 endif


위의 대용 대신 대신 아래와 같이 -lncurses 를 추가한다.

+LOCAL_LDLIBS += -lreadline -lncurses


ifneq ($(strip $(have_readline)),)

-LOCAL_LDLIBS += -lreadline -lncurses

 endif


 

Buy me a coffeeBuy me a coffee



미국에서 나온 갤럭시S광고(T-Mobile Vibrant, AT&T Captivate)들은 정말 인상적입니다.

AT&T Samsung Captivate TV Commerical

T-Mobile Samsung Vibrant TV Commerical 


삼성이 갤럭시S를 얼마나 전략적으로 미는지를 알수 있는 미국광고를 보니, 갤럭시S는 아마도 성공할것 같은 안드로이드 휴대폰이 될듯 합니다. (일단 하드웨어 스펙이 깡패니 당연)


그러나 한국에선?  삼성전자 홍보팀, 제발 갤럭시S 광고좀 미국처럼 만들면 어디 덧나나요? 

옴니아2때의 애국심 마케팅까지만 아니면 다행이랄까?


2009/12/20 - 삼성전자 서비스센터 길동점에 붙여있는 티옴니아2포스터. '대한민국 스마트폰의 자존심'이라며 태극기까지 걸고 애국심광고를 함.
2009/12/20 - 삼성전자 서비스센터 길동점에 붙여있는 티옴니아2포스터. '대한민국 스마트폰의 자존심'이라며 태극기까지 걸고 애국심광고를 함. by StudioEgo 저작자 표시비영리동일조건 변경허락


Buy me a coffeeBuy me a coffee

Android Platform에서 멀티미디어 관련한 부분은 PacketVideo사에서 만든 OpenCORE로 구성되어 있다.

OpenCORE의 아키텍처와 서비스를 알아야 안드로이드 관련 멀티미디어 구현의 이해가 쉽게 될것이다.


OpenCORE는 자바 기반의 오픈 소스 멀티미디어 플랫폼이다.

  • 서드파티(Third-Party)와 하드웨어 미디어 코덱, 입출력 장치와 콘텐츠 정책을 위한 인터페이스 제공
  • 3GPP, MPEG-4, AAC, MP3 포맷을 지원하며, 미디어 재생, 스트리밍, 다운로딩, 그리고 프로그레시브(Progressive) 재생 지원
  • MPEG-4, H.263, 그리고 AVC(H.264)와 JPEG등의 비디오와 이미지를 위한 인코더와 디코더 지원
  • AMR-NB와 AMR-WB를 포함한 스피치 코덱 지원
  • MP3, AAC, AAC+를 포함한 오디오 코덱 지원
  • 3GPP, MPEG-4, JPEG를 포함한 미디어 레코딩 지원
  • 324-M 표준 기반의 화상통화 지원
  • 안정성과 경고성 보장을 위하여 PV 테스트 프레임워크 지원 - 메모리와 CPU사용을 위한 프로파일링(Profiling)툴을 지원

OpenCore 코드는 매우 양이 많고, C++로 작성된 full-featured(전체적인 멀티미디어 기능을 갖는) 운영체제에 통합되는 구조로 되어 있고 (operating system migration layer), 매우 다양한 함수들이 상속성의 특징과 같은 다양한 레벨간의 인터페이스 여러형태로 패키징 되어 있다.

이 OpenCORE의 소스를 깊이 분석한 사이트는 아래와 같습니다.

http://blog.daum.net/lavendar17


블로그 내용을 둘러보고 있는데 상당히 분석을 잘 하였다.


Buy me a coffeeBuy me a coffee

Android Platform의 기본 개념에 대해서 매우 깔끔하게 정리한 문서


Android Platform의 4부분인 Kernel, HAL(Hardware Abstract Layer), Libraries, Application Framework를 구분하여 설명을 하였음


Android Internals Reference

http://code.google.com/intl/ko/android/

http://groups.google.com/group/android-internals

http://www.android-internals.org/

http://groups.google.com/groups/profile?enc_user=_EKOshMAAADzFnauhYxa0ga8JtF8CI5fWMj6vob75xS36mXc24h6ww

http://groups.google.com/groups/profile?enc_user=lYDbNxEAAAD8uJiqPP7Wd-bc9b1O3waCkdEasx1kiYTQavV7mdW13Q


Buy me a coffeeBuy me a coffee




Nexus One Organic LED Detail
Nexus One Organic LED Detail by Fragments of Eternity 저작자 표시비영리동일조건 변경허락

구글이 안드로이드 마켓의 약관(Android Market Developer Distribution Agreement (DDA))을 업데이트 하였다고 합니다. 이러한 약관 조정은 안드로이드 마켓의 새로운 결제 방법 선택사항을 추가하기 위해서랍니다.

Adjustment to Market Legals



약관이 아래와 같이 변경되었다고 합니다.

  • In Section 13.1, “authorized carriers” have been added as an indemnified party.

  • Section 13.2 is new in its entirety, covering indemnity for payment processors for claims related to tax accrual.

위와 같이 약관이 변경되어 통신사 결제 옵션("Authorized carriers")이 추가될 것 같습니다.


안드로이드마켓에서 앱을 구입하려면 지금까지는 Google Checkout을 사용해아만 했었지만, 이제 Paypal, 그리고 통신사등을 거친 결제 옵션들이 늘어나 앱 결제시 어떤 방법으로 결제될지에 대해 선택들이 늘어났습니다.^^

Android Market의 Paypal 결제 관련 기사:  PayPal payments coming to the Android Market


그리고 약관변경을 통해 개발자들은 위의 약관에 발표된 날부터 30일전까지 동의를 해야합니다. 동의하지 않으면 앱이 unpublish까지 되는 일이 생긴다더군요. (이미 이러한 사항은 개발자들에게 이메일로 보냈다고 합니다.)



ps. 추가로 알아본 결과 안드로이드펍의 관리자이신 회색님께서 안드로이드 마켓 통신사 결제 도입된다. 라는 글을 올렸습니다.


현재 미국 T모바일의 경우 통신사 요금을 통해 안드로이드 마켓의 앱을 구매할수 있지만 나머지대부분 통신사의 경우 구글 체크아웃을 이용하여 결제를 해야 합니다.


라고 적으셨군요.

앱을 통신사로 결제하는 방법은 현재까지, T모바일에서만 통신사요금을 통해서 안드로이드 마켓의 앱을 구입할 수 있었나봅니다.

Buy me a coffeeBuy me a coffee





아래는 옵티머스Q 루팅법에 적힌 글을 인용한것입니다.


현재 발견된 취약점으로 아마 모든 안드로이드 폰의 루팅이 가능할 것으로 보입니다 'ㅅ'

본 루팅과정은 드로이드X 루팅 과정인 http://alldroid.org/default.aspx?g=posts&t=493를 Optimus Q에 맞춰서 수정한겁니다. 

아무튼! 다음과 같이 차례대로 진행하시면 됩니다.

1. 옵큐를 usb로 컴과 연결하고 설정->응용프로그램->개발->usb디버깅에 체크한다.
2. 첨부파일을 받아서 c:\ 에 압축을 푼다.
3. 시작->실행에 들어가서 cmd 실행
4. cd c:\adb 치고 엔터
5. 이제 다음 내용을 차례대로 붙여넣기하고 엔터치면 됩니다. ㅇㅇ
 
    adb push su /sdcard/su
    adb push exploid /sqlite_stmt_journals/exploid
    adb shell
    cd /sqlite_stmt_journals
    chmod 755 exploid
    ./exploid
    rootshell
    secretlol
    cat /sdcard/su > /system/bin/su
    chmod 4755 /system/bin/su
    rm /system/bin/rootshell
    exit
    exit

6. 루팅완료!

PS. su 바이너리가 달라서인지 superuser.apk가 작동을 안하네요. 그래서 과감히 빼버렸어요. 아무튼 그래서 갤s나 다른 루팅된 기기와 달리 슈퍼유저 권한을 요청할때 allow창 같은게 안뜹니다. (보안상으로 매우 취약하군요ㄷㄷ)

PS2. busybox도 말을 안들어서 빼버렸습니다. 마켓에 검색해서 직접 깔아주세요.


LG에서 나온 옵티무스Q말고도 모토로이, 드로이드x 루팅하는 법과 국내판 갤럭시S [M110S] 루트권한 얻기시리우스 루팅방법...등의 방법이 나와 있습니다.

나온 방법들을 보면 Android OS의 취약점들을 이용하여 Root권한을 획득하는 것입니다.

보통 HTC의 단말기나 NexusOne같은 경우는 부트로더를 건드려 Root권한을 획득하기 때문에 HTC의 단말기같이 일부로 부트로더를 쉽게 루팅할수 있는 기계가 아닌 이상 모토로라사의 안드로이드폰이나 국내 안드로이드폰도 Root권한을 얻기 어려웠습니다.

이번 루팅은 Android OS의 취약점을 사용하여 부트로더를 안 건드리는 방법으로 폰들의 Root권한을 획득하는 식이다 보니, 약간의 Android OS의 보안문제가 있을 수 있겠군요.

위의 사례에서 보인 것 같이 오픈소스(Opensource)로 공개된 안드로이드(Android) OS는 Linux Kernel위에 Dalvik VM(SUN사의 Java VM을 따라하여 Java실행할수 있게 만든 Virtual Machine)이 올라간 형태입니다.

위의 오픈소스 같은 경우 소스가 공개된 상태이기 때문에 소스에 취약점이 있으면 공통적으로 바로 발견이 가능합니다.


오픈소스로 공개된 리눅스의 장점이랄까요? 단점이랄까요? 단점인 취약점이 금방 공개가 되는 듯 합니다.(그 단점으로 인해 빠른 패치가 가능하다는 장점도 있습니다.) 

안드로이드 오픈소스의 취약점이 바로 발견되기 때문에 위의 취약점으로 해킹을 하여 안드로이드폰 자체가 망가질 수 있는 문제점이 보이기 시작할듯 합니다. 

안드로이드폰의 보안 이슈에는 Root권한을 획득한 폰에서 앱을 통하여 해킹당할때의 문제가 있었지만, 이제는 Root권한을 획득하지 않은 일반 폰에서 앱에서 root권한을 취득할수 있게 만든 코드에서 해킹에 속수무책인 사항까지 나아간것 같습니다.

아마 위의 사례처럼 Android 2.2에서도 취약점발견되어 root권한 획득하는 방법이 있을듯 합니다. (Google측에서 취약점을 몰랐을 경우)

위의 취약점 사례는 아마도 Android Gingerbread 버전에서 사라질 가능성이 있습니다.

Buy me a coffeeBuy me a coffee

+ Recent posts