主工程、依賴包、jar包、android.jar、Android Support Library的關係

一個Android工程通常包括主工程和依賴包,依賴包又有兩種形式:

一種是單獨的工程:在主工程中的配置檔案指明主工程和依賴包的依賴關係之後,就可以在主工程中正常使用依賴包的類和介面了,這種適合於依賴包中有圖片資源、so等不方便打包到jar包中的情況,比如Nine Old Androids、PullToRefresh、FancyCoverFlow等。

另一種是jar包:放在主工程的libs資料夾下,這種通常是依賴包中只有程式碼和可以打包到jar包中的檔案,比如Fastjson。jar、Volley。jar、Gson。jar等。

為了程式能夠編譯透過和在裝置中正常執行,主工程除了依賴第三方的工程和jar包之外,還需要依賴安卓系統本身的程式碼,也就是我們在sdk的每個版本中看到的android。jar,這裡面集成了android的所有API,隨著android sdk的升級,高版本的sdk中會增加很多新的API,比如ActionBar、Fragment、RecyclerView等,如果在低版本的sdk中需要使用高版本新增的API怎麼辦?不可能去更新移動裝置中的android。jar吧,因為硬體裝置整合的sdk版本是固定的,android。jar也是固定的,裝置中的一些引數、硬體選型也是根據當前sdk版本來定的,所以最好的方式是將新增的API以依賴包的形式整合到需要使用高版本API的應用程式中。

谷歌早已經考慮到了這個問題,所以推出了一系列脫離於android。jar的依賴包,比如常見的android-support-v4。jar、appcompat-v7等。這些依賴包可以直接整合到應用程式中,依賴包有的是jar包,有的是獨立的工程。命名的如下:

jar包

android-support-v[API Level Value]。jar,比如android-support-v4。jar、android-support-v13。jar。

依賴工程

[support包功能]_v[API Level Value],比如appcompat_v7、gridlayout_v7。

各個依賴包可以在“/extras/android/support/”資料夾下檢視。

各個版本的Android Support Library介紹

V4 Support Library

  這個包的名字是:“android-support-v4。jar”,是為Android 1。6(API版本為4)及以上的版本設計的,它包含大部分高版本中有而低版本中沒有的API,包括application components、user interface features、accessibility、data handling、network connectivity、and programming utilities,下面是對V4中的一些關鍵API的介紹:

App Components:

Fragment:一個專為解決Android碎片化的類,透過它可以讓同一個程式適配不同的螢幕。

NotificationCompat:支援更豐富的通知形式;

LocalBroadcastManager:適合於應用內的訊息傳遞。

User Interface:

ViewPager:一個可以管理子view的viewgroup,使用者可以在各個view之間自由切換,這個在很多應用中都有使用到;

PagerTitleStrip:一個關於當前頁面、上一個頁面和下一個頁面的一個非互動的指示器。它經常作為ViewPager控制元件的一個子控制元件被被新增在XML佈局檔案中。

PagerTabStrip:一個關於當前頁面、上一個頁面和下一個頁面的一個可互動的指示器。它經常作為ViewPager控制元件的一個子控制元件被被新增在XML佈局檔案中。

DrawerLayout:抽屜

SlidingPaneLayout:用於實現兩列面板的切換,在UI最上層的使用提供了一個水平的,多個面板的佈局。左邊的面板可以看作是一個內容列表或者是瀏覽,右邊的面板的任務是顯示詳細的內容。

Accessibility:

ExploreByTouchHelper:幫助自定義View實現accessibility的幫助類;

AccessibilityEventCompat、AccessibilityNodeInfoCompat、AccessibilityNodeProviderCompat、AccessibilityDelegateCompat:Accessibility的適配類

Content:

Loader:非同步載入資料;

FileProvider:應用間的私有檔案共享。

關於V4的更多API介紹可以參見:android-support-v4。jar API References

Multidex Support Library

該support包用於使用多dex技術編譯APP,當一個應用的方法數超過65536個時需要使用multidex配置,關於multidex的更多資訊,可以參見如何編譯超過65K方法數的應用

v7 SupportLibraries

針對Android 2。1(API Level 7)及以上的版本谷歌提供了一系列的support包,這些support包各自對應著特定的功能,每一個都可以單獨地被引用。

v7 appcompat library

這個包的主要作用是為了在低版本實現Android的Holo風格介面而引入的,主要包括ActionBar、AppCompat等類和主題,它是一個依賴工程而不是jar包。

注意:

這個包需要依賴android-support-v4。jar,如果你使用的是Eclipse或者Ant編譯你的APP,確保你在使用這個依賴包時集成了android-support-v4。jar這個jar包。

v7 cardview library

一個在Android 5。0才被引入的卡片佈局support包。

v7 gridlayout library

一個支援網格佈局的support包。

v7 mediarouter library

一個用於裝置間音訊、影片交換顯示的support包。

v7 palette library

一個可以實現頁面的顏色動態變換的support包,Palette是這個support包的核心類。

v7 recyclerview library

核心類是RecyclerView,用於替換ListView、GridView等需要依賴Adapter的View,具體可以查閱RecyclerView方面的資料。

v7 Preference Support Library

一個用於支援各種控制元件儲存配置資料的support包。

v8 renderscript library

一個用於渲染指令碼的support包。

v13 Support Library

這個包的作用主要是為Android3。2(API Level 13)及以上的系統提供更多地Framgnet特性支援,使用它的原因在於,android-support-v4。jar中雖然也對Fragment做了支援,由於要相容低版本,導致他是自行實現的 Fragment 效果,在高版本的 Fragment 的一些特性丟失了,而對於 v13以上的 sdk 版本,我們可以使用更加有效,特性更多的程式碼。

v17 Leanback Library

一個主要作用是用於支援電視裝置的support包,為電視裝置提供了很多元件,比如:BroweFragment、DetailsFragment、PlaybackOverlayFragment、SearchFragment等。

Annotations Support Library

一個支援註解的support包。

Design Support Library

一個用於支援Design Patterns的support包。

Custom Tabs Support Library

一個提供了在應用中新增和管理custom tabs的support包。

Percent Support Library

一個提供了百分比佈局的support包,透過這個包可以實現百分比佈局。

在主工程中檢視support包的原始碼

對於本來就是工程的support包來說,在主工程中查閱該support包中的程式碼非常簡單,但如果support包是jar包,則需要在主工程中手動配置才能在主工程中檢視support包的原始碼,關於在IDE中如何檢視support jar包的原始碼可以參見:

Android 如何在Eclipse中檢視Android API原始碼以及support包原始碼

參考資料

Support Library Features

Android Support v4、v7、v13的區別和應用場景

Android 如何在Eclipse中檢視Android API原始碼以及support包原始碼