澳门新葡亰平台游戏网站每个Android开发者应该知道的6个SDK和API

澳门新葡亰平台游戏网站 12

本文由码农网 –
小峰原创翻译,转载请看清文末的转载要求,欢迎参与我们的付费投稿计划!

澳门新葡亰平台游戏网站 1封面

 

说到软件开发,有人或许会感叹了解平台SDK和API比了解语言本身更重要。

**本篇文章已授权微信公众号 guolin_blog 独家发布 **

 

如果你是一个进入Android开发的Java开发人员,或者是一家想要确保团队使用的是正确工具的初创企业CxO,那么本文中列举的这些SDK和API或许会非常有用。

在之前的开发经历中经常需要导入一些如v4、v7、v13等Android官方的支持包,遇到这些情况时都是网上搜索一下,按照前人给的示例添加依赖。这么稀里糊涂的使用后代码正常运行了,但心中不免会有一些疑问,如,Android官方为什么要提供支持包,都提供哪些支持包,这些支持包又提供了什么特性,开发者又应该如何选择使用这些支持包?

v4 Support Library


 

这个库是为Android
1.6(API版本为4)及以上的版本设计的,它包含大部分高版本中有而低版本中没有的API,包括application
components、user interface features、accessibility、data
handling、network connectivity、and programming
utilities,下面是对V4中的一些关键API的介绍:

 

App Components

Fragment:通过它可以让同一个程序适配不同的屏幕。
NotificationCompat:支持更丰富的通知形式;

LocalBroadcastManager:

用来在同一个应用内的不同组件间发送Broadcast。

  • 发送的广播只会在自己App内传播,不会泄露给其他App,确保隐私数据不会泄露
  • 其他App也无法向你的App发送该广播,不用担心其他App会来搞破坏
  • 比系统全局广播更加高效

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:增加了对数据的异步加载的支持,该库还提供了该类的具体实现,包括CursorLoader
和 AsyncTaskLoader类;
FileProvider:应用间的私有文件共享。

 

在你下载了Android Support
Library以后,这个库放在<sdk>/extras/android/support/v4/目录下。这个库的Gradle建造脚本依赖标识符如下:

com.android.support:support-v4:18.0.+

这个依赖符号指定了发布版本为18.0.0或更高。

 

澳门新葡亰平台游戏网站 2

(本文出处 @都有米:)

Multidex Support Library


该support包用于使用多dex技术编译APP,当一个应用的方法数超过65536个时需要使用multidex配置

在你下载了Android Support
Library以后,这个库放在<sdk>/extras/android/support/multidex/目录下。这个库的Gradle建造脚本依赖标识符如下:

 

com.android.support:multidex:1.0.0

 

在过去4年时间里,我一直致力于构建Android
app,下面这些是我构建新app时的必备品,所以推荐给大家。

为了解开这些疑问,周末在家仔细阅读了官方的开发者指导文档的相关内容。这篇文章就是读后整理的读书笔记。

v7 Support Libraries


针对Android 2.1(API Level
7)及以上的版本谷歌提供了一系列的support包,这些support包各自对应着特定的功能,每一个都可以单独地被引用。

 

 v7 appcompat library

 这个库添加 Action Bar 用户界面设计模式的支持。这个库包括支持material
design的用户界面实现。

注意:这个库依赖于v4 Support Library。

这里有一些包含在v7 appcompat库中的关键类:

ActionBar:提供ActionBar用户界面模式的实现

AppCompatActivity
:增加一个Activity类,可以用作支持ActionBar实现的Activity的基类。

AppCompatDialog
:添加一个对话框类,可以作为一个appcompat主题对话框基类。

ShareActionProvider
:增加一个标准化的共享动作(如电子邮件或发送到社交网站),包含在ActionBar中。

 在你下载了Android Support
Library以后,这个库放在<sdk>/extras/android/support/v7/appcompat/目录下。这个库的Gradle建造脚本依赖标识符如下:

 

com.android.support:appcompat-v7:21.0.0

 

v7 cardview library

 

这个库添加cardview widget的支持。

 

 

 在你下载了Android Support
Library以后,这个库放在<sdk>/extras/android/support/v7/cardview/目录下。这个库的Gradle建造脚本依赖标识符如下:

 

com.android.support:cardview-v7:21.0.0

 

 

v7 gridlayout library

 

这个库添加了对
GridLayout类的支持,这个类允许你使用矩形单元的网格来排列用户界面元素。

 

在你下载了Android Support
Library以后,这个库放在<sdk>/extras/android/support/v7/gridlayout/目录下。这个库的Gradle建造脚本依赖标识符如下:

 

com.android.support:gridlayout-v7:21.0.0

 

 

Material design support library

在开发一个现代化的Android
app时,我们总是希望能够使用最新和最棒的设计组件。这通常会使你的应用程序不需要额外装饰就可以看上去很漂亮。你可以有例如波纹的甜美效果,和如FAB这样的新部件。并且design
support library允许你在预装棒棒糖的手机上面使用华丽的设计元素。

澳门新葡亰平台游戏网站 3

Gradle的依赖项:

编译“com.android.support:design:22.2.0”

用法示例:

为什么官方向开发者在提供了android
sdk之外,还要提供一些零碎的开发支持jar包,全部放在framework中不好吗?恩,不好!因为这不是好不好的问题,这是Android平台快速发展带来的必然产物,这张图罗列了已经发布的Android版本及其对应的开发sdk的级别。

v7 mediarouter library

这个库提供了MediaRouter, MediaRouteProvider和相关媒体类,支持Google
Cast。

在你下载了Android Support
Library以后,这个库放在<sdk>/extras/android/support/v7/mediarouter/目录下。这个库的Gradle建造脚本依赖标识符如下:

com.android.support:mediarouter-v7:21.0.0

 

 v7 palette library

 这个库添加了对
Palette 类的支持,这个类允许你从一个图像中提取突出的颜色。

 在你下载了Android Support
Library以后,这个库放在<sdk>/extras/android/support/v7/palette/目录下。这个库的Gradle建造脚本依赖标识符如下:

 

com.android.support:palette-v7:21.0.0

 

v7 recyclerview library

 这个库添加了对 RecyclerView 类的支持,这个类提供了recyclerview
widget支持。

  在你下载了Android Support
Library以后,这个库放在<sdk>/extras/android/support/v7/recyclerview/目录下。这个库的Gradle建造脚本依赖标识符如下:

com.android.support:recyclerview-v7:21.0.0

 

 

Picasso image loading

加载图像极其耗费RAM。我试过很多库来简化这个过程。个人认为,Square的Picasso是耐用性和易用性的最佳结合。

澳门新葡亰平台游戏网站 4

Gradle的依赖项:

编译“com.squareup.picasso:picasso:2.5.2”

用法示例:

澳门新葡亰平台游戏网站 5Android版本

v8 Support Library 


 这个库是为Android 2.2 (API level
8)或更高版本的使用设计的。

Mixpanel analytics

没有漏斗分析的移动app注定是要失败的——《Lean
Startup》,一本在此领域类似于圣经的书。谷歌分析过于片断化,并且可能会夸大其词。
Mixpanel既精准又敏感。虽然不便宜,但我必须强调其支持真的很棒。

澳门新葡亰平台游戏网站 6

Gradle的依赖项:

编译“com.mixpanel.android:mixpanel-android:4.5.3”

使用示例:

至于为什么提供支持包官方给出了大致三个原因:

 

ACRA + tracepot crash reporting

谷歌play store开发者有一个Crashes &
ANRs部分。但是,当发生崩溃时,用户必须手动发送报告。如果你真的想把事情安排妥当,那么你应该使用ACRA库,并将其连接到tracepot的后端,以便于查看仪表板。

每次崩溃发生的时候,ACRA都会发送崩溃报告,哪怕用户不发送。
ACRA支持多个报告后端。我选择tracepot是因为它最容易与ACRA整合,只需要引用tracepot在ACRA初始化调用时给你的URL即可。

澳门新葡亰平台游戏网站 7

Gradle的依赖项:

编译“ch.acra:ACRA:4.6.1”

ACRA文档:

tracepot:

http://www.tracepot.com

  1. 向后兼容如,我们开的App需要支持的minSdkVersion=9,targetSdkVersion=11,在程序里使用了android
    3.0 (API level
    11)提供的ActionBar类,使用compileSdkVersion=11成功编译出apk。在android
    3.0的设备上完美运行,但是app在android
    2.3的设备就会crash,报找不到ActionBar的错误。这很好理解,因为旧版本上没有新版本里新增的类。为了避免使用了最新功能开发的app只能在最新系统的设备上运行的尴尬,官方把新版系统framework中新增加的接口提出来放到了Android
    Support
    Library中,开发者在遇到上面的情况时,就可以使用支持包中具有同样功能的ActionBar类,这个支持包会打包进App里,这样使用了新版本系统上功能的App也可以向后兼容以前的老系统版本设备了。使用支持包中的类除了让我们免于判断App运行的系统版本外,还可以使App在各个版本保持同样的用户体验。如在5.0以下系统使用material
    design。

