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开发吧。路漫漫其修远兮,吾只能不停的上下折腾。
Android Support Library 学习入门的更多相关文章
- Android Support Library 是什么?
这两天刚开始学习安卓,这里记录下这两天遇到的一些小问题. 首先先贴一个安卓 API 等级. 官方地址:https://developer.android.com/about/dashboards/ ( ...
- Android Support Library
title: Android Support Library tags: Support Library,支持库 grammar_cjkRuby: true --- DATE: 2016-5-13. ...
- Android Support Library介绍
v4 Support Library 这个库是为Android 1.6(API版本为4)及以上的版本设计的,它包含大部分高版本中有而低版本中没有的API,包括application component ...
- As环境下添加android support library依赖库
2015年的google大会上,google发布了新的Android Support Design库的新组件之一,以此来全面支持Material Design 设计风格的UI效果,为了可以使用这些新颖 ...
- [Xamarin.Android] Support Library Tips
[Xamarin.Android] Support Library Tips Support Library支持内容 Xamarin Support Library每个版本支持.那些组件,可以参考这份 ...
- eclipse创建android项目失败的问题 [ android support library ]
有根筋搭错了,想起来android应用开发???? 放下两年的手机应用开发,昨天有更新了android SDK, 重新搭建开发环境. 这两年android 变化真TM的大............... ...
- Android Support Library package简介
转自http://my.oschina.net/chengliqun/blog/148451 N久未做android了,以前做的时候,2.2才刚出来,现在android都更新到了4.3了,而从前一段时 ...
- Android Support Library更新到v22.1之AppCompat新特性
构建一个可以跑在不同版本 Android 平台的软件,是非常复杂和耗时的.为了解决这个问题,Android 推出了 Android Support Library (安卓兼容包),让新的UI控件也可以 ...
- Android - 用Fragments实现动态UI - 使用Android Support Library
Android Support Library提供了一个带有API库的JAR文件来让你可以在使用最新的Android API的同时也也已在早期版本的Android上运行.例如,Support Libr ...
随机推荐
- Vue.js 样式绑定(1)
demo <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <titl ...
- git基础1
git: 团队协作开发 版本管理 创建项目的文档 初始化 编写项目 把文件add到git仓库,其实是放到了git的代码暂存区 工作区有一个隐藏目录 .gi ...
- php fopen用法以及解释
$log = fopen('./log.txt','a');//生成一个log.txt文件,a相当于文件的权限 fwrite($log,'成功'."\r\n");//写入文件 mo ...
- mac系统下通过安装包的形式安装mongdb
下载地址 mongoDB mongoDB 图形化管理软件 MongoDB Compass 下载完成后,进行解压,解压后的文件进行重命名 mongodb 然后前往/usr/local,将mongodb文 ...
- (转)当android调试遇到ADB server didn't ACK以及顽固的sjk_daemon进程 .
转:http://blog.csdn.net/wangdong20/article/details/20839533 做Android调试的时候经常会遇到,程序写好了,准备接上手机调试,可不一会儿出现 ...
- java系列(1/4)基础阶段-MySQL(2/13)
本单元目标 一.为什么要学习数据库 二.数据库的相关概念 DBMS.DB.SQL 三.数据库存储数据的特点 四.初始MySQL MySQL产品的介绍 MySQL产品的安装 ★ MySQL服务的启动和停 ...
- PMP项目管理——项目范围管理-规划范围管理
规划范围管理是为记录如何定义.确认和控制项目范围及产品范围,而创建范围管理计划的过程.主要作用是,在整个项目期间对如何管理范围提供指南和方向.制定范围管理计划和细化项目范围始于对下列信息的分析:项目章 ...
- AdaBoost笔记之原理
转自:https://www.cnblogs.com/ScorpioLu/p/8295990.html 一.Boosting提升算法 AdaBoost是典型的Boosting算法,属于Boosting ...
- iOS开发UIResponder简介API
#import <Foundation/Foundation.h> #import <UIKit/UIKitDefines.h> #import <UIKit/UIEve ...
- ADIS16405BMLZ
GND,VCC,CS,DOUT,SCLK,DIN