3.6 Android Support Library-支援函式庫

Android 的版本的更新頻率大概是一年兩個版號,每推出一個新版本時, 往往會加入一些舊版本沒有的功能,而這些功能都是新加入的類別。因此, 假設開發人員使用 Android 6.0 開發應用程式時使用了新類別,但舊的手機內的版本卻是 4.0.3 時,在開發完成時,舊版本的手機中並不具有新類別,那要怎麼安裝、執行依照新版本所開發的應用程式呢?

Google 提供了「Android Support Library」套件包來解決這個問題, 用來保証用新版本開發的應用程式可以在舊版本的裝置上正常執行。你可稱 它為「Android 支援函式庫」,但筆者比較偏好稱為「Android 照顧包」, 因為它的用途就是用來「照顧」舊版裝置能執行新版的應用程式。

Android Support v4 支援函式庫

Android 的 API Level 4 的版本對應為 Android 1.6 版,這個函式庫是 為了照顧 1.6 版與更高版本所設計的,如果你想要向下支援到 1.6 版的裝置,應該在專案中加入這個函式庫,加入函式庫的方法會在後續內容說明。 所以,如果加入 support v4 函式庫,代表若「引用正確的類別」就能夠 在 1.6 版以上的裝置正確執行具有新功能的應用程式,如下圖:

Android Support v7 支援函式庫

目前 Android 手機裝置幾乎沒在使用 1.6 版了,但假設只需要向下支援 到 Android 2.1(API Level 7),以下就不再支援了。此時,可使用「Android Support v7」支援函式庫,如果不考慮執行裝置為 1.6-2.0 時,可導入此函式 庫達到支援到 Android 2.1。

v7 函式庫是以 v4 為基礎設計的,因此 v4 為 v7 的依賴項目,因此應用 程式開發時,要導入 Android Support v4 與 v7 兩個函式庫,向下相容版本 如下圖:

appcompat v7 函式庫

支援使用 ActionBar 與新的使用者介面設計模式所推出的 「appcompat v7」是為了要讓 Android 2.1(API Level 7) 以上的裝置都 能正常執行 Android 3.0 才提出的 ActionBar、AppCompatActivity、 AppCompatDialog 等新類別。

v7 cardview 函式庫

支援舊版本 (Android 2.1 以 上 ) 能 夠 使 用「CardView」 元 件, 這 是 Android 5.0 開始推出的新版元件,能在如名片般的卡片式方塊中顯示資訊,符合最新的「Material Design 實感設計」規範。

v7 recyclerview 函式庫

很重要的新版元件庫,目的是支援舊版本 (Android 2.1 以上) 能夠使用「RecyclerView」清單元件,是 Android 5.0 開始推出的新版元件,提供更有效率地以清單方式顯示大量的資料,需要以清單列表方式顯示數量很多的內容時,使用 RecyclerView 特別設計的回收機制,重覆使用這些項目物件,以避免過多資源的耗用。

專案中導入函式庫

可使用工具介面加入或直接修改專案區「Gradle Scripts」下的「build.gradle (Module:app)」,筆者先以工具設定後,再打開該檔案觀察所加入的內容,請點擊功能表的「File/Project Structure」,這是專案架構配置設定工具頁面,如下圖:

在專案架構的左方請先點擊 Dependencies ,再點擊 Modules 中的「app」模組,右方即是相依性類別庫設定畫面,如下圖:

相依函式庫 (或類別庫) 代表本專案除了內建的類別外,還加入了額外需要的類別庫, 目前預設已有「junit」與「appcompat」幾個類別 庫。

可按下上方的加號「+」圖示加入新的函式庫,請點擊加號後再點擊 「Library dependency」,如下圖:

可在最上方輸入欲篩選的字,或直接找到需要的函式庫,下圖為選擇 recyclerview 的例子,新增函式庫的選擇畫面如下:

在這畫面中已加入的函式庫會更動到專案的 app 模組的 Gradle 設定檔, 請在專案區展開「Gradle Scripts」,連擊開啟「build.gradle (Module: app)」檔案,如圖:

在其下方的「dependencies」區塊中,就是本專案會導入的額外函式庫, 如下:

使用 implementation 命令 (舊版為 compile),可在本機的 Gradle 檔案庫中自動導入到專案內,當本機的 Gradle 檔案庫中沒有這個函式庫時,會自動連到網路上的 Maven 檔案庫,下載必要的函式庫後儲存在本機中。