v8 renderscript library

加入了对  RenderScript 计算架构的支持。

 

AppCompat and Support library

这两个不用我多说,基本上是强制性的,它们能在旧设备上支持新功能,从片段到查看寻呼机,一应俱全。

澳门新葡亰平台游戏网站 8

Gradle的依赖项:

编译“com.android.support:appcompat-v7:22.2.0”
编译“com.android.support:support-v4:22.2.0”

用法示例:

App编译时用的android
sdk(android.jar)不会打包进我们的App中。因为App编码是使用android.jar中的接口就是android设备里系统框架层(framework)对外提供的接口。

v13 Support Library 


 

这个包的作用主要是为Android3.2(API
Level
13)及以上的系统提供更多地Framgnet特性支持,使用它的原因在于,android-support-v4.jar中虽然也对Fragment做了支持,由于要兼容低版本,导致他是自行实现的
Fragment 效果,在高版本的 Fragment 的一些特性丢失了,而对于 v13以上的
sdk 版本,我们可以使用更加有效,特性更多的代码。

它添加了对
 Fragment用户界面样式(利用FragmentCompat类)和额外的fragment支持类的支持。

 

在你下载了Android Support
Library以后,这个库放在<sdk>/extras/android/support/v13/目录下。这个库的Gradle建造脚本依赖标识符如下:

com.android.support:support-v13:18.0.0

 

 

WhereDat API

你可以使用Android App Search和Lookup API,来获取有关app的数据。

澳门新葡亰平台游戏网站 9

文档:

用法示例:

  1. 提供不适合打包进framework的功能Android官方对App开发提供了推荐设计,希望Android应用都有相对一致的交互设计来减少用户的使用成本,希望三方App类似系统应用从而完美融入到Android生态系统中。但是这都仅仅是推荐,不要求开发者一定要这样,如果有这种需求就可以使用官方支持包提供的这些功能,避免重复造轮子。如支持包中的DrawerLayout、Snackbar等类都是这种情况。

  2. 为了支持不同形态的设备通过使用支持包来在不同形态设备上提供功能,如手机、电视、可穿戴设备等。

v17 Leanback Library


 

 android.support.v17.leanback包,为电视设备的用户界面提供支持。它提供了一些重要的小部件的电视应用程序。

 在你下载了Android Support
Library以后,这个库放在<sdk>/extras/android/support/v17/leanback目录下。这个库的Gradle建造脚本依赖标识符如下:

com.android.support:leanback-v17:21.0.0

 

 

现在Android官方发布了下面13类支持库,不同的支持库包含不同特征,适用的Android版本也不相同。通常情况下我们都使用到v4和v7这两个集合库,因为这两个库支持的android系统版本范围比较广,官方推荐的UI设计样式相关类也都在这两集合库中。

Annotations Support Library


 

一个支持注解的support包。

在你下载了Android Support
Library以后,这个库放在<sdk>/extras/android/support/annotations目录下。这个库的Gradle建造脚本依赖标识符如下:

com.android.support:support-annotations:22.0.0

  

 

澳门新葡亰平台游戏网站 10Android
Support Library

Design Support Library 


 

一个支持material design的support包。

 

 

 

 

 

 

 

 

v4 Support Libraries

v4库被设计在Android 2.3 (API level 9)及其以上系统中使用。 Support
Library的第1版(2011年3月发布)就只包含v4库,当时v4库只是一个库,支持Android
1.6 (API level
4)及其以上版本,这也是v4名字的由来。随着系统的迭代现在Android
1.6设备已经很少了,官方在Support
Library的第24.2.0版本(2016年8月发布)的时候移除了对Android 2.2 (API
level
8)及其以下版本的支持,但是名字依然是v4。v4悠久的历史长期的发展造就了它较大的体积。也是在24.2.0这个版本Goggle将原来的单个v4库拆分成了5个子库,我们在使用的时候可以直接依赖某个子库,从而减少依赖包的大小。下图可见Android
2.2 Froyo占有率约为0.1%。

澳门新葡亰平台游戏网站 112016年9月5日各版本市场占有率

Gradle编译脚本中整个v4库的依赖语句如下:

compile 'com.android.support:support-v4:24.2.1' 

gradle中jar依赖语句格式如
compile 'jar文件组(group/命名空间):jar文件名:jar文件版本'。所以上面的语句意思是依赖Android支持库中第24.2.1版的support-v4库。由于在24.2.0版本support-v4库已经被拆分成5个子库,所以如下图所示依赖24.2.1版本的support-v4库除了导入support-v4库外还会导入它的5个子库,这个版本的support-v4库本身是一个空的包,所有具体的实现都在它依赖的子库中。下面依次看下v4库拆分出来的5个子库。

