제 2 회 2008 Korea Android 세미나 안드로이드 Open Source 및상용화이슈 2008.11.10. www.kandroid.org 관리자 : 양정수 (yangjeongsoo@gmail.com), 닉네임 : 들풀
목차 안드로이드 Open Source 안드로이드초기초기오픈소스영역초기논쟁들초기활동들오픈소스흐름안드로이드소스공개 안드로이드상용화이슈시장참여자들의관심사이동통신사관련이슈제조사관련이슈컨텐츠제공자관련이슈 s/w 개발회사관련이슈 Android Roadmap과 Korea 생각해볼만한것들
Android 초기 : Open Source 영역은? http://code.google.com/p/android/downloads/list 3
Android 초기 : 주요이슈들은? 안드로이드가상머신 (VM) 인달빅 (Dalvik) 에대한이슈? SUN Java 라이센스와관련된이슈 Register-based vs. Stack-based VM 성능이슈 안드로이드오픈소스의범위및전반적라이센스이슈? 모든소스가오픈될것인가? 오픈된모든소스에대해 Apache 라이센스가적용될것인가? 기타 최초의구글폰은어떤제조사에서만들까? 최초의의구글폰은어떤통신사에서나올까? 4
초기오픈소스영역 : Android Emulator - Google Phone으로대변되는 gphone 은 SDK 였다. - 그 SDK는 Emulator 소스가공개되었다. - 최초의소스는 Bug 가있었으나, Android SDK r1 Emulator 소스는버그가 patch 되었다. - Windows용에뮬레이터를빌드하기위해선, mingw 와 msys를사용하면된다. - 에뮬레이터는 QEMU라는오픈소스를사용하고있다. - 또한가상의 ARM SoC인 Goldfish를기반으로동작한다. - Goldfish는 ARMv5 명령어집합을기반으로한다. - 이런이유로, 안드로이드는 ARM926EJ-S이상의 Core를가진하드웨어에서만작동한다. 5
초기오픈소스영역 : Linux Kernel - 최초시점에서의안드로이드가사용한리눅스는 2.6.23 이었다 - 그리고안드로이드 SDK 의일부인 emulator 의 adb 를통해 goldfish를위해빌드된커널이미지를만들기위한정확한 config 정보를 /proc/config 정보를얻을수있었다. - 이를통해안드로이드의리눅스커널관련확장들에대해대략적으로알수있었으며, 주요관심사는 EABI와 Binder였다. - EABI가중요한이유는, 에뮬레이터내의다양한바이너리이미지들을 Target 단말에서구동시키기위해필수적으로필요했기때문이다. - 현재지금에서안드로이드는리눅스커널 2.6.25를기반으로확장되어있다. - 안드로이드는 GNU/Linux를사용하지않는다. - 이것이의미하는바는안드로이드가 GNU 프로그램들을탑재하지않고, GNU 라이선스를기반으로하지않기때문이다. - 안드로이드는 Native windowsing system, glibc, 표준 unix 유틸리티전체를탑재하지않고있다. - 안드로이드의리눅스커널확장영역은 Alarm, Low Mem Killer, Ashmem, Kernel 디버거, Binder, PM, Logger등이다. - 이중가장큰특징은 Binder와 Power Management(PM) 이다. 6
초기오픈소스영역 : Webkit WebKit 의장점은 Mozilla 2.0 Plan 의상당한부분을반영했기때문임 - XPCOM 의제거, Javascript Performance 향상 ( 이부분은최근구글크롬에반영됨 ) WebKit 은오픈소스임에도불구하고왜사용하기어려운가? -2D 그래픽엔진, UI, Windowsing, IO 의부재때문임. 7
초기오픈소스영역 : Eclipse Plugin 안드로이드 Eclipse Plugin은 Eclipse 상에서안드로이드프로젝트의생성, 코드유효화, Apk 생성및설치, 모티터링기능등를제공함. - 여기서중요한것은, Android Apk 제작이 Android Library인 android.jar를참조하여만들어진다는것이며, 이는안드로이드 apk 생성과설치에는포함되지않는다는것임. 8
초기이슈들 : Virtual Machine Register-based vs. Stack-based - Java에서성능향상관련해서, AOT 나 JIT가많이언급되어왔음. - Register-based 특징을 AOT와유사하게바라본듯함. - 그런이유로, 성능의향상과 Application 의사이즈의증가간의 Tradeoff 관계에대해지적이되어왔음. - Java Bytecode를 CPU가직접실행하는Jazelle, 즉하드웨어가속기를탑재한칩들과의관계에대한언급이있었음. - AOT, JIT, Hardware가속중 AOT가 Application의사이즈증가를고려하지않았을때, 가장좋은성능향상기법임이통계적으로나와는있었음. SUN Java IPR( 지적재산권 ) 회피 - s/w 관련 IRP 은크게, 특허권, 저작권, 상표권, 영업비밀로나누어짐. - Dalvik은이부분과관련된IRP를해결하여 Apache v2 라이선스를부여하기위함임. 9
초기이슈들 : 공개범위와라이센스 안드로이드소스공개범위와관련된이슈들. - 최초시점에서안드로이드의가장핵심이라할수있었던 Dalvik VM 소스가공개될것인가에대한논란이많았음. - 이유는이것이공개될경우, 구글이안드로이드의변종들이많아지는것을막을방법이없어서제어능력을상실할수있다는것과보안상의헛점이발생할수있다는것이었음. 안드로이드가라이선스와관련된이슈들 -최초시점에서안드로이드에는 Apache v2 라이선스가적용될것이라는말이있었음. -하지만, 안드로이드에서사용되는 Native Lib.( 내장라이브러리 ) 들이다양한라이선스에기반하고, 특히 packet video 같은회사는상용 s/w회사인이유로어떻게 Apache v2를적용할수있는지의문이많았음. 10
초기활동들 : 안드로이드 Start-up 분석및 Target 포팅 - http://benno.id.au/blog/ 는최초로안드로이드start-up을분석하였음. - 분석방법은안드로이드 emulator의 ramdisk이미지를재구성함으로서, 안드로이드리눅스의 init 프로세스에서참조하는 init.rc를수작업으로실행하는방법과 adb shell 을사용하였음. - 이를통해대략적으로안드로이드의구동원리및 mount 등에대한정보가획득되었음. - 이이후, 일부사람들이안드로이드를 target t device 에포팅하기시작했음. - 안드로이드를 target에포팅한다는것이의미하는바는다음과같은것임. - 안드로이드의리눅스커널 feature를정확히이해한다는것. - 안드로이드의 start-up 구조를이해한다는것. - 여기서안드로이드의 start-up 구조를이해한다는것은, 안드로이드전체구조를이해하는데매우중요한의미를가짐. 11
초기활동들 : 안드로이드.apk Reverse - 안드로이드 app. 즉, apk 는아래와같은과정을통해서만들어짐. - 이런이유로 apk 는 unzip 을통해 dex 과 resource 들로압축해제됨. - 하지만, dex 를 java class 로 reverse 하는것은현재까지는없었음. - unzip 된 resource 파일들은특별히재구성된 binary 로보임. - http://devtcg.blogspot.com/ 에서 axml2xml.pl 이배포된적이있음. - 이를통해, 기존의 emulator 에설치된 apk 를 reverse 해볼수있었음. - 이것이의미하는바는안드로이드주요 apk. 를만드는데사용된리소스제작방법을알수있었다는것임. 12
초기활동들 : Open Intent - 안드로이드 app. 컴포넌트로크게다음과같은것들이언급됨. - Activity, Intent Receiver, Service, Content Provider 가그것임. - 이중 Intent 와관련하여몇가지질문을던져보는것이가능함. 안드로이드는특정목적을수행할특정 app. 를실행하는가? 안드로이드는동일한목적을수행할려고하는 app. 중어떤것을선택하여해당 app. 를실행하는가? 안드로이드플랫폼상의모든intent 를어떻게알수있는가? - 웹에서 SOAP 과 UDDI 라는개념이존재함. - Open Intent 는 Intent 에대한 Global Repository 에같은것일수있음. 13
초기활동들 : ADC I, HTC, T-Mobile G1 - 안드로이드개발자챌린지 I에서가장주목할만한부분은무엇인가? - 그것은새로운모바일 killer application 이 ADC 를통해등장할수있는가? 라는질문이었을것같음. - 하지만, 결론적으로대부분의 ADC I의당선작은Google Map과메시징을을기반으로한일반적인추측영역에있었으며, 이런의미에서 Killer App. 는구글맵과메시징이라고할수도있음. - ADC I 이후, Apple의 App. Store와 Google Maketplace에대한성공가능성논쟁이꽤있었으나, 비교대상이아닐수있음. - 이유는, Apple은 Hot 전략, 구글은 Google 전략을구상하기때문임. - 왜구글은최초의폰을 T-Mobile USA 를통해출시했을까? - 그것은가장빠르게미국시장과전세계시장으로 Android 를알릴수있는기회였을것이라고생각함. - 왜삼성, LG 가아닌, HTC 를통해최초의구글폰이나왔을까? - 이유는 HTC가기술력이탁월했거나, 또는구글에의한제어가가장쉬었기때문이라고생각됨. 14
오픈소스흐름 : 주요인물들 Ken Thompson & Dennis Ritchie Richard Stallman Linus Torvalds Alan Kay Tim Berners-Lee Brendan Eich Guglielmo Marconi (1874~1937) Blake Ross Dave Hyatt 15
오픈소스흐름 : 라이센스종류들 - Public Domain vs. Open Source 를구분할필요있음. - Copyright vs. Copyleft 구분 Apache License BSD License GNU General Public License (GPL) GNU Lesser General Public License (LGPL) MIT License Mozilla Public License (MPL) Common Public License Eclipse Public License Copyleft No No Yes Yes No Yes Yes No 한번쯤생각해볼문제 : 주파수와주파수대역은 Public Domain인가? 16
안드로이드소스공개 : 2008 년 10 월 21 일 - core Project Description Project Description bionici C runtime libc, libm, libdl, hardware Hardware abstraction bt ti dynamic linker /libhardware layout bootloader Bootloader hardware /legacy reference code /ril Radio interface layer build Build system kernel Linux kernel dalvik Dalvik virtual machine prebuilt Binaries to support Linux and dmac OS builds development frameworks /base High-level dev. and debugging tools Core Android app framework libraries recovery system /bluetooth System recovery environment Bluetooth tools frameworks Framework configuration system Minimal bootable /policies/base policies /core environment system/extras Low-level debugging/inspection tools system /wlan/ti TI 1251 WLAN driver and tools 17
안드로이드소스공개 : external & packages 18
안드로이드소스공개 : Build - make, make sdk build/ -- core `-- api / combo / tasks -- libs `-- host `-- include `-- host -- target -- board `-- emulator / generic / sim `-- product `-- security -- tools -- acp -- apicheck -- etc `-- src `-- com `-- android `-- apicheck -- apriori -- atree -- bin2asm -- dexpreopt `-- afar / dexopt-wrapper / etc -- iself / isprelinked / kcm / lsd / rgb2565 -- signapk `-- test `-- soslim / zipalign `-- droiddoc -- src -- templates `-- assets `-- images `-- home -- templates-codesite `-- assets-google -- templates-gae -- templates-google `-- assets-google `-- test -- generics `-- src `-- com `-- android `-- generics `-- stubs -- expected `-- com `-- android `-- stubs `-- a /b `-- src `-- com `-- android `-- stubs `-- a / b / hidden 19
안드로이드소스공개 : PDK - boot, init, keyboard, display skip. 20
안드로이드소스공개 : Device Requirement Family Architecture Version Core ARM7TDMI ARMv4T ARM7TDMI(-S), ARM710T, ARM720T, ARM740T ARMv5TEJ ARM7EJ-S StrongARM ARMv4 SA-110, SA-1110 ARM8 ARMv4 ARM810 ARM9TDMI ARMv4T ARM9TDMI, ARM920T, ARM922T, ARM940T ARM9E ARM10E XScale ARM11 Cortex ARMv5TE ARMv5TEJ ARMv5TE ARMv5TE ARMv5TEJ ARMv5TE ARMv6 ARMv6T2 ARMv6KZ ARMv6K ARMv7-A ARMv7-R ARMv7-M ARMv6-M ARM946E-S, ARM966E-S, ARM968E-S ARM926EJ-S ARM996HS ARM1020E, ARM1022E ARM1026EJ-S 80200/IOP310/IOP315, 80219, IOP321, IOP33x, IOP34x, PXA210/PXA250 PXA26x, PXA27x, PXA800(E)F, Monahans, PXA900, IXC1100 IXP2400/IXP2800, IXP2850, IXP2325/IXP2350, IXP42x, IXP460/IXP465 ARM1136J(F)-S ARM1156T2(F)-S ARM1176JZ(F)-S ARM11 MPCore Cortex-A8, Cortex-A9 Cortex-A9 MPCore Cortex-R4(F) Cortex-M3 Cortex-M1 21
안드로이드소스공개 : Build (make, make sdk) http://www.kandroid.org Android Open Source 게시판 make sdk : javadoc 오류 (patch 요구됨 ) 22
안드로이드소스공개 : Audio Subsystem 23
안드로이드소스공개 : Power Management 24
안드로이드소스공개 : Radio Interface Layer 25
안드로이드소스공개 : Radio Interface Layer An solicited call in Android 26
안드로이드소스공개 : Radio Interface Layer An unsolicited call in Android 27
안드로이드소스공개 : RIL - qualcomm 28
안드로이드 Open Source 안드로이드초기초기오픈소스영역초기논쟁들초기활동들오픈소스흐름안드로이드소스공개 안드로이드상용화이슈시장참여자들의관심사이동통신사관련이슈제조사관련이슈컨텐츠제공자관련이슈 s/w 개발회사관련이슈 Android Roadmap과 Korea 생각해볼만한것들
시장참여자들의관심사 이동통신사 기존이익모델과의상관관계 안드로이드시장볼륨그리고그가능성 칩셋및휴대폰제조사의생산능력및망호환성 기존또는신규정보제공자의안드로이드 App. 개발능력및참여 ( 휴대폰 ) 제조사 이동통신사에의한시장보장 Chipset 확보및안드로이드플랫폼탑재능력 필요한애플리케이션개발능력 3 rd Party 플랫폼및애플리케이션개발회사와의협력 다양한디바이스로의안드로이드시장확대가능성 - 칩셋제조사 30
시장참여자들의관심사 컨텐츠제공자, 포탈또는기타. 웹에대한접근성제약의근본적해결 (Open Access) 의대안? Open Access : Network, Device, Application, Service 모바일 Killer Content 런칭 다양한휴대폰플랫폼에하나의플랫폼이추가? 소프트웨어개발회사 휴대폰제조사에의한개발시장 이동통신사에의한개발시장 컨텐츠제공자에의한개발시장 안드로이드디바이스시장의확대에따른시장확대 마켓플레이스를통한독자적시장진출 31
이동통신사관련이슈 이슈 1. 국내안드로이드폰, 출시및전략은? ( 아래의 LGT, KTF, SKT 관련내용은개인적견해임 ) -LGT: 오즈 & 안드로이드 - KTF : KT 중심의유무선통합 &Android -SKT: 웹으로의확장 이슈 2. 이통 3 사의안드로이드폰출시이후의이슈 Apache V2 라이센스 통신사별로수정된 Android 의등장 소비자는? 제조사는? s/w 회사는? 그래서구글은? 32
제조사관련이슈 주요이슈 : Linux Kernel + Patch, Drivers, HAL No. Title Description 1 Understand Open Source Open License Open Source Software License : GPL, Apache v2, etc. 2 Booting Linux and Android 1. Boot Linux from RAM 2. Add a simple root ramdisk filesystem and console 3. Get critical drivers working 4. Boot from Flash / 5. Add basic UI drivers 6. Build and boot Android / 8. Add remaining drivers 3 IwantmyADB! Get ADB(and USB) working early / Fastboot and other tools 4 Drivers: Drivers: Kernel or User-space / Porting Drivers 5 The RIL Shim Layer RIL,RIL API,Enhancing the RIL, Certification, Tops 6 Accelerate Multimedia in HW Software codes requires lots of CPU H.264 decode example Android easily supports acceleration, Tips 7 Add a good GPS solution Location tech / Locations metrics / Location Manager runs in Server Processor / Adding GPS Solution 8 Maximize performance, minimize power Performance and power, Suspend/Idle, Clocks, Devices, Tips 9 Misc Misc things to not forget about 10 An Integrated Android Solution A vertically integrated and optimized Android solutions? 33
컨텐츠제공자관련이슈 - 모바일의가장중요한특징은? 이동성 / 신속성 - Mobile Killer Content 는무엇일까? 전화, 메시지, 지도.. - 모바일, 가치의창출인가? 가치의이동인가? - Open Access, 가치창출을위한도구가될것인가? 아니면공정경쟁의인프라가될것인가? vs. 34
s/w 개발회사관련이슈 - git://android.git.kernel.org/ 와의관계설정? - 독자적인 Branch 또는 PDK 활용능력 - Native Package 개발능력 - Marketplace 용 App 개발 com/google/ com/google/android/ com/google/android/maps/ com/google/android/maps/geopoint.java com/google/android/maps/itemizedoverlay.java com/google/android/maps/mapactivity.java com/google/android/maps/mapcontroller.java com/google/android/maps/mapview.java com/google/android/maps/mylocationoverlay.java com/google/android/maps/overlay.java com/google/android/maps/overlayitem.java com/google/android/maps/projection.java com/google/android/maps/trackballgesturedetector.java 35
Android Roadmap 과 Korea 2008. 4/4 분기 Localization : 문자열, 사용자인터페이스, 날짜및숫자표기 Support for multiple APNs SIM application toolkit (STK) 2009. 1/4 분기 Input method framework (IMF) Input method engines (IME) 36
생각해볼만한것들 생각해볼만한것들. 구글안드로이드팀과같은내부역량을확보할수있는가? 한국내 OHA는가능한가? korea android SDK를만들어배포하는것은어떤가? 한국형 ADC 는가능한가? 국내안드로이드폰출시를위한공동협력구조는가능한가? korea android Marketplace 가능한가? 정부와소비자들의참여방법은없는가? QWERTY / Numeric / Soft keybord? 기존재하던 WIPI 또는 Native 애플리케이션의포팅책임은? 37
알림 : 안드로이드개발보드 - 아크로엠 AC6400 ITEM Spec. Description CPU S3C6400 ARM1176JZF-S CORE(400/533/667MHz) SDRAM 삼성 mddr 128Mbyte, 32bit access, clock speed 266MHz NAND FLASH 삼성 NAND LARGE BLOCK 1Gb (128Mbyte) NOR FLASH AMD NORFLASH 8Mb(1Mbyte), 16Bit(LIMIT 64Kbit) AUDIO CODEC WM9713 STEREO 400mW 출력스피커, MIC IN, HEAD SET 지원 GRAPHIC 2D 2D GRAPHIC CONTROLLER 지원 USB 2PORT USB 2.0 OTG (HOST, CLIENT) USB HOST 1.1 UART 4PORT UART0: DEBUG, UART1:Bluetooth UART2:GPS, UART3: RXD, TXD, GND( 통신포트 ) VIDEO 2PORT S-VIDEO, COMPOSITE (TV-OUT) DMB 지상파DMB P2(RXD,TXD,DMB(Option), 기존 DMB칩제품보다 40% 이상줄어든 60mW이하의저전력 CAMERA MICRON 2M PIXEL AUTO FOCUS 지원, PREVIEW 기능 & SNAP SHOT 기능 ETHERNET CS8900 10 BASE-T 지원, LINK LED 지원 SD/MMC 1PORT SD Host&High Speed Multi-MediaCard Interface HDD 1PORT FPC/FFC Connector Interface BLUETOOTH UART1 BLUETOOTH TECHNOLOGY BASE ON CSR BC04-ROM GPS 삼성 GPS MODULE Cold < 55 sec @ 130dBm Hot < 10 sec @ 130dBm Worm < 38 sec @ 130dBm LCD 7 WVGA 800x480 16bit (Data enable mode 사용 ) Battery (Option) 1530mAH @ 3.7V FULL OPERATION 1 HOUR 이상 CHARGET, PMIC SMB122 AC & BATTERY SWITCHING 기능, 배터리 PROTECTION, AC PRESENT 신호출력, cc-cv 충전 38
질의및응답 이곳에메모해두셨다가행사마지막시간 ( 오후 5 시 ~ 오후 6 시 ) 에질의해주세요. 39