Android Build 相关全面总结

1、build.gradle里面的几个版本说明

  • compileSdkVersion

compileSdkVersion表示当前项目的编译版本,即你想让AndroidStudio以什么SDK版本去编译你的项目,因此在你编写代码调用系统提供的相关api时, 都是基于该版本的api的。例如 compileSdkVersion 25,当你查看系统api源码时,查看的就是 api level为25的系统源码。

系统名称

Android版本

api版本

发布时间

Android Q

Android10.0

29

2019年

Android Pie

Android9.0

28

2018年

Android Oreo

Android8.0

26

2017年

Android Nougat

Android7.0

24

2016年8 

Android Marshmallow

Android6.0

23

2015年10月

  • buildToolsVersion

buildToolsVersion则是指构建工具的SDK版本,也就是AndroidStudio中设置的Android SDK版本,buildToolsVersion要高于compileSdkVersion版本,这个很好理解,如果编译版本高于AndroidStudio的SDK版本,那AndroidStudio怎么给项目编译呢?

  • minSdkVersion

minSdkVersion表示当前项目支持的最低安卓系统版本。

  • targetSdkVersion

targetSdkVersion的意思是当前app的目标sdk版本,可以理解为当前app在这个版本是比较稳定的,针对这个版本所开发的,因此通常targetSdkVersion和compileSdkVersion 的值是相同的,targetSdkVersion是安卓提供的向前兼容的主要手段。例如targetSdkVersion 25,它的作用就是当targetSdkVersion为25的app运行在系统版本号高于25的手机系统中,app所执行的旧版本api在高版本可能不一样了,但是安卓为了兼容,在系统层会读取当前应用的targetSdkVersion,通过与运行系统api比大小,当targetSdkVersion版本号低于当前版本就会执行旧版本的api,不会导致由于系统的原因而让app运行失常。

因此,当我们在开发过程中如果需要用到高版本的api但是我们又不想去改动项目中的代码时可以把compileSdkVersion版本调到新版本,targetSdkVersion保持不变就可以,编译版本让你可以调用高版本的api,但是在高版本运行旧的api时,由于targetSdkVersion的作用而正常运行。

2、有关Android Build类的简介

Build 下有很多重要的变量及两个重要的内部类VERSION和VERSION_CODES。

// Build类的作用主要是获取系统信息
Build.BOARD // 主板       
Build.BRAND // Android系统定制商   
Build.CPU_ABI // cpu指令集      
Build.DEVICE // 设备参数       
Build.DISPLAY // 显示屏参数       
Build.FINGERPRINT // 硬件名称       
Build.HOST  //    
Build.ID // 修订版本列表       
Build.MANUFACTURER // 硬件制造商      
Build.MODEL // 版本       
Build.PRODUCT // 手机制造商       
Build.TAGS // 描述build的标签       
Build.TIME  //时间    
Build.TYPE // builder类型       
Build.USER  //用户
// Build.VERSION
Build.VERSION.CODENAME    // 当前开发代号   
Build.VERSION.INCREMENTAL   //   源码控制版本号   
Build.VERSION.RELEASE    //  版本字符串   
Build.VERSION.SDK     //   版本号   
Build.VERSION.SDK_INT   // 高版本api替换了Build.VERSION.SDK
// Build.VERSION_CODES
该类都是一些常亮,存放的是各个Android系统的api level
Build.VERSION_CODES.M = 23
..............

3、代码中有关version的判断

通常我们在写代码的时候,也需要考虑系统版本的兼容性,例如高版本的系统具有的api,低版本是没有的或者说是另外的api,那么我们如何做版本的兼容性呢?

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1){ 
}else{ 
}

发布了74 篇原创文章 · 获赞 17 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/u010349644/article/details/95906194
今日推荐