澳门新葡亰平台游戏网站 12support-v4

  • v4 compat
    library为一些框架的API提供兼容性包装。如,Context.obtainDrawable()View.performAccessibilityAction()等。Gradle编译脚本中v4
    compat库的依赖语句:compile
    ‘com.android.support:support-compat:24.2.1’
  • v4 core-utils
    library提供了一些工具类。如,AsyncTaskLoaderPermissionChecker等。Gradle编译脚本中v4
    core-utils库的依赖语句:compile
    ‘com.android.support:support-core-utils:24.2.1’
  • v4 core-ui
    library提供很多UI相关组件。如,ViewPagerNestedScrollViewExploreByTouchHelper等。Gradle编译脚本中v4
    core-ui库的依赖语句:compile
    ‘com.android.support:support-core-ui:24.2.1’
  • v4 media-compat
    library多媒体框架相关部分。如,MediaBrowserMediaSession等。Gradle编译脚本中v4
    media-compat库的依赖语句:compile
    ‘com.android.support:support-media-compat:24.2.1’
  • v4 fragment
    library跟fragment相关部分。v4这个子库依赖了其他4个子库,所以我们一旦依赖这个库就会自动导入其他4个子库,这跟直接依赖整个support-v4效果类似。关于v4拆分这篇文章有介绍,有兴趣的可以点过去看看。Gradle编译脚本中v4
    fragment 库的依赖语句如下:compile
    ‘com.android.support:support-fragment:24.2.1’
v7 Support Libraries

注意这里的Library用的也是复数,说明v7库和v4一样也是很多库的集合,不同的是v7各个库不是后来拆分出来的,而是最初发布时就是以各个独立的库的形式发布的,如发布的最早的v7库v7
gridlayout library。这些库的共同之处是发布之初都是支持Android 2.1 (API
level
7)及其以上版本,所以把他们统称为v7支持库。需要注意的24.2.0版本以后的v7支持库支持范围也是Android
2.3 (API level
9)及其以上版本了,这是因为v7依赖的v4库支持版本范围改变了,这点在v4支持库小节有介绍。v7库集合里有7个子库,使用时根据需要选择导入哪些库。

  • v7 appcompat library支持UI设计样式、 material
    design相关,如ActionBarAppCompatActivity、Theme等。Gradle编译脚本中v7
    appcompat库的依赖语句:compile
    ‘com.android.support:appcompat-v7:24.2.1’

  • v7 cardview library支持cardview控件,使用material
    design语言设计,卡片式的信息展示,在电视App中有广泛的使用。Gradle编译脚本中v7
    cardview库的依赖语句:compile
    ‘com.android.support:cardview-v7:24.2.1’

  • v7 gridlayout library支持gridlayout布局。Gradle编译脚本中v7
    gridlayout库的依赖语句:compile
    ‘com.android.support:gridlayout-v7:24.2.1’

  • v7 mediarouter library该库提供了
    MediaRouterMediaRouteProvider等与Google
    Cast相关的类。Gradle编译脚本中v7 mediarouter库的依赖语句:compile
    ‘com.android.support:mediarouter-v7:24.2.1’

  • v7 palette
    library该库提供了palette类,使用这个类可以很方便提取出图片中主题色。比如在音乐App中,从音乐专辑封面图片中提取出专辑封面图片的主题色,然后将播放界面的背景色设置为封面的主题色,随着播放音乐的改变,播放界面的背景色也会巧妙的跟着改变,从而提供更好的用户体验。Gradle编译脚本中v7
    palette库的依赖语句:compile ‘com.android.support:palette-v7:24.2.1’

  • v7 recyclerview
    library该库提供了recyclerview类。这个库使用的频率很高,网上有很多文章介绍recyclerview。Gradle编译脚本中v7
    recyclerview库的依赖语句:compile
    ‘com.android.support:recyclerview-v7:24.2.1’

  • v7 Preference Support library这个库在设置界面常用到。提供了
    CheckBoxPreferenceListPreference等类。Gradle编译脚本中v7
    preference support库的依赖语句:compile
    ‘com.android.support:preference-v7:24.2.1’

v8 Support Library

v8支持库支持范围也是Android 2.3 (API level
9)及其以上版本。v8支持库集合中现在只有一个库。

  • v8 renderscript
    library这个库支持渲染脚本计算框架。对这个库有兴趣可以看渲染脚本开发指导。使用v8
    renderscript库Gradle编译脚本的配置方法:defaultConfig
    {renderscriptTargetApi 18renderscriptSupportModeEnabled true}
