Android 版本兼容

常用命令

查看一个手机的cpu架构
adb shell cat /proc/cpuinfo
查看手机的SDK版本
adb shell getprop ro.build.version.release

RequiresApi

需要注意的是,该注解仅仅在编辑阶段才有用,如

@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
private void func() {
}

private void call_func1() {
  if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    func();
  }
}

private void call_func2() {
    func();
}

编译阶段

当minSdkVersion比RequiresApi设置的LOLLIPOP低时,这个时候是可以编译通过,只是Android Studio会红色显示call_func2里的func(),提示添加Build.VERSION判断。

运行阶段

当运行的手机的SDK版本比RequiresApi设置的LOLLIPOP低时。
当调用到call_func2时,func()函数还是会执行,并不因为加了RequiresApi就不执行。
这个和Spring里的注解区别还挺大的,Spring中的类似注解,当判断不符合某种条件时,注解是不会真正调用标记的函数的。

对应表

Codename Version API level/NDK release
Android11 11 API level 30
Android10 10 API level 29
Pie 9 API level 28
Oreo 8.1.0 API level 27
Oreo 8.0.0 API level 26
Nougat 7.1 API level 25
Nougat 7.0 API level 24
Marshmallow 6.0 API level 23
Lollipop 5.1 API level 22
Lollipop 5.0 API level 21
KitKat 4.4 - 4.4.4 API level 19
Jelly Bean 4.3.x API level 18
Jelly Bean 4.2.x API level 17
Jelly Bean 4.1.x API level 16
Ice Cream Sandwich 4.0.3 - 4.0.4 API level 15, NDK 8
Ice Cream Sandwich 4.0.1 - 4.0.2 API level 14, NDK 7
Honeycomb 3.2.x API level 13
Honeycomb 3.1 API level 12, NDK 6
Honeycomb 3.0 API level 11
Gingerbread 2.3.3 - 2.3.7 API level 10
Gingerbread 2.3 - 2.3.2 API level 9, NDK 5
Froyo 2.2.x API level 8, NDK 4
Eclair 2.1 API level 7, NDK 3
Eclair 2.0.1 API level 6
Eclair 2.0 API level 5
Donut 1.6 API level 4, NDK 2
Cupcake 1.5 API level 3, NDK 1
(no codename) 1.1 API level 2
(no codename) 1.0 API level 1

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容