第四堂 Android 的架構與開發工具

33
第第第Android 第第第第第第第第 第第第 Jason Ko Jason 第 Android 第第第第第第第第第
  • Upload

    -
  • Category

    Software

  • view

    136
  • download

    0

Transcript of 第四堂 Android 的架構與開發工具

第四堂:Android 的架構與開發工

具柯力中 Jason Ko

Jason 的 Android 快樂應用程式學習班

課程內容• Android 的架構

• 介紹 Android 的專案

• 圖形化編輯器的使用

• 學習如何偵錯

• 其他面板介紹Jason 的 Android 快樂應用程式學習班

Android 的架構

Jason 的 Android 快樂應用程式學習班

Android 的架構Applications: 應用層

Application Framework: 應用框架層

Libraries: 原生程式庫Android Runtime:

Android 執行層

Linux Kernel: Linux 核心層

Jason 的 Android 快樂應用程式學習班

Linux 核心• Android 的底層是 Linux 作業系統

• Linux 作業系統被使用得很廣 , ex. Mac, Ubuntu, CentOS

• Linux 有高的可攜性 , 安全性 , 與支援各種硬體功能

• 可攜性:容易移植到不同的硬體架構上

• 安全性:有權限規範

• 支援各種硬體功能:如記憶體 , 電源 , 網路 ... 等Jason 的 Android 快樂應用程式學習班

HAL 硬體抽象層• HAL : Hardware Abstraction Layer 硬體

抽象層是在 Linux 與 Android 之間的抽象層

• 這一層主要是要求 ( 手機 ) 硬體製造商要將硬體的驅動程式實作好並抽象化

• 抽象畫之後 , Android ( 底層 ) 開發者就不需要去尋找硬體驅動程式 , 而可直接使用抽象方法 Jason 的 Android 快樂應用程式學習班

Libraries 原生程式庫• 原生層式庫是 C / C++ 寫成 . 用來支援應用層是框架層

• Bionic : Android 的 libc 程式庫 , 必須遵守開源規範 , 開發後要再回歸開源社群 , 不可私有化

• Binder : 通訊機制 , 讓 App 們可以互相通訊

• Framework 程式庫:支援 media, 電話 , wifi 等

• Webkit :支援瀏覽器的引擎

• SQLite :支援 SQLite 資料庫

• OpenGL : 3D 繪圖程式庫

• OpenSSL : 安全插槽層 , 提供安全點對點連接

Jason 的 Android 快樂應用程式學習班

原生背景服務程式 (Native Daemons)

• 運行在背景的原生程式

• 服務管理器 (Service Manager) :可執行其他所有框架服務的行程

• 無線射頻背景服務 ( rild ) : 支援電話功能

• 安裝程式背景服務 ( installd) : 支援 App 管理與安裝

• 媒體伺服器 (mediaserver) : 支援相機 , 音訊與其他媒體

• Android Debug ( adbd ) : 支援連結電腦與裝置 ( 使用 adb)

Jason 的 Android 快樂應用程式學習班

Dalvik 虛擬機

• 減少記憶體使用量

• 減少電源消耗

• JVM 非是開源的 , 解決授權問題

Jason 的 Android 快樂應用程式學習班

APK 檔• APK 是 Android APP 的安裝

• APK 是 Android Application Package 的簡稱 , 是一個壓縮檔

• 裡頭會有 Dalvik 的執行檔 .dex

Jason 的 Android 快樂應用程式學習班

介紹 Android 專案

Jason 的 Android 快樂應用程式學習班

Android 專案結構• src.main.java => java 程式檔

• libs => libraries 引用程式檔

• res => 資源檔

• res / drawable => 圖片資源

• res / layout => 介面 layout 資源

• AndroidManifest.xml => APP 設定檔

• build.gradle => APP project 編譯設定檔

AndroidManifest.xml : Project 的設定檔

• 用來設定 App 名稱 , icon, Activity 等

• xml 是一種存資料的格式

strings.xml : Project 的字串資源• 用來設定 App 會用到的字串資源

• xml 是採 key, value 的方式存取

• ex. 此例子中 R.string.app_name = “HelloWorld”

Jason 的 Android 快樂應用程式學習班

排版的 XML 檔

• 在這裡定義版面與元件

• 範例是 activity_main.xml, 裡頭用了一個 RelativeLayout 的版面配置 , 裡面還含了一個元件 TextView

Jason 的 Android 快樂應用程式學習班

drawable :圖片資源資料夾

• drawable 這些資料夾是用來放圖片資源的

• 不同的 dpi 要放置不同 px 大小的圖片

• mdpi 跟 px 的比例是 1: 1

libs :引用第三方資源 (jar 檔 ) 的資料夾

• 引用第三方的程式碼時 , 將其放置於此 libs 檔案夾

• 接著點擊工具列上的 sync project with gradle file, 如下方圖示處 , 就可以引用第三方程式

libs :引用第三方資源 (jar 檔 ) 的資料夾

• 引用第三方的程式碼時 , 將其放置於此 libs 檔案夾

• 接著點擊工具列上的 sync project with gradle file, 如下方圖示處 , 就可以引用第三方程式

圖形化編輯器的使用

Jason 的 Android 快樂應用程式學習班

Android 的 Layout 編輯器: Design

Jason 的 Android 快樂應用程式學習班

Android 的 Layout 編輯器: Text

Jason 的 Android 快樂應用程式學習班

學習如何偵錯

Jason 的 Android 快樂應用程式學習班

• Android 除錯有兩種方式:

1. 設中斷點除錯

2. logcat 除錯

Android Debug 除錯

Jason 的 Android 快樂應用程式學習班

• 在 java class 中欲中斷地方點選 , 使其出現紅圈

中斷點除錯

點這裡

Jason 的 Android 快樂應用程式學習班

1. 在 java class 中欲中斷地方點選 , 使其出現紅圈

中斷點除錯

點這裡

Jason 的 Android 快樂應用程式學習班

2. 在工具列選擇 debug app

中斷點除錯

點這裡

Jason 的 Android 快樂應用程式學習班

3. 程式就會停在中斷點處 , 並在下方面板出現 Debugger

中斷點除錯

變數區

跳下一行程式繼續

停止除錯Jason 的 Android 快樂應用程式學習班

• Log 的內容會出現在 Logcat

• Log 有五個不同的 Level : Verbose, Debug, Info, Warn, Error

• 使用方法為 Log.v, Log.d, Log.i, Log.w, Log.e

• Android 會用不同的顏色顯示這些 log, 最低層級為 verbose(白色 ), 最高為 error (紅色 )

Log 除錯法

Jason 的 Android 快樂應用程式學習班

Log 除錯法

class 中的 Log 語法:

log 會出現在 logcat 中:

Jason 的 Android 快樂應用程式學習班

Log 實作練習

Jason 的 Android 快樂應用程式學習班

題目:在 MainActivity 中有 onCreate(), onStart(), onResume(), onPause(), onStop(), onDestroy() 六個 Override 的方法 , 請利用 Log 以及操作模擬機 , 以求得這 6 個方法的出現時機與先後順序 .

Activity 的 LifeCycle

Jason 的 Android 快樂應用程式學習班

其他面板介紹

Jason 的 Android 快樂應用程式學習班

• 更改專案瀏覽方式

• Terminal

• Todo

其他面板介紹