安卓support哪个版本好
‘壹’ support v7兼容包的用途(三 、v7兼容包和系统自带的比较和注意点)
举个例子:
系统的android.widget.toolbar 是最低到Android 5.0 (API21)
android.support.v7.widget.Toolbar是最低兼容到Android2.3(API9)
24.2.0的v7包开始就是兼容到android 2.3,不向下兼容了。
注意事项1
支持库,自版本 24.2.0 起不再提供对 Android 2.2(API 级别 8)和更低版本的支持。仅用于这些系统版本的类和方法现在被标记为“弃用”,因而不应继续使用。未来版本可能会移除这些弃用的类和方法。
注意事项2
Android Design和Material Design
Theme
Hoho Theme
在4.0之前Android可以说是没有设计可言的,在4.0之后推出了Android Design,从此Android在设计上有了很大的改善,而在程序实现上相应的就是Holo风格,所以你看到有类似 Theme.Holo.Light、 Theme.Holo.Light.DarkActionBar 就是4.0的设计风格,但是为了让4.0之前的版本也能有这种风格怎么办呢?这个时候就不得不引用v7包了,所以对应的就有 Theme.AppCompat.Light、 Theme.AppCompat.Light.DarkActionBar,如果你的程序最小支持的版本是4.0,那么可以不用考虑v7的兼容。
Material Design Theme
今年的5.0版本,Android推出了Material Design的概念,这是在设计上Android的又一大突破。对应的程序实现上就有 Theme.Material.Light、 Theme.Material.Light.DarkActionBar等,但是这种风格只能应用在在5.0版本的手机,如果在5.0之前应用Material Design该怎么办呢?同样的引用appcompat-v7包,这个时候的Theme.AppCompat.Light、 Theme.AppCompat.Light.DarkActionBar就是相对应兼容的Material Design的Theme。
注意事项3
gradle引用appcompat-v7包的时候就不需要引用v4了,因为v7里默认包含了v4包;
compile ‘com.android.support:appcompat-v7:24.0.3’ 中的24代表API level 24推出的兼容包,所以如果你引用的是21之前的版本,4.0以上,则默认这些是Hoho Theme风格的,从21开始的版本默认是Material Design Theme风格。同时,
如图可知:系统21给他value 21的,系统22给他value 22的.系统23给他value 23的。
注意事项4
所以我们在build.grade里写入这个compile时,如果偏小会出现这种情况
‘贰’ Android Support v4,v7,v13的区别和应用场景
android-support-v7是谷歌推出的版本兼容包,最低兼容Android2.1的系统,这个包通常和appcompat-v7这个工程一起使用。
appcompat-v7这个工程可以让开发者统如孝一开发,在任何系统版本下保证兼容性。涉及的内容有Theme,value,布局,新的控件,新的动画实现方式,包含了support-v4的全部内容,开发Android工程时,要兼容低版本都要导入v7工程。android studio在创建工程的时候默认导入了v7工程,并且将style使用了兼容style,给开发者提供了极大的方便。并且最新的v7包增加了很多material design的陵启兼容类和素材,请及时更新。
android-support-v13是谷歌推出的版本兼容包,最低兼容Android3.2的系统。当初是为了开发平板做设计的。Android 3.x系统都是平板专用系统,但是3.x系统失败了。所以使用v13的包没有任何价值。
v7版本适用于任何版本的开发,保证了兼容性,所以在使用的时候一定要采用。
不要再用Eclipse做Android开发,ADT已经没有更新过了,Android Studio是Android开发的首选工具,支持5.0开发,更好的开发享受。(1.3正式版将会有非常大的变化,非常期待渣汪稿)
‘叁’ android support v4支持包要点分析,api介绍
http://www.jianshu.com/p/d36a1e5bf246
本文出自zhh_happig的博客http://www.jianshu.com/u/d82bd37b1d29,谢谢
Android support v4这个包是告知为Android 1.6(API版本为4)及以上的版本设计的(从android-support-v4-24.2.0开始,V4包支持的最低版本是Android 2.3即API Level 9),该支持库可以让在旧版本 Android 平台上运行的应用,支持新版本平台推出的功能。
举个Fragment的例子说明一下,假设我们某个应用支持的最低版本是:minSdkVersion=8,但是应用中用到了android.app.Fragment类,而Fragment类是在Android 11的时候才开始加入的,那么当我们的应用运行在Android 11以下的手机就会出现问题,那么如何能让Fragment在低于11的手机上也能正常使用呢?我们需要引入android.support.v4包中android.support.v4.app.Fragment来替换掉原来用到的android.app.Fragment类,android.support.v4.app.Fragment和android.app.Fragment有一样的效果,但是它能在低于11的手机上正常使用,这就是support支持库提供的功能,能兼容低版本的Android平台。
android.support.v4包支持的最低版本是Android 4,v4的意思是就是支持最低版本是4,如果你要使用Fragment,最低版本只兼容到4了。
拿上面的例子来说:应用中的minSdkVersion=8,为了兼容低版本的手机,引入了android.support.v4包中android.support.v4.app.Fragment。当应用在不同版本手机运行,android.support.v4是怎样工作的呢?
a.当运行在Android版本是4-10手机上,手机Android框架没有提供Fragmeng提供的功能:则android.support.v4支持库会调用自身android.support.v4.app.Fragment;
b.当运行在Android版本是11及以上的手机上,手机Android框架提供了Fragmeng提供的功能:则android.support.v4支持库会调用手机Android框架android.app.Fragment。
也就是说,如果应用调用其中一个支持类的方法,则支持库的行为将取决于运行应用的手机的Android 版本。如果手机Android框架提供必要的功能,则支持库将通过调用手机Android框架执行任务。如果应用在旧版本的 Android 上运行,且手机Android框架未提供所需的功能,则支持库自身可能会尝试提供相应的功能或什么都不做。无论是哪一种情形,应用通常都不需要检查其在哪一版本的 Android 上运行,而是通过支袜圆消持库执行检查并选择适当的行为。
还有一些android.support.v4中类,比如ViewPager等,不管在Android那个版本,都没有这个类,所以要用到ViewPager,就必须引用android.support.v4包了。
注:随着系统的迭代Android 1.6的设备已经很少了,官方在Support Library 24.2.0版本的时候移除了对Android 2.2(API Level 8)及以下版本的支持,所以从Android Support v4 24.2.0开始,V4包支持的最低版本是Android 2.3即API Level 9
我们可以发现android-support-v4后面都跟着版本号:比如android-support-v4-23.0.0 (对应Android Api Level 23),如果不清楚这个版本号,在开发中也会带来很多问题。
最常见的问题就是已经引入了android-support-v4包,但是某个类或者某腔启个方法却找不到,这个原因应该就是版本号不对了。
比如我们在targetSdkVersion < 23的时,用到android.support.v4.content.PermissionChecker这个类来检查权限 ,但是引入了android-support-v4-22.2.1.jar后,却找不到PermissionChecker类,原因就是PermissionChecker是23.0.0版本才加入的,所以引入android-support-v4-23.0.0.jar就行了。
遇到这种问题,可以去 Android官方中文网站 找到对应的类或方法,看看它们加入的版本:added in version,然后在引入对应的support包
注:在android-support-v4-24.2.0及之后的版本中,为了增强效率和减小APK的大小起见,Android将android-support-v4包从一个独立的依赖包拆分成v4 compat library、v4 core-utils library、v4 core-ui library、v4 media-compat library和v4 fragment library这5个包,考虑到V4的向后兼容,你在工程中依赖V4这个依赖包时默认是包含拆分后的5个包的,但为了节省APK大小,建议在开发过程中根据实际情况依赖对应的V4包,移除不必要的V4包。
v4 compat library
兼容一些 Framework API,如 Context.getDrawable() 和 View.performAccessibilityAction()等,在AS中的依赖方式如下:
compile 'com.android.support:support-compat:24.2.1'
v4 core-utils library
提供一系列核心的工具类,如 AsyncTaskLoader 和 PermissionChecker,在AS中的依赖方式如下,按自己需求选择合适版本:
compile 'com.android.support:support-core-utils:24.2.1'
core-ui library
提供一系列核心的 UI,如 ViewPager、 NestedScrollView,在AS中的依赖方式如下:
compile 'com.android.support:support-core-ui:24.2.1'
v4 media-compat library
android.media 兼容库,包括 MediaBrowser 和 MediaSession,在AS中的依赖方式如下:
compile 'com.android.support:support-media-compat:24.2.1'
v4 fragment library
跟fragment相关部分,v4 fragment library这个子库依赖了其他4个子库,所以我们一旦依赖这个库就会自动导入其他4个子库,这跟直接依赖整个support-v4效果类似,在AS中的依赖方式如下:
compile 'com.android.support:support-fragment:24.2.1'
拆包并不一定代表能够真的解决效率和减小APK的大小问题,V4包拆分后的5个子包有依赖关系。即拆包之后,要用到某个子包的API时,可能还得依赖其它的子包,这也是有坑的地方。当我们编译没有问题,运行出现Do not find class之类的错误时,一定要看看是不是子包之间的依赖关系造成的,如果是引入相应的子包。出现这个依赖问题,再加上版本可能出现问题,对于新手来说,比较棘手,建议新手全部导入。
以上文章内容,是本人工作中的总结,供大家参考,有误的地方还请指正。
‘肆’ Android 应用只支持4.0以上还需要support v7兼容包么
若要兼容低版本,则相当于不能使用新版sdk里存在,而旧版本sdk里不存在的内置控件(一般都在android.widget包里),因为若运行在低版本系统的手机上,会找不到类。
如果想使用怎么办呢?这时向下兼容包就发挥作用了,v4的目的是把新的sdk里的控件和特性带给1.6+,v7的目的是把新的sdk里的控件和特性带给2.1+,这确实是谷歌很负责任的一个行为,要知道iOS就任性的不做向下兼容(要么你别想用,要么你给我更新系统!)
建议使用新版sdk的兼容包里的兼容性控件(一般在android.support.v_.widget包中,兼容包也会跟着sdk内置控件的特性升级而有所变化,每个版本尽量兼容最新的特性,所以尽量使用跟构建sdk相同版本的兼容包以获得最多特性支持,可以在对应版本的android SDK的目录下找到)。
如果基于4.0以上,则兼容包中对应的绝大多数控件都已经在构建sdk中存在,不需要使用兼容包,毕竟sdk里内置的比support这种为了照顾低版本系统的功能肯定要更强大。
这里说绝大多数,是因为像ViewPager这种常用的控件确实一直任性的只存在于v4 support中,而原生内置sdk中一直没有同位体存在。如果你想使用的话还是得引入v4 support(当然也可以去github找个其他的开源实现方式)。
‘伍’ Android Support v4,v7,v13的区别和应用场景
高版本的 SDK里提供了新的东西,如果你用了这些东西开发应用,然后你又想支持低版本SDK的机器的时候你就需要把新的东西直接导入你的apk里面,这样你的apk装到低版本的机器里去也能运行。
Android Support v4 是最早(2011年4月份)实现的库。用在Android1.6 (API lever 4)或者更高版本之上。它包含了相对V4, V13大的多的功能。
例
如:Fragment,NotificationCompat,LoadBroadcastManager,ViewPager,PageTabAtrip,Loader,FileProvider
等。
详细API 参考 http://developer.android.com/reference/android/support/v4/app/package-summary.html
Android Support v7: 这个包是为了考虑Android2.1(API level 7)
及以上版本而设计的,但是v7是要依赖v4这个包的,也就是如果要使用,两个包得同时
被引用。
v7支持了Action Bar。
Android Support v13:这个包的设计是为了android 3.2及更高版本的,一般我们都不常用,平板开发中能用到
‘陆’ android.support.v4.app.Fragment和 android.app.Fragment的区别
1.最低支持脊判罩版本不同 android.app.Fragment 兼容的最低版本是android:minSdkVersion="11" 即3.0版 android.support.v4.app.Fragment 兼容的最低版本是android:minSdkVersion="樱闹4" 即1.6版 2.需要导jar包 fragment android.support.v4.app.Fragment 需要引入包android-support-v4.jar 3.在Activity中取的方法不同 android.app.Fragment使冲烂用 (ListFragment)getFragmentManager().findFragmentById(R.id.userList) 获得 ,继承Activity android.support.v4.app.Fragment使用 (ListFragment)getSupportFragmentManager().findFragmentById(R.id.userList) 获得 ,需要继承android.support.v4.app.FragmentActivity