Android Support Library 學習入門
0. 文前閒話
作為一個由原生桌面應用程式開發者(VC、Delphi)轉行的Android菜鳥,虐心的事真是數不勝數:安裝個開發工具下載個SDK需要整整一夜;早晨一上班點開Android Studio(簡稱AS),去倒個水回來了還不見它開始工作;開發工具一忙起來就會忘記你這個開發者,不知過了多久後才給你一句:“去TMD的GFW,我啥也沒幹成,你自己看著辦吧!”。
對於我們這些已經被微軟、Borland、Sybase洗腦多年的開發者,除了開發工具的不適應,最大的壁壘其實是大腦中已經固有的思維方式,往往在接受新概念時總要習慣性的去跟以往已經認知的東西做對比,這就要比一個New Comer耗費更多的時間和體力。比如說本文要談的Android Support Library,一直被我望文生義的當做系統底層的支援庫,在我的身邊不停的出現,可是始終沒有進入我的腦袋。於是經過一番搬梯翻牆,查閱了官網資料,在這兒試著弄個水落石出。
要想真正的掌握Android Support Library,沒有其它什麼捷徑,竅門。只有一條路,就是閱讀官方的API參考,一個類一個函式的逐個搞明白。那就讓本文做你開始品嚐”API參考”大餐前的一道開胃菜吧。
1. Support Library 介紹
官方文件上(原文:http://developer.android.com/tools/support-library/index.html)第一句話就指明瞭Support Library的作用:“Android Support Library程式碼包使新版本的Android框架中的最新特效能夠相容之前版本Android框架“。也就是說Support Library為不斷升級的Android系統提供了向下相容性。
上面的翻譯還是不太直白,還是打個比方吧:假設Google釋出的新版本Android API提供了一個新特性:你只需要呼叫一個簡單的api函式就可以實現在App應用出現車輛照片時自動識別車輛品牌,並振動提醒使用者,真是太酷了。可是你呼叫這個api寫出的App應用在舊版Android手機上卻無法展示如此狂拽酷炫diao炸天的車震特效,甚至都無法安裝執行,真是讓人沮喪。這時候就該Support Library出馬了,Support Library可以讓新api特性在指定版本的Android上也能正常執行。(請注意這裡的“新api特性”和“指定版本”,在使用Support Libary時,首先要確定這兩點:你要使用什麼新api特性以及最低支援到哪個版本的Android。)
對於做過VC++開發的,Google的這種相容方式看著太眼熟了。每一次Visual Studio的升級都會帶來新版本的MFC庫,程式釋出時一定要同時打包相應版本的MFC庫,才能在各個版本的Windows中執行。只是Google沒有直接通過Google API庫來實現這種相容性,而是單獨搞出個Support Library來。
官方文件上提到,對於應用開發者,根據應用程式支援的系統版本和使用的API函式,最好在Android工程中包含相應的Support Libary以使用新特性,這樣不僅可以把你應用程式的介面由窮D絲變成白富美,更重要的是可以擴大你的使用者群體。
對於Android開發者,由於要面對各種各樣的裝置型別、高低不同的系統版本,因此在由一坨Android開發的小鮮肉變成老臘肉的演變過程中,能夠熟練處理相容性問題是必不可缺的基本功之一。為此要熟知每一個特性是在哪一個API level上加入的,在查閱官方手冊Api Reference時多留心右上角的API level。
另外還要把下一節所介紹的Support Library Features原文多讀幾遍。
2. Support Library Features
Support Library其實是多個庫(jar包)的組合,這裡不得不說,它的jar包名比較有迷惑性,對於我這樣的初學者來說,容易形成錯誤的“想當然認知”判斷。例如下面的
com.android.support:support-v4:21.0.0
我一開始就粗心的把v4當成了版本號(21.0.0才是真正的版本號),因此總是迷惑什麼情況選擇v4版,什麼情況選擇v7版?是不是還有v5, v6?其實v4、v7都是Support Library中不同的庫名稱而已。包名中的v4不是版本號,只不過表明了它不凡的身世:“我的誕生,是為了照亮Android1.6(API level 4)使用者的!”
Support Library的第1版(2011年3月釋出)就只包含v4庫,之後的版本不斷地在完善v4庫。一直到2年後(2013年5月)的第13版,為了相容API level 7(android2.1)增加了v7這個庫(v7其實也是一組庫的組合)。此時已經Android4.3(API level 18)的時代。
隨著Google為了提升使用者體驗,不斷的解決版本相容性問題,Support Library也越來越大。除了v4和v7這兩個最常用的庫,Support Library Features還包含了其它10幾個庫(不知將來Support Library是否會有終點?),關於每一個庫的功能特性,在原文中(http://developer.android.com/tools/support-library/features.html)有詳細的論述。在這裡,只把Support Library包含的庫名羅列一下。
- v4 Support Library
- Multidex Support Library
- v7 Support Libraries(注意是複數,因此是一組庫)
- v7 appcompat library(這個最常用吧)
- v7 Cardview library
- v7 gridlayout library
- v7 mediarouter library
- v7 palette library
- v7 RecyclerView library
- v7 Preference Support Library
- v8 Support Library
- v13 Support Library
- v14 Preference Support Library
- v17 Preference Support Library for TV
- v17 Leanback Library
- Annotations Support Library
- Design Support Library
- Custom Tabs Support Library
- Percent Support Library
- App Recommendation Support Library for TV
由於v4 Support Library和v7 Support Librarys主要涉及程式元件,新的使用者介面特效,網路連線等比較基礎的變動,因此我們平時比較常用到。
3. Support Library的安裝
如果你使用的是Android Studio(像我一樣的菜鳥肯定選AS了,用過eclipse開發Android的老鳥請飛過這一節),Support Library的安裝和使用非常簡單。只需要開啟SDK Manager,點幾下滑鼠,再加幾行程式碼就行了。不信請看:
3.1 下載
開啟SDK Manager:
官網專門指出,如果你使用Android Studio,選擇並安裝 Android Support Repository ,不需要選擇Android Support Library。
3.2 在程式中加入Support Librarys
在官網介紹中,根據帶資源和不帶資源兩種庫分別介紹了不同的使用方法,實際上只是針對eclipse而言。如果使用Android Studio,使用方法是一樣的:只需要開啟build.gradle檔案,增加下面的程式碼(以v4庫為例):
dependencies { ... compile "com.android.support:support-v4:18.0.+" }
剩下的事,就是在程式碼中使用你需要的類了。
官方提醒:在應用程式中包含了Support Library後,強烈建議在釋出程式前,使用ProGuard工具對釋出包進行優化。這樣除了能夠保護你的原始碼不被別人用反編譯工具獲取,同時它把你程式所引用的第三方庫中並未使用的類都去掉了,讓你的應用程式保持儘可能的小,別忘了,手機上的儲存可是寸土寸金啊!
3.3 修改Manifest檔案
既然你已經使用了Support Library,現在你的應用程式只差一步就能橫行天下,相容更多的系統版本了。那就是修改Manifest檔案中的版本宣告。開啟Manifest.xml檔案,找到android:minSdkVersion一項,把它修改的足夠的低。
<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="17" />
你也許會問:“我改了Manifest.xml給誰看?”。是的,它還真不是給人看的。上面的Manifest.xml告訴Google Play(谷歌官方應用商店),你的程式可以安裝在Android 2.1(API 7)版本之上的裝置上,低於這個版本的,我猜應該就不給裝了。因為我還沒用過Google Play(暗自一陣臉紅),國內的軟體應用商店好象沒有版本提示,我只見過Apple的應用商店是進行版本判斷的。
4. 結束語
在企業應用中,除了專業化較強的原生桌面應用程式,大多數業務系統已經遷移到了B/S架構的Web方式,隨著移動網際網路的普及,大量的應用程式將向手機遷移,這裡面也會包括原有少量的桌面應用程式。原生桌面應用程式的生存空間越來越小,反之則出現了大量新的移動應用需求,新的機會慢慢來臨。原生桌面程式開發人員,為了不被這個時代所淘汰,儘快掌握Android開發吧。路漫漫其修遠兮,吾只能不停的上下折騰。
相關文章
- This template depends on the Android Support libraryAndroid
- Android學習 - 入門Android
- Android Support Library 的新增功能 | 中文教學視訊Android
- 我認為的android入門學習策略Android
- 提高Android Support Library穩定性的三個關鍵方法Android
- mybatis入門學習MyBatis
- Nginx入門學習Nginx
- Vue入門學習Vue
- ROS入門學習ROS
- nuxt 入門學習UX
- GORM學習入門GoORM
- afl入門學習
- Spark入門學習Spark
- React入門學習React
- Android Design Support Library--FloatingActionButton及其Behavior的使用Android
- Android初步進階之Design Support Library庫簡單使用(一)Android
- Android程式猿的react學習之路-入門指南篇AndroidReact
- Linux入門學習Linux
- MyBatisPlus入門學習MyBatis
- spring入門學習Spring
- Nacos整合學習入門
- Mybatis框架 入門學習MyBatis框架
- leaflet學習一 入門
- linux學習——入門Linux
- MyBatis入門學習(一)MyBatis
- JavaScript入門學習學習筆記(上)JavaScript筆記
- Java入門學習-學習static的用法Java
- TS入門學習筆記筆記
- 【PostgreSQL】入門學習筆記SQL筆記
- Nacos入門學習&實踐
- 學習Java怎麼入門?Java
- Nestjs入門學習教程JS
- git入門學習筆記Git筆記
- iOS入門學習計劃iOS
- Egg入門學習(一)
- RPC學習入門(轉)RPC
- Docker入門學習筆記Docker筆記
- 整合學習入門介紹