androidv7v4
① 低版本AndroidStudio项目升级到高版本
近一个月来,不管是公司电脑还是个人电脑都换了,然后重新安装了新的as及相关插件,于是,打开旧项目就有很多问题了,最初是原项目gradle版本过低,新装的5.4.1,项目中用到的是3.5.3,编译时老提示最低编译版本为26,然后又是butterknife版本用了10.2.1,然后提示对应build sdk要用28,于是,又有一大堆问题需要去解决。
这里记录下 Android 低版本升级到高版本后 的几个问题及解决方案:
因为太久没搞android,所以这一问题花了些时间去处理,后来出现了androidx替代v4/v7包,于是找到了对应的解决方案:gradle.properties中增加下面两句(其实28新建项目会带有这两句,只是我这是老项目,所以没有,需要手动添加)
然后gradle sync,之前用到v4/v7的地方会报错,这里我也暂时没啥好方法,只有一个个改,能想到的简单点的操作有两点:1.使用ctrl+R替换,2.用alt+enter自动添加import;这里需要注意的是不仅仅是类中需要改,布局文件中,AndroidManifest.xml中也可能要改。
ps: 后来发现这里有比较轻松的解决方法,在gradle和build sdk切换为高版本后使用Migrate to Androidx自动替换v4/v7位androidx, https://www.jianshu.com/p/f7a7a8765294
用@BindView(R .id .xxx)替换,全局替换下即可
这里需要在build.gradle的android节点下增加
以及,Refactor菜单,点击 Migrate to Androidx ...
这里去掉gradle.properties中的android.useDeprecatedNdk=true,换成在build.gradle中使用cmake即可
在gradle中应用butterknife,应该以下两句都有
使用 .transition(withCrossFade()) 替代 .crossFade()
其实还有很多其他问题,只是这几个问题是刚解决的,还留有一些记忆,就先记录下来,后续再汇总其他问题
2020.05.24 12:03:52
② Android Support v4,v7,v13的区别和应用场景
android support是android的开发兼容包,一定要随时更新,里面会有很多新的控件提供使用。v7自带v4的包,v13自带v7的包。比如ViewPager是后面android 11才推出的控件。低于android11的系统要使用就要采用v4包中的ViewPager,以此类推
v4是最低支持android 4
v7是最低支持android 7
v13是最低支持android 13
③ 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的区别和应用场景
android-support-v4 是谷歌推出的兼容包,最低兼容Android1.6的系统,里面有类似ViewPager等控件。ViewPager在Android 1.6以下的版本是不自带的,所以要实现ViewPager需要使用v4包中的ViewPager。其余控件同理。
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之AndroidX介绍
Android系统版本不断地迭代更新,每个版本中都会加入很多新的API进去,但是新增的API在老版系统中并不存在,因此凯袜这就出现了一个向下兼容的问题。
比如,当Android系统发布到3.0版本的时候,突然意识到了平板电脑的重要性,因此为了让Android可以更好地兼容平板,Android在3.0系统(API 11)中加入了Fragment功能。
但是Fragment的作用并不只局限于平板,以前的老系统中也想使用这个功能该怎么办?于是Android推出了Android Support Library,用于提供向下兼容的功能。
比如熟知的support-v4库,appcompat-v7库都是盯迟激属于Android Support Library的。
v4在这里指的是Android API版本号,对应的系统版本是1.6。
support-v4的意思就是这个库中提供的API会向下兼容到Android 1.6系统。
appcompat-v7指的是将库中提供的API向下兼容至API 7,也就是Android 2.1系统。
但是慢慢随着时间的推移,什么1.6、2.1系统早就已旦哗经被淘汰了,现在Android官方支持的最低系统版本已经是4.0.1,对应的API版本号是15。
Android团队也意识到这种命名已经非常不合适了,于是对这些API的架构进行了一次重新的划分,推出了AndroidX。因此,AndroidX本质上其实就是对Android Support Library进行的一次升级。
升级内容主要在于以下两个方面:
一个AndroidX完整的依赖库格式如下所示: