Android 深入研究和學習的課程

0
Android 深入研究和學習的課程
Android是Google基於Linux開發的智能手機操作系統,廣泛應用於3G手機、上網本等。目前處於爆發式增長階段,HTC(宏達電 多普達)、摩托羅拉、索愛、三星等眾多公司紛紛推出基於Android智能操作系統,甚至很多上網本也使用Android操作系統。目前Android是最熱門的智能操作系統,憑借Linux的軟件優勢其應用的廣泛程度已經讓其他對手相形見絀。所以學習Android操作系統具有巨大的意義。

這次平台使用omap3530-Devkit8000套件開發板來進行對android深入研究和學習。



◆ Android操作系統概述

1. Android系統架構

2. Android應用設計理念

3. Android 開源知識

4. Android 參考網站與權威信息



◆ Android SDK及其開發環境搭建

1. Android SDK的版本發布

2. ADT插件的安裝和更新

3. Android應用程序架構

4. 建立第一個Android項目(HelloAndroid!)

5. 通過Eclipse導入一個開源項目

6. 可視化的界面開發工具

7. 部署應用程序到Android模擬器或手機



◆ Android 源代碼開發環境搭建與源碼結構分析

1. 開發系統主機環境搭建

2. 安裝軟件包Required Packages

3. Ubuntu 9.10

4. Install javva

5. 源碼結構分析Android source (kernel platform application)

6. Android build 分析

7. Android system 分析

8. Android framwork 分析

9. Android bring up



◆ Android 應用程序設計模型

1. drawable

2. layout

3. values(strings.xml、colors.xml、style.xml 、arrays.xml等)

4. R.java分析及使用

5. AndroidManifest.xml

6. Android.mk

7. Activity

8. Intent

9. Service

10. ContentProvider



◆ Android 應用程序界面(一)

1. TextView的使用

2. drawable的使用

3. 引用Drawable顏色常數及背景色

4. CharSequence數據類型與ResourceID應用

5. DisplayMetrics的使用

6. Style樣式的定義

7. Button事件處理

8. setContentView的應用

9. Intent對象的使用

10. Bundle對象的實現

11. startActivityForResult方法

12. AlertDialog窗口

13. Button與TextView的交互

14. Typeface對象使用

15. Gallery對象

16. 多按鈕應用

17. Menu功能菜單程序設計

18. ProgressDialog與線程應用

19. 動態產生按鈕並最大化

20. 選擇功能的對話框

21. Android主題(Theme)實現

22. 支持多種分辨率的屏幕



◆ Android應用程序界面(二)

1. EditText與setOnKeyListener事件

2. ImageButton的焦點及事件處理

3. Toast對象的使用

4. CheckBox的isChecked屬性

5. 多選項CheckBox的應用

6. RadioGroup組與onCheckedChanged事件

7. ImageView的堆棧應用

8. Spinner與setDropDownViewResource

9. ArrayList與Widget的依賴性

10. Gallery與衍生BaseAdapter容器

11. JavaI/O的應用

12. ImageButton選擇特效

13. AutoCompleteTextView與數組

14. AnalogClock與DigitalClock的原理

15. DatePicker與TimePicker應用

16. ImageView點擊事件與透明度處理

17. ProgressBar與Handler的整合應用

18. GridView與ArrayAdapter設計

19. ListView的布局

20. ListActivity與Menu整合技巧

21. JavaI/O與ListActivity的結合

22. 使用decodeFile方法

23. 運用Matrix對象來縮放圖文件

24. Bitmap與Matrix旋轉ImageView

25. RadioButtonID

26. 對話窗口上的ICON圖標



◆ Android 應用交互與手機模塊控制

1. PendingIntent與AlarmManager

2. PendingIntent 與 SmsManager

3. Intent 與 Email

4. 數據存儲方式

5. NotificationManager與Notification

6. Adapter對象與Cursor

7. TelephonyManager的應用

8. RunningTaskInfo的應用

9. Provider.Contact的使用

10. Provider.Calendar的使用

11. Service與Runnable整合並用

12. BroadcastReceiver與Intent

13. receiver與intent-filter

14. Android網絡編程

15. HTTP請求與連接

16. WebView.loadUrl

17. Webkit 與 WebCore

18. HttpURLConnection與URLConnection和運行線程

19. Runnable混搭SurfaceView

20. Google ApI



◆ Android 系統服務

1. Activity Manager

2. Windows Manager

3. Surface Manager(surface flinger)

4. Package Manager

5. Telephony Manager

6. Content Provider

7. Resource Manager

8. AssetManager

9. View System

10. Location Manager

11. Notification Manager

12. AlarmManager

13. BatteryManager

14. HardwareManage

15. 如何添加一個新系統Service並開放API

16. 關鍵服務

17. Android系統啟動流程



ARM平台 Android 移植與驅動核心開發

Android嵌入式智能操作系統是基於Linux內核和驅動的,對於 HTC、華為等公司開發Android操作系統時,需要專門將Android移植到特定硬件平台下,同時將必要的驅動進行編寫及開發。本課程旨在讓學員成為Android的核心層開發者,讓學員在這種嵌入式設備廠商中謀得核心開發人員的職位。



◆1. Android系統體系及移植相關工具

1.1 Android操作系統體系結構介紹

Android Linux內核移植介紹

文件系統, toolbox等移植

存儲驅動移植

Bootloader相應方案與移植

Android虛擬器Dalvik移植介紹



1.2 ARM處理器介紹

ARMv5TJS

ARM中斷處理

ARM體系結構與ARM處理器的體系結構

IP核、芯片與開發板

ARM處理器結構 處理器模式

. 寄存器

. 流水線結構

C語言內嵌匯編格式 與編程實例



1.3 ARM指令系統

. 算術邏輯指令

. 指令對狀態寄存器的影響

. 比較指令

. 分支指令

. 移位

. 指令位圖

. 識別機器指令



1.4內存訪問與內存控制

. 數據總線與地址總線的使用與實例

. STR/LDR



1.5 ARM過程調用標准

. LDM/STM

. 反匯編

. APCS

. C語言函數與匯編的互相調用



【案例】 使用Android Linux patch進行Linux內核的構建



2. Android Linux內核移植與核心開發



2.1 ARM處理器的Android系統構建

2.2 輸入輸出設備驅動移植

2.3 存儲設備nand flash,MMC/SD卡驅動移植

2.4 Framebuffer移植

2.5 Touchscreen移植

2.6 Open Binder IPC移植

【案例】

2.7 在ARM處理器上移植Android試驗

2.8 編寫Nand flash驅動

2.9 移植Framebuffer驅動

2.10 硬件相關部分(鍵盤、觸摸屏、LCD等)



3. Android相關環境 庫、以及Bionic系統移植

3.1 libc移植

3.2 libm移植

3.3 libdl移植

3.4 libm移植

3.5 busybox, toolbox移植

【案例】

1. 移植glibc

2. 移植busybox和toolbox



4. Android Dalvik移植一

4.1 JNI Call Bridge相關原理

4.2 dx, dalvitvm原理和使用

4.3 Dalvik指令格式

4.4 Dalvik執行格式dex

4.5 Java字節碼格式



5. Android Dalvik移植二

5.1 Dalvik Library原理

5.2 dalvit libcore核心庫移植

5.3 dalvit/vm/native移植

5.4 Dalvik Interpreter原理

5.5 Dalvik Mterp



6. ARM AT&T匯編

. AT&T匯編語法詳解

. gas工具的使用

. label標簽的作用

. 數據與代碼的分布



7. 鏈接腳本ld-script

. 段地址的確定

. 編寫ld-script

. ELF格式與libc函數庫的關系



8. 時序電路基礎

. 電平信號

. 電路圖分析

. 時序圖分析

. datasheet查看

. OMAP3530的外圍器件結構

. GPIO操作



9. AMBA總線標准

. AMBA總線標准

. FCLK/HCLK/PCKL頻率分配與設置

. Watchdog計時操作

. UART操作

. ARM中斷體系

. 異常向量表

. ARM模式切換

. ARM中斷控制器

. 軟中斷

. Linux系統調用的實現



10. Nand Flash控制器

. Flash原理

. Nand控制器原理及時序分板

. OMAP3530 NAND Flash時序分析



11. 內存控制器

. OMAP3530物理地址分布

. SDRAM原理與時序

. 內存控制器的物理連接

. 地址對齊

. SRAM訪問



12. 內存管理單元

. MMU的原理

. ARM協處理器指令

. section模式

. small page模式

. I & D TLBs

. I & D Cache

. 哈佛結構的原理與實現



13. DMA 直接內存訪問的機制與使用

. DMA的狀態機

. DMA的控制



14. 觸摸屏接口與ADC接口與實例

. ADC原理

. 觸摸屏接口與控制



15. LCD控制器

. 圖形顯示原理

. LCD控制器

. LCD時序

LCD驅動相關的框架與體系



16. I2S音頻總線

. 音頻硬件原理

. I2S時序

. OMAP3530上I2S的操作

音頻設備的裸驅動討論



17. DM9000網卡控制

. 邏輯鏈路層與MAC層

. DM9000原理與時序分析

後續網卡裸驅動討論與體系結構



18. TCP/IP協議棧移植,與網絡體系結構

. LwIP TCP/IP協議棧簡介

. LwIP配置與編譯

. tftp配置與編譯



19. Bootloader原理與移植

. u-boot的配置、編譯

. u-boot啟動過程分析

. ARM-Linux的啟動要求

. ARM-Linux kernel的ld-sript分析

. u-boot到ARM-Linux的跳轉代碼分析

. 使用mkimage制作啟動鏡像文件



20. ARM-Linux原理與移植

. ARM-Linux的配置、編譯

. ARM-Linux啟動代碼分析

. ARM-Linux 地址映射的關系;

. Busybox的配置、編譯




引用 linweig

0 意見: