android裝置開發過程的軟硬整合關鍵及挑戰

30
Android 裝 置 開 發 過 程 的 軟 硬 體 整 合 關 鍵 及 挑 戰 Tick Chen, 0xlab June, 9, 2009

Upload: tick

Post on 10-Jul-2015

4.204 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Android裝置開發過程的軟硬整合關鍵及挑戰

Android裝 置 開 發 過 程 的

軟 硬 體 整 合 關 鍵 及 挑 戰

Tick Chen, 0xlabJune, 9, 2009

Page 2: Android裝置開發過程的軟硬整合關鍵及挑戰

自我介紹

•TICK •電玩的時間單位

•貓蝨

Page 3: Android裝置開發過程的軟硬整合關鍵及挑戰

Agenda

•Android 是什麼?

• 開發 Android 的困難點

•軟硬體整合的關鍵

•結論

Page 4: Android裝置開發過程的軟硬整合關鍵及挑戰

Agenda

•Android 是什麼?• 開發 Android 的困難點

•軟硬體整合的關鍵

•結論

Page 5: Android裝置開發過程的軟硬整合關鍵及挑戰

What's Android?

•Google 為手持(移動)裝置而設計的一整套系統。–整合Google 的服務–建構到處上網的環境–打破桌機上網的使用習慣–建構全新的上網經驗

Page 6: Android裝置開發過程的軟硬整合關鍵及挑戰

Android is Linux?

Page 7: Android裝置開發過程的軟硬整合關鍵及挑戰

Android 預期中的明天

•到處都可以上網的時代

•更多的個人化服務

•結合地理資訊和個人喜好

•人人都可以寫手機軟體:跳蚤市埸

Page 8: Android裝置開發過程的軟硬整合關鍵及挑戰

她!適合你嗎?

•選擇一個軟體平台,也同時決定了很多事。–Technology

–User scenario

• … …求婚之前 你可以再想一想

Page 9: Android裝置開發過程的軟硬整合關鍵及挑戰

Agenda

•Android 是什麼?

• 開發 Android 的困難點•軟硬體整合的關鍵

•結論

Page 10: Android裝置開發過程的軟硬整合關鍵及挑戰

[準備出貨嗎? ]

Page 11: Android裝置開發過程的軟硬整合關鍵及挑戰

關鍵

在有限的時間及資源下開發出產品

Page 12: Android裝置開發過程的軟硬整合關鍵及挑戰

Android 開發時的困難點

• 在 porting 時,大於等於 Linux porting– 所有 devices 的 porting

–Google hacking

• 對於 Framework 的掌握度

• 不完整的 HAL 層(現況)

• 大量的 hard code

• 專為 HTC platform 而寫的部份相當的多

•Android 依然在快速演進

• 不易使用現有的 Linux 應用程式

Page 13: Android裝置開發過程的軟硬整合關鍵及挑戰

關鍵項目

•人力資源

•工具使用

•良好的溝通

Page 14: Android裝置開發過程的軟硬整合關鍵及挑戰

人力資源•懂架構的人

–能快速看懂架構,且有能力修改的人

•基本功很重要

–Trace Code 要能快速確實–OS 架構要清楚–熟悉 C, C++, Java –善用工具

•好品質可以幫你省錢

–能寫出高品質程式碼的工程師

•細心的人

–驗証專家

Page 15: Android裝置開發過程的軟硬整合關鍵及挑戰

工具

• 提高正確性• 減少重覆的工作• 專注資源於問題上• 避免爆肝和工作狂• 生命應該要浪費在美好的事物上

Page 16: Android裝置開發過程的軟硬整合關鍵及挑戰

工具的使用:人類文化發展的關鍵

•開發工具

•管理,溝通工具

Page 17: Android裝置開發過程的軟硬整合關鍵及挑戰

Code 2.0•Repo

•Git

•分散式開發模式

• 以 git branch 來管理程式碼

• 程式碼合併 (Merge):–Branches merge

–Cherry-pick

–Octopus merge

Page 18: Android裝置開發過程的軟硬整合關鍵及挑戰

Toolchain

•徹底的發揮硬體效能

•Instruction Set 混用可能出現的問題–不可預期的錯誤– 無法正確使用廠商的 library

• 使用正確的 Instruction Set

• 統一所使用的 Toolchain

Page 19: Android裝置開發過程的軟硬整合關鍵及挑戰

Build System

• 不自由的 Build 環境

•Makefile

•Prelink-linux-arm.map – 人工指定

•Android.mk–Bionic

–Autotools?

Page 20: Android裝置開發過程的軟硬整合關鍵及挑戰

Tracing Code 工具

• 茫茫 Code 海之中找到關鍵程式碼

• 跨語言 Tracing

•LXR

•doxygen

•eclipse

•grep

•ctags

Page 21: Android裝置開發過程的軟硬整合關鍵及挑戰

管理、溝通工具

•產品規格書的重要性 ? 一個溝通的平台。–一個想法,各自表述?

•產品規格書的版本管理–同一時間點,每個人要看到相同的規格書

•Issue Tracker專注資源於真正的問題上

Page 22: Android裝置開發過程的軟硬整合關鍵及挑戰

驗證

•穩定、

•驗證、

•可靠性、

•成本、

•驗收、

•先想好如何測試

Page 23: Android裝置開發過程的軟硬整合關鍵及挑戰

硬體模組的選擇和搭配

•選擇硬體–整合成本–Cost

•選用已被証明過的組合

•選用開發動能高的平台–支援度高–資源多–借力使力

Page 24: Android裝置開發過程的軟硬整合關鍵及挑戰

Driver Checklist

•CPU

•Memory

•Uart

•Video chip

•LCD/Panel

•Audio codec

•Touchpanel/Mouse/Traceball

•NAND/NOR Flash

•SD/MMC

•USB host/OTG

•Connectivity: WiFi,

•Bluetooth, GSM/UMTS/CDMA

•Camera / GPS

•Power Manager

Page 25: Android裝置開發過程的軟硬整合關鍵及挑戰

Community

•“Who write the code, who get the power”– 聲望在社群之的重要性 -- 機會–一步步領導科技的走向

•Patch–Community 改 code 的方式– 用 patch 得到特定領域的主導– 每個 patch都有一個也只有一個特定的目地

•upstream 才是王道 ? Yes/No

•Follow up to upstream

Page 26: Android裝置開發過程的軟硬整合關鍵及挑戰

Agenda

•Android 是什麼?

• 開發 Android 的困難點

•軟硬體整合的關鍵

•結論

Page 27: Android裝置開發過程的軟硬整合關鍵及挑戰

結論

•Android 是否符合產品需求

•選擇開發動能較大的平台,借力使力

•尋找,培養有實力的開發團隊

•使用適當的工具,加速開發

•確實的驗証軟體品質

Page 28: Android裝置開發過程的軟硬整合關鍵及挑戰

Reference

•https://review.source.android.com/

•http://groups.google.com/group/android-porting

Page 29: Android裝置開發過程的軟硬整合關鍵及挑戰

Special Thanks

Page 30: Android裝置開發過程的軟硬整合關鍵及挑戰

~ Q & A ~Thank you.