android裝置開發過程的軟硬整合關鍵及挑戰
TRANSCRIPT
Android裝 置 開 發 過 程 的
軟 硬 體 整 合 關 鍵 及 挑 戰
Tick Chen, 0xlabJune, 9, 2009
自我介紹
•TICK •電玩的時間單位
•貓蝨
Agenda
•Android 是什麼?
• 開發 Android 的困難點
•軟硬體整合的關鍵
•結論
Agenda
•Android 是什麼?• 開發 Android 的困難點
•軟硬體整合的關鍵
•結論
What's Android?
•Google 為手持(移動)裝置而設計的一整套系統。–整合Google 的服務–建構到處上網的環境–打破桌機上網的使用習慣–建構全新的上網經驗
Android is Linux?
Android 預期中的明天
•到處都可以上網的時代
•更多的個人化服務
•結合地理資訊和個人喜好
•人人都可以寫手機軟體:跳蚤市埸
她!適合你嗎?
•選擇一個軟體平台,也同時決定了很多事。–Technology
–User scenario
• … …求婚之前 你可以再想一想
Agenda
•Android 是什麼?
• 開發 Android 的困難點•軟硬體整合的關鍵
•結論
[準備出貨嗎? ]
關鍵
在有限的時間及資源下開發出產品
Android 開發時的困難點
• 在 porting 時,大於等於 Linux porting– 所有 devices 的 porting
–Google hacking
• 對於 Framework 的掌握度
• 不完整的 HAL 層(現況)
• 大量的 hard code
• 專為 HTC platform 而寫的部份相當的多
•Android 依然在快速演進
• 不易使用現有的 Linux 應用程式
關鍵項目
•人力資源
•工具使用
•良好的溝通
人力資源•懂架構的人
–能快速看懂架構,且有能力修改的人
•基本功很重要
–Trace Code 要能快速確實–OS 架構要清楚–熟悉 C, C++, Java –善用工具
•好品質可以幫你省錢
–能寫出高品質程式碼的工程師
•細心的人
–驗証專家
工具
• 提高正確性• 減少重覆的工作• 專注資源於問題上• 避免爆肝和工作狂• 生命應該要浪費在美好的事物上
工具的使用:人類文化發展的關鍵
•開發工具
•管理,溝通工具
Code 2.0•Repo
•Git
•分散式開發模式
• 以 git branch 來管理程式碼
• 程式碼合併 (Merge):–Branches merge
–Cherry-pick
–Octopus merge
Toolchain
•徹底的發揮硬體效能
•Instruction Set 混用可能出現的問題–不可預期的錯誤– 無法正確使用廠商的 library
• 使用正確的 Instruction Set
• 統一所使用的 Toolchain
Build System
• 不自由的 Build 環境
•Makefile
•Prelink-linux-arm.map – 人工指定
•Android.mk–Bionic
–Autotools?
Tracing Code 工具
• 茫茫 Code 海之中找到關鍵程式碼
• 跨語言 Tracing
•LXR
•doxygen
•eclipse
•grep
•ctags
管理、溝通工具
•產品規格書的重要性 ? 一個溝通的平台。–一個想法,各自表述?
•產品規格書的版本管理–同一時間點,每個人要看到相同的規格書
•Issue Tracker專注資源於真正的問題上
驗證
•穩定、
•驗證、
•可靠性、
•成本、
•驗收、
•先想好如何測試
硬體模組的選擇和搭配
•選擇硬體–整合成本–Cost
•選用已被証明過的組合
•選用開發動能高的平台–支援度高–資源多–借力使力
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
Community
•“Who write the code, who get the power”– 聲望在社群之的重要性 -- 機會–一步步領導科技的走向
•Patch–Community 改 code 的方式– 用 patch 得到特定領域的主導– 每個 patch都有一個也只有一個特定的目地
•upstream 才是王道 ? Yes/No
•Follow up to upstream
Agenda
•Android 是什麼?
• 開發 Android 的困難點
•軟硬體整合的關鍵
•結論
結論
•Android 是否符合產品需求
•選擇開發動能較大的平台,借力使力
•尋找,培養有實力的開發團隊
•使用適當的工具,加速開發
•確實的驗証軟體品質
Reference
•https://review.source.android.com/
•http://groups.google.com/group/android-porting
Special Thanks
~ Q & A ~Thank you.