관리자 : 양정수 닉네임 : 들풀 제 2 회 2008 Korea Android 세미나 안드로이드 Open Source 및 상용화 이슈
목 차목 차 안드로이드 Open Source 안드로이드 초기 초기 오픈 소스 영역 초기 논쟁들 초기 활동들 오픈 소스 흐름 안드로이드 소스 공개 안드로이드 상용화 이슈 시장참여자들의 관심사 이동통신사 관련 이슈 제조사 관련 이슈 컨텐츠 제공자 관련 이슈 s/w 개발 회사 관련 이슈 Android Roadmap 과 Korea 생각해 볼만한 것들
32 nd Korea Android Seminar - Android 초기 : Open Source 영역은 ?
42 nd Korea Android Seminar - Android 초기 : 주요 이슈들은 ? 안드로이드 가상머신 (VM) 인 달빅 (Dalvik) 에 대한 이슈 ? SUN Java 라이센스와 관련된 이슈 Register-based vs. Stack-based VM 성능 이슈 안드로이드 오픈소스의 범위 및 전반적 라이센스 이슈 ? 모든 소스가 오픈될 것인가 ? 오픈된 모든 소스에 대해 Apache 라이센스가 적용될 것인가 ? 기타 최초의 구글폰은 어떤 제조사에서 만들까 ? 최초의 구글폰은 어떤 통신사에서 나올까 ?
52 nd Korea Android Seminar - 초기 오픈 소스 영역 : 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 를 가진 하드웨어에서만 작동한다.
62 nd Korea Android Seminar 최초 시점에서의 안드로이드가 사용한 리눅스는 이었다 - 그리고 안드로이드 SDK 의 일부인 emulator 의 adb 를 통해 goldfish 를 위해 빌드된 커널 이미지를 만들기 위한 정확한 config 정보를 /proc/config 정보를 얻을 수 있었다. - 이를 통해 안드로이드의 리눅스 커널 관련 확장들에 대해 대략적으로 알 수 있었으며, 주요 관심사는 EABI 와 Binder 였다. - EABI 가 중요한 이유는, 에뮬레이터내의 다양한 바이너리 이미지들을 Target 단말에서 구동시키기 위해 필수적으로 필요했기 때문이다. - 현재 지금에서 안드로이드는 리눅스 커널 를 기반으로 확장되어 있다. - 안드로이드는 GNU/Linux 를 사용하지 않는다. - 이것이 의미하는 바는 안드로이드가 GNU 프로그램들을 탑재하지 않고, GNU 라이선스를 기반으로 하지 않기 때문이다. - 안드로이드는 Native windowsing system, glibc, 표준 unix 유틸리티 전체를 탑재하지 않고 있다. - 안드로이드의 리눅스 커널확장영역은 Alarm, Low Mem Killer, Ashmem, Kernel 디버거, Binder, PM, Logger 등이다. - 이중 가장 큰 특징은 Binder 와 Power Management(PM) 이다. 초기 오픈 소스 영역 : Linux Kernel
72 nd Korea Android Seminar - WebKit 의 장점은 Mozilla 2.0 Plan 의 상당한 부분을 반영했기 때문임 - XPCOM 의 제거, Javascript Performance 향상 ( 이부분은 최근 구글 크롬에 반영됨 ) WebKit 은 오픈 소스임에도 불구하고 왜 사용하기 어려운가 ? - 2D 그래픽엔진, UI, Windowsing, IO 의 부재때문임. 초기 오픈 소스 영역 : Webkit
82 nd Korea Android Seminar - 안드로이드 Eclipse Plugin 은 Eclipse 상에서 안드로이드 프로젝트의 생성, 코드 유효화, Apk 생성 및 설치, 모티터링 기능등를 제공함. - 여기서 중요한 것은, Android Apk 제작이 Android Library 인 android.jar 를 참조하여 만들어 진다는 것이며, 이는 안드로이드 apk 생성과 설치에는 포함되지 않는다는 것임. 초기 오픈 소스 영역 : Eclipse Plugin
92 nd Korea Android Seminar - 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 라이선스를 부여하기 위함임. 초기 이슈들 : Virtual Machine
102 nd Korea Android Seminar - 안드로이드 소스 공개 범위와 관련된 이슈들. - 최초시점에서 안드로이드의 가장 핵심이라 할 수 있었던 Dalvik VM 소스가 공개될 것인가에 대한 논란이 많았음. - 이유는 이것이 공개될 경우, 구글이 안드로이드의 변종들이 많아지는 것을 막을 방법이 없어서 제어능력을 상실할 수 있다는 것과 보안상의 헛점이 발생할 수 있다는 것이었음. 안드로이드가 라이선스와 관련된 이슈들 - 최초시점에서 안드로이드에는 Apache v2 라이선스가 적용될 것이라는 말이 있었음. - 하지만, 안드로이드에서 사용되는 Native Lib.( 내장 라이브러리 ) 들이 다양한 라이선스에 기반하고, 특히 packet video 같은 회사는 상용 s/w 회사인 이유로 어떻게 Apache v2 를 적용할 수 있는지 의문이 많았음. 초기 이슈들 : 공개범위와 라이센스
112 nd Korea Android Seminar 는 최초로 안드로이드 start-up 을 분석하였음. - 분석방법은 안드로이드 emulator 의 ramdisk 이미지를 재구성함으로서, 안드로이드 리눅스의 init 프로세스에서 참조하는 init.rc 를 수작업으로 실행하는 방법과 adb shell 을 사용하였음. - 이를 통해 대략적으로 안드로이드의 구동원리 및 mount 등에 대한 정보가 획득되었음. - 이 이후, 일부 사람들이 안드로이드를 target device 에 포팅하기 시작했음. - 안드로이드를 target 에 포팅한다는 것이 의미하는 바는 다음과 같은 것임. - 안드로이드의 리눅스 커널 feature 를 정확히 이해한다는 것. - 안드로이드의 start-up 구조를 이해한다는 것. - 여기서 안드로이드의 start-up 구조를 이해한다는 것은, 안드로이드 전체 구조를 이해하는데 매우 중요한 의미를 가짐. 초기 활동들 : 안드로이드 Start-up 분석 및 Target 포팅
122 nd Korea Android Seminar 안드로이드 app. 즉, apk 는 아래와 같은 과정을 통해서 만들어짐. - 이런 이유로 apk 는 unzip 을 통해 dex 과 resource 들로 압축해제 됨. - 하지만, dex 를 java class 로 reverse 하는 것은 현재까지는 없었음. - unzip 된 resource 파일들은 특별히 재구성된 binary 로 보임. - 에서 axml2xml.pl 이 배포된 적이 있음. - 이를 통해, 기존의 emulator 에 설치된 apk 를 reverse 해 볼 수 있었음. - 이것이 의미하는 바는 안드로이드 주요 apk. 를 만드는데 사용된 리소스 제작 방법을 알 수 있었다는 것임. 초기 활동들 : 안드로이드.apk Reverse
132 nd Korea Android Seminar 안드로이드 app. 컴포넌트로 크게 다음과 같은 것들이 언급됨. - Activity, Intent Receiver, Service, Content Provider 가 그것임. - 이중 Intent 와 관련하여 몇가지 질문을 던져보는 것이 가능함. 안드로이드는 특정 목적을 수행할 특정 app. 를 실행하는가 ? 안드로이드는 동일한 목적을 수행할려고 하는 app. 중 어떤 것을 선택하여 해당 app. 를 실행하는가 ? 안드로이드 플랫폼 상의 모든 intent 를 어떻게 알 수 있는가 ? - 웹에서 SOAP 과 UDDI 라는 개념이 존재함. - Open Intent 는 Intent 에 대한 Global Repository 에 같은 것일 수 있음. 초기 활동들 : Open Intent
142 nd Korea Android Seminar 안드로이드 개발자 챌린지 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 가 기술력이 탁월했거나, 또는 구글에 의한 제어가 가장 쉬었기 때문이라고 생각됨. 초기 활동들 : ADC I, HTC, T-Mobile G1
152 nd Korea Android Seminar - Linus Torvalds Blake RossDave Hyatt Ken Thompson & Dennis Ritchie Richard StallmanAlan Kay 오픈 소스 흐름 : 주요 인물들 Guglielmo Marconi (1874~1937) Tim Berners-Lee Brendan Eich
162 nd Korea Android Seminar - 구분 Copyleft Apache LicenseNo BSD LicenseNo GNU General Public License (GPL) Yes GNU Lesser General Public License (LGPL) Yes MIT LicenseNo Mozilla Public License (MPL) Yes Common Public LicenseYes Eclipse Public LicenseNo 오픈 소스 흐름 : 라이센스 종류들 - Public Domain vs. Open Source 를 구분할 필요 있음. - Copyright vs. Copyleft 한번쯤 생각해 볼 문제 : 주파수와 주파수 대역은 Public Domain 인가 ?
172 nd Korea Android Seminar - 안드로이드 소스 공개 : 2008 년 10 월 21 일 - core ProjectDescriptionProjectDescription bionicC runtime libc, libm, libdl, dynamic linker hardware /libhardware Hardware abstraction layout bootloader /legacy Bootloader reference code hardware /ril Radio interface layer buildBuild systemkernelLinux kernel dalvikDalvik virtual machineprebuiltBinaries to support Linux and Mac OS builds developmentHigh-level dev. and debugging tools recoverySystem recovery environment frameworks /base Core Android app framework libraries system /bluetooth Bluetooth tools frameworks /policies/base Framework configuration policies system /core Minimal bootable environment system/extrasLow-level debugging/inspection tools system /wlan/ti TI 1251 WLAN driver and tools
182 nd Korea Android Seminar - 안드로이드 소스 공개 : external & packages
192 nd Korea Android Seminar - 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 안드로이드 소스 공개 : Build - make, make sdk
202 nd Korea Android Seminar - 안드로이드 소스 공개 : PDK - boot, init, keyboard, display skip.
212 nd Korea Android Seminar - FamilyArchitecture VersionCore ARM7TDMI ARMv4TARM7TDMI(-S), ARM710T, ARM720T, ARM740T ARMv5TEJARM7EJ-S StrongARMARMv4SA-110, SA-1110 ARM8ARMv4ARM810 ARM9TDMIARMv4TARM9TDMI, ARM920T, ARM922T, ARM940T ARM9E ARMv5TEARM946E-S, ARM966E-S, ARM968E-S ARMv5TEJARM926EJ-S ARMv5TEARM996HS ARM10E ARMv5TEARM1020E, ARM1022E ARMv5TEJARM1026EJ-S XScaleARMv5TE 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 ARM11 ARMv6ARM1136J(F)-S ARMv6T2ARM1156T2(F)-S ARMv6KZARM1176JZ(F)-S ARMv6KARM11 MPCore Cortex ARMv7-A Cortex-A8, Cortex-A9 Cortex-A9 MPCore ARMv7-RCortex-R4(F) ARMv7-MCortex-M3 ARMv6-MCortex-M1 안드로이드 소스 공개 : Device Requirement
222 nd Korea Android Seminar - 안드로이드 소스 공개 : Build (make, make sdk) “Android Open Source” 게시판 make sdk : javadoc 오류 (patch 요구됨 )
232 nd Korea Android Seminar - 안드로이드 소스 공개 : Audio Subsystem
242 nd Korea Android Seminar - 안드로이드 소스 공개 : Power Management
252 nd Korea Android Seminar - 안드로이드 소스 공개 : Radio Interface Layer
262 nd Korea Android Seminar - 안드로이드 소스 공개 : Radio Interface Layer An solicited call in Android
272 nd Korea Android Seminar - 안드로이드 소스 공개 : Radio Interface Layer An unsolicited call in Android
282 nd Korea Android Seminar - 안드로이드 소스 공개 : RIL - qualcomm
안드로이드 Open Source 안드로이드 초기 초기 오픈 소스 영역 초기 논쟁들 초기 활동들 오픈 소스 흐름 안드로이드 소스 공개 안드로이드 상용화 이슈 시장참여자들의 관심사 이동통신사 관련 이슈 제조사 관련 이슈 컨텐츠 제공자 관련 이슈 s/w 개발 회사 관련 이슈 Android Roadmap 과 Korea 생각해 볼만한 것들
302 nd Korea Android Seminar - 시장참여자들의 관심사 이동통신사 기존 이익 모델과의 상관관계 안드로이드 시장 볼륨 그리고 그 가능성 칩셋 및 휴대폰 제조사의 생산능력 및 망호환성 기존 또는 신규 정보제공자의 안드로이드 App. 개발능력 및 참여 ( 휴대폰 ) 제조사 이동통신사에 의한 시장 보장 Chipset 확보 및 안드로이드 플랫폼 탑재 능력 필요한 애플리케이션 개발 능력 3 rd Party 플랫폼 및 애플리케이션 개발 회사와의 협력 다양한 디바이스로의 안드로이드 시장 확대 가능성 - 칩셋제조사
312 nd Korea Android Seminar - 컨텐츠 제공자, 포탈 또는 기타. 웹에 대한 접근성 제약의 근본적 해결 (Open Access) 의 대안 ? Open Access : Network, Device, Application, Service 모바일 Killer Content 런칭 다양한 휴대폰 플랫폼에 하나의 플랫폼이 추가 ? 소프트웨어 개발회사 휴대폰 제조사에 의한 개발 시장 이동통신사에 의한 개발 시장 컨텐츠 제공자에 의한 개발 시장 안드로이드 디바이스 시장의 확대에 따른 시장 확대 마켓플레이스를 통한 독자적 시장 진출 시장참여자들의 관심사
322 nd Korea Android Seminar - 이동통신사 관련 이슈 이슈 1. 국내 안드로이드 폰, 출시 및 전략은 ? ( 아래의 LGT, KTF, SKT 관련 내용은 개인적 견해임 ) - LGT : 오즈 & 안드로이드 - KTF : KT 중심의 유무선 통합 & Android - SKT : 웹으로의 확장 이슈 2. 이통 3 사의 안드로이드 폰 출시 이후의 이슈 Apache V2 라이센스 소비자는 ? 제조사는 ? s/w 회사는 ? 그래서 구글은 ? 통신사별로 수정된 Android 의 등장
332 nd Korea Android Seminar - No.TitleDescription 1Understand Open Source Open License Open Source Software License : GPL, Apache v2, etc. 2Booting 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 3I want my ADB! Get ADB(and USB) working early / Fastboot and other tools 4Drivers: Drivers: Kernel or User-space / Porting Drivers 5The RIL Shim Layer RIL,RIL API,Enhancing the RIL, Certification, Tops 6Accelerate Multimedia in HW Software codes requires lots of CPU H.264 decode example Android easily supports acceleration, Tips 7Add a good GPS solution Location tech / Locations metrics / Location Manager runs in Server Processor / Adding GPS Solution 8Maximize performance, minimize power Performance and power, Suspend/Idle, Clocks, Devices, Tips 9Misc Misc things to not forget about 10An Integrated Android Solution A vertically integrated and optimized Android solutions? 주요이슈 : Linux Kernel + Patch, Drivers, HAL 제조사 관련 이슈
342 nd Korea Android Seminar 모바일의 가장 중요한 특징은 ? 이동성 / 신속성 … - Mobile Killer Content 는 무엇일까 ? 전화, 메시지, 지도.. - 모바일, 가치의 창출인가 ? 가치의 이동인가 ? - Open Access, 가치 창출을 위한 도구가 될 것인가 ? 아니면 공정 경쟁의 인프라가 될 것인가 ? vs. 컨텐츠 제공자 관련 이슈
352 nd Korea Android Seminar - 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 - git://android.git.kernel.org/ 와의 관계 설정 ? - 독자적인 Branch 또는 PDK 활용능력 - Native Package 개발 능력 - Marketplace 용 App 개발 s/w 개발 회사 관련 이슈
362 nd Korea Android Seminar /4 분기 Localization : 문자열, 사용자 인터페이스, 날짜 및 숫자 표기 Support for multiple APNs SIM application toolkit (STK) /4 분기 Input method framework (IMF) Input method engines (IME) Android Roadmap 과 Korea
372 nd Korea Android Seminar - 생각해 볼만한 것들 생각해 볼만한 것들. 구글 안드로이드 팀과 같은 내부 역량을 확보할 수 있는가 ? 한국내 OHA 는 가능한가 ? korea android SDK 를 만들어 배포하는 것은 어떤가 ? 한국형 ADC 는 가능한가 ? 국내 안드로이드 폰 출시를 위한 공동협력구조는 가능한가 ? korea android Marketplace 가능한가 ? 정부와 소비자들의 참여방법은 없는가 ? QWERTY / Numeric / Soft keybord ? 기 존재하던 WIPI 또는 Native 애플리케이션의 포팅 책임은 ?
382 nd Korea Android Seminar - 알림 : 안드로이드 개발보드 - ㈜아크로엠 AC6400 ITEMSpec.Description CPUS3C6400ARM1176JZF-S CORE(400/533/667MHz) SDRAM 삼성 mDDR 128Mbyte, 32bit access, clock speed 266MHz NAND FLASH 삼성 NAND LARGE BLOCK 1Gb (128Mbyte) NOR FLASHAMDNORFLASH 8Mb(1Mbyte), 16Bit(LIMIT 64Kbit) AUDIO CODECWM9713 STEREO 400mW 출력 스피커, MIC IN, HEAD SET 지원 GRAPHIC2D 2D GRAPHIC CONTROLLER 지원 USB2PORT USB 2.0 OTG (HOST, CLIENT) USB HOST 1.1 UART4PORT UART0: DEBUG, UART1:Bluetooth UART2:GPS, UART3: RXD, TXD, GND( 통신포트 ) VIDEO (TV-OUT) 2PORTS-VIDEO, COMPOSITE DMB 지상파 DMB P2(RXD,TXD,DMB(Option), 기존 DMB 칩 제품보다 40% 이상 줄어든 60mW 이하의 저전력 CAMERAMICRON 2M PIXEL AUTO FOCUS 지원, PREVIEW 기능 & SNAP SHOT 기능 ETHERNETCS BASE-T 지원, LINK LED 지원 SD/MMC1PORTSD Host&High Speed Multi-MediaCard Interface HDD1PORTFPC/FFC Connector Interface BLUETOOTHUART1BLUETOOTH TECHNOLOGY BASE ON CSR BC04-ROM GPS 삼성 GPS MODULE Cold < dBm Hot < dBm Worm < dBm LCD7”WVGA 800x480 16bit (Data enable mode 사용 ) Battery 3.7V FULL OPERATION 1 HOUR 이상 CHARGET, PMICSMB122 AC & BATTERY SWITCHING 기능, 배터리 PROTECTION, AC PRESENT 신호 출력, cc-CV 충전
392 nd Korea Android Seminar - 질의 및 응답 이곳에 메모해 두셨다가 행사 마지막 시간 ( 오후 5 시 ~ 오후 6 시 ) 에 질의해 주세요.