v13 Support Library

v13支持库适用范围是Android 3.2 (API level 13)及其以上版本。这个库跟v4
fragment library功能基本一样,也是提供兼容fragment相关内容。区别是v4
fragment library需要依赖v4支持库集合里的其它4个子库,而v13 support
library依赖的是Android 3.2 (API level
13)及其以上版本framework。也就是说v4支持库除了v4 fragment
library以外,其它功能都在Android 3.2 (API level
13)及其以上版本的framework中提供了。所以我们的App如果只需要兼容到Android
3.2,那么fragment部分使用v13 Support
Library中的相关类才是明智之举。Gradle编译脚本中v13 support库的依赖语句:

 compile 'com.android.support:support-v13:24.2.1' 
v14 Preference Support Library

功能类似v7 Preference Support library,支持Android系统版本不一致,新增部分相关接口。Gradle编译脚本中v
库的依赖语句:

 compile 'com.android.support:preference-v14:24.2.1' 
v17 Preference Support Library for TV

功能类似v7 Preference Support library,支持Android系统版本不一致,新增部分相关接口,为电视设备App提供相应的UI。Gradle编译脚本中v
库的依赖语句:

 compile 'com.android.support:preference-leanback-v17:24.2.1' 
v17 Leanback Library

这也是在电视设备上使用的库,主要是和YouTube相关的。Gradle编译脚本中v17
Leanback库的依赖语句:

 compile 'com.android.support:leanback-v17:24.2.1' 
Annotations Support Library

提供注解相关功能。Gradle编译脚本中Annotations Support库的依赖语句:

 compile 'com.android.support:support-annotations:24.2.1' 
Design Support Library

这个库现在使用的也比较多,它提供了material
design设计风格的控件。如,navigation drawers、floating action buttons
(FAB)、snackbars、tabs等。Gradle编译脚本中Design Support库的依赖语句:

 compile 'com.android.support:design:24.2.1' 
Multidex Support Library

Android的单个.dex文件最多能引用65536个方法,在这之后的方法就无法引用了。当我们的方法数超过这个限制后就需要分成多个dex文件,该库就是用来支持多个dex文件构建应用程序的。Gradle编译脚本中Multidex
Support库的依赖语句:

compile 'com.android.support:multidex:1.0.0' 
Custom Tabs Support Library

这个库有很有意思,提供了一种新的打开网页的方式。以前的App要打开一个网页有两种选择,一个是用webview,这种方式工作量较大,第二种方式是调用浏览器应用来打开网页,这种方式要在两个应用中切换,用户的操作体验是割裂的,都不够理想。这个库提供了第三种选择,具体情况可以点击这篇文章了解。Gradle编译脚本中Custom
Tabs Support库的依赖语句:

 compile 'com.android.support:customtabs:24.2.1' 
Percent Support Library

百分比支持库提供了如PercentFrameLayoutPercentRelativeLayout布局,在这些布局中子view可以使用百分比来设置大小、位置等。Gradle编译脚本中Percent
Support库的依赖语句:

 compile 'com.android.support:percent:24.2.1' 
App Recommendation Support Library for TV

这个库是电视设备上用来提供视频内容推荐的。Gradle编译脚本中Recommendation
Support库的依赖语句:

 compile 'com.android.support:recommendation:24.2.1' 

其实在了解了支持包特性之后,这个问题也就迎刃而解了,这里再做下总结。在使用Android
Support Library之前我们需要通过sdk manager安装Android Support
Repository,然后再在gradle编译脚本中添加如下依赖语句就可以了。

compile 'com.android.support:support-v4:24.2.1' //以v4为例

前面文章说过gradle中jar依赖语句格式如
compile jar文件组(group/命名空间):jar文件名:jar文件版本。对于Android
Support
Library库的依赖语句jar文件名jar文件版本两部分需要选择确定。

jar文件名:在选择之前要明确两件事,需要使用支持包的哪种特性需要兼容的最低Android版本,然后就可以确定具体依赖哪个支持库。jar文件版本:支持库的版本需要跟compileSdkVersion保持一致。

注意:由于依赖的支持库会打包进apk,所以官方推荐开发者在编译时使用ProGuard工具预处理release版本的apk。ProGuard工具除了混淆源代码外,还会移除那些依赖的支持库中没有使用到的类,达到apk瘦身的效果。

以上就是关于Android Support
Library全部了,谢谢。如果文章有错误或者有疑问请务必留言告诉我。

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图