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

你可能感兴趣的:(Android 版本兼容)