10th Kandroid Conference
The Gate of the AOSP #3 : Externals and Extras
행사일정
일시 : 2012년 10월 26일(금) 오전 9시 ~ 오후 6시
장소 : (주)포스코P&S 타워 3층 (역삼역3번출구)
좌석 : 잔여석 (128) / 총 240 석 (※ 작고 아담한 공간입니다.) [사전등록 현황 보기]
대상 : 안드로이드 플랫폼/애플리케이션에 관심있는 분
주최 : www.kandroid.org
프로그램
사회 : NHN 김영임 부장
입장 : 08:30 ~ 09:00

시간 발표 내용 발표자
09:00 ~ 09:40
Android Externals and Git Technology

세션목표 : Android Platform에서 External 이란 외부 오픈 소스 라이브러리들을 의미합니다. Android Platform에 포함되어야하는 기능이 많아짐에 따라 지속적으로 External에 포함된 라이브러리가 늘어나고 있으며, 포함된 라이브러리가 필요하게된 중요한 의미를 갖고 있다고 생각됩니다. 따라서 Android 에서 어떤 라이브러리들을 사용하고 그 라이브러리들이 Platform History 에서 어떤 의미가 있는지 살펴보고자 하며. 각 라이브러리 Project를 분석하기 위해 Git 의 Workflow 를 활용하는 방법을 살펴보고자 합니다.

Android Externals
- Android External Branch Overview
- History : Android Release Timeline vs. Git Commits

Android and Git
- What is Git? : Simple Overview
- Android Git Workflow
- Android Code Review System Details
- Usage Patterns : Upstream, Downstream, init, Merge ....

Key Project & Person
- Key Project : Timeline/Platform version based analysis
- Key Person : Lead & Subsystem Maintainer, Contributor ...
조병호(Jo, Byoung Ho)
- 닉네임(qnight)
- 어헤드원
09:50 ~ 10:40
Skia and Freetype - Android 2D Graphics Essentials

세션목표 : S/W 플랫폼에 있어 GUI(Graphical User Interface) 시스템은 해당 플랫폼의 성능을 결정짓는 매우 중요한 요소이다. Android 역시 새로운 버전을 발표할 때마다 GUI 시스템의 성능을 꾸준히 개선하여 최근에 릴리즈된 Jelly Bean에 와서는 iOS에 필적할만한 성능을 보여주고 있다. 이번 세션에서는 이벤트 처리 기술과 더불어 GUI 시스템의 한 축을 이루고 있는 2D Graphics 기술을 Android에서 어떻게 활용하고 발전시켜 왔는지에 대해 살펴본다.

Android 2D Graphics
- Architecture Overview
- Evolution of Drawing Models :
   GPUI, DisplayList, Display List Property

Skia: 2D Graphics Library
- Skia in Android
- Skia API Overview
- Skia Backends: Raster, OpenGL, PDF, ...
- Comparision : Skia based vs. View(HWUI) based GPUI

FreeType: Font Engine
- FreeType in Android
- FreeType API Overview
- Font Rasterization: Scan-conversion, Hinting
- Comparision : Skia based vs. Freetype based Rasterization
이경민 (Kyungmin Lee)
- 닉네임(snailee)
- LG전자
10:40 ~ 11:10 휴식
11:10 ~ 12:00
Extras in Android - Troubleshooting

세션목표 : 안드로이드는 개발에 도움을 줄 수 있는 다양한 software tool들을 갖추고 있다. 개발자들은 BSP개발부터 안드로이드 응용 개발에 이르기까지 다양한 문제들을 만나게 된다. 이 세션에서는 안드로이드가 제공하는 문제 해결에(troubleshooting) 유용한 tool에 대해 논의한다. 그리고 JellyBean에 새롭게 추가된 systrace-atrace의 특징과 이전에 있던 traceview와의 차이점에 대해서 생각해 보고 SW적인 디버깅의 한계와 나아갈 방향에 대해서도 고민해 본다.

Introduction
- Review of extras and external directory
- What is troubleshooting
   . 정상 종료(crashed)와 성능문제(performance)
   . HW-based and SW-based approaches

Troubleshooting
- Process Crashed
   . Tombstones and debuggerd: how to analyze tombstones files
   . Bugreports and analysis
- Performance improvements
   . Traceview
   . Systrace and atrace
- Etc in extras & external

Closing
- Limitation of SW-based approaches
- Hope for Android
고영화(Youngwha Ko)
- 닉네임(youngwha)
- MDS technology
12:10 ~ 13:00
Dbus and BlueZ - Dbus vs. Binder

세션목표 : 블루투스는 WIFI/NFC의 장점을 흡수하고 연동하면서 발전하고 있으며, 새롭게 정의된 LE(Low Energy) 기능이 아이폰5에 신기술로 적용 되면서 기술의 파급력이 커지고 있는 추세이다. 본 세션에서는 안드로이드 젤리빈 블루투스 아키텍처의 내부 구성요소와 동작 방식을 DBUS와 BLUEZ를 중심으로 살펴본다. IPC 관점에서 DBUS와 BINDER의 비교 설명은 본 세션만의 특징점이며, 블루투스를 이용한 파일 전송, 무선 스피커, 핸즈 프리 등의 동작 메커니즘을 심도 있게 분석한다. 세션에 참가한 동기야 어떻든, 무엇보다 재미를 느끼기를 바랍니다.

Introduction
- Important of Android Connectivity
- Android Bluetooth Overview
- Bluetooth Usage Cases in Android
- Android Bluetooth Architecture

D-Bus
- D-Bus Overview
- Why D-Bus?
- Comparison between D-Bus and Binder
- Event Handling Patterns
- Code Analysis related to D-Bus

BlueZ
- Bluetooth Technology Overview
- Introduction to Bluetooth Profiles
- Bluetooth Daemon(bluetoothd) in Android
- How to Add New Features into BlueZ
최순혁(Soonhyuk Choi)
- 닉네임(Nicehyuk)
- LG전자 MC연구소

김태연(Edward T. KIM)
- 닉네임: 에드워드(Edward)
- 부산대학교 소프트웨어
  품질 연구실(SQUARE Lab.)
13:00 ~ 14:30 점심 시간
14:30 ~ 15:20
Speech Interface technologies for Smartphone

세션목표 : 안드로이드폰과 아이폰으로 대표되는 스마트폰 사용자가 급속도로 늘어나면서 정보처리 및 검색기술과 음성 인터페이스기술이 밀결합하여 보다 스마트한 UX 를 제공하기 위해 많은 노력들이 일어나고 있다. 이에, 본 세션에서는 음성인식 및 음성합성 기술로 대표되는 음성 인터페이스 기술의 알고리즘 적 요소와 이를 실현하기 위한 서버 사이드 및 클라이언트(스마트폰) 사이드에 필요한 기술, 기술의 현재 수준, 기술의 성능개선 방향 등에 관해 심도있게 논의한다. 음성인터페이스 기술은 특히나 안드로이드폰이나 아이폰과 같은 OS 플랫폼과는 상당히 독립적인 기술로 구성되며, 또한 그렇게 운영됨을 이해해야 한다. 본 세션에서 설명되는 내용은 꼭 안드로이드폰에 특화된 어떤것에 관한 내용은 많지 않다.

개요: 스마트폰과 음성인터페이스 기술, 그리고 비지니스

- 음성인터페이스를 구성하는 기술트리: 음성인식, 음성합성, 서비스 아키텍쳐
- 서버 사이드 및 클라이언트 사이드의 역할
- 각 기술의 사용방법 및 성능개선 방법
  (주의할 사항은 성능개선 관점에서는 단순 API 활용 App 개발자 측면에서는 할일이 많지 않다)

음성 인터페이스 플랫폼 이해

- Google 음성 API
- Nuance Nina API
- SVOX API

김종진(Jong-Jin Kim)
- 닉네임(파란하늘)
- NHN 기술연구팀
15:30 ~ 16:20
LLVM, Clang and GDK

세션목표 : 본 세션에서는 iPhone용 Xcode 개발환경의 컴파일러로 사용되는 있는 오픈 소스 프로젝트인 Clan과 LLVM을 소개한다. 안드로이드에서 고성능의 그래픽 처리를 위한 RenderScript 기술에 국한되어 사용되었던 LLVM 기술과 LLVM의 컴파일러 Frontend로 사용되는 Clang이 최근들어 NDK/GDK에 사용될 것으로 예상되고 있다. 모바일 플랫폼의 두 축을 형성하고 있는 Apple과 Google이 Clang과 LLVM에 주목하는 데에는 그 이유가 있다고 보며, 이 세션을 통해 그것에 대한 해답을 얻을 수 있을 것으로 기대한다.

Background History
- LLVM and RenderScript
- NDK : Current State and Issues(limitations)

LLVM(Low Level Virtual Machine)
- Why/What is LLVM?
- LLVM IR(Intermediate Representation)
- Lifetime long optimization / Multi-stage optimization

Clang : LLVM Compiler Frontend
- Why new Compiler Frontend : Motivation and Features
- Clang Architecture
- Integrate clang into IDEs - Clang and EClipse CDT

Clang/LLVM vs. GCC Issues and GDK git branch
- Issue #1 : LLVM vs. GCC Optimization
- Issue #2 : Clang vs. GCC Static Analysis
- GDK : What is GDK?
- GDK : Why GDK uses Clang/LLVM?
  Frame Rate Drawing Performance Comparison - LLVM vs. GCC
양정수(Yang, Jeong Soo)
- 닉네임(들풀)
- www.kandroid.org 운영자
16:20 ~ 16:50 휴식
16:50 ~ 17:40
QEMU and Valgrind - Emulator and Memory Technology

세션목표 : 안드로이드 에뮬레이터로 사용되는 QEMU와 Native 애플리케이션의 메모리 누수현상을 분석하는데 사용되는 Valgrind를 하나의 주제로 담은 것은 이들 모두가 Dynamic Binary Translation 기술에 기반하기 때문이다. 특히 QEMU 기술은 최근들어 다양한 기술과 접목되면서 많은 변화를 보이고 있으며, Valgrind 기술 역시 s/w 개발자라면 영원히 고민해야 하고 정확히 알야하 하는 메모리에 관련되었다는 점에서 충분히 검토할 가치가 있다고 본다. 본 세션에서는 이와 관련된 내용을 다양한 측면에서 검토해 볼 예정이다.

Background History and Knowledge
- Android Emulator vs. IPhone Simulator
- Dynamic Binary Translation and Instrumentation
- Memory Issues : Fragmentation and Leakage

QEMU : Emulation vs. Performance
- What is QEMU?
- Goldfish Linux Kernel and Supported ABI(arm,x86,mips)
- QEMU Build System : Android Build System, Cygwin, MinGW
- Emulation + Simulation(?) : OpenGL GPU Emulation
- Emulation + H/W Virtualization : x86 and Google TV Emulator
- Advanced Topics :
  LLVM Backend for QEMU
  Can we dream about real s/w phone or cloud phone ?

Valgrind : Memory Leak vs. Memory Management
- What is Valgrind?
- Valgrind Build and Installation for Real Target
- Valgrind Issues : No Swap and OOM Killer
- Memory Analysis Tools & Memory Management Methods
  (Java:MAT, JNI:Golbal/Local Ref, C++:sp,wp, SysV Shmem)
- Advanced Topics :
  Valgrind and LLVM’s AddressSanitizer
  What Every Android Programmer Should Know About Memory?
양정수(Yang, Jeong Soo)
- 닉네임(들풀)
- www.kandroid.org 운영자