Android 面试 - compileSdkVersion、minSdkVersion、targetSdkVersion、buildToolsVersion

command-line utilities, and compiler that Gradle should use to build

your app. You need to download the build tools using the SDK Manager.

buildToolsVersion制定了Gradle在编译App时使用的SDK build tools、命令行、程序、编译器等的版本,这些都是通过SDK Manager下载的。它的值实际上是一个字符串,在Android Studio里我们通过Tools->SDK Manager,然后点选“SDK Tools”并勾选“Show Package Details”就能看到本地电脑已经下载的SDK Build-Tools的版本。

一般来说,选择跟compileSdkVersion同一个大版本下的最新稳定版本即可,如下图里我已经下载了这么多版本的Build-Tools,在新开发App时我会选择28.0.3版本。

在这里插入图片描述

minSdkVersion


An integer designating the minimum API Level required for the

application to run. The Android system will prevent the user from

installing the application if the system’s API Level is lower than the

value specified in this attribute. You should always declare this

attribute.

Caution: If you do not declare this attribute, the system assumes a

default value of “1”, which indicates that your application is

compatible with all versions of Android. If your application is not

compatible with all versions (for instance, it uses APIs introduced in

API Level 3) and you have not declared the proper minSdkVersion, then

when installed on a system with an API Level less than 3, the

application will crash during runtime when attempting to access the

unavailable APIs. For this reason, be certain to declare the

appropriate API Level in theminSdkVersion attribute.

minSdkVersion指定了App运行所需最低的API级别,比如你设置它为23(Android 6.0),那么该App不能在低于Android6.0版本的设备上安装。从理论上来说,如果你设置minSdkVersion为1,则可以最低兼容到最早的Android版本——然而,这就意味着你要为老设备的兼容做大量的工作,显然并不可取,毕竟从统计上来说已经没有人用那么老的设备了。

一般来说,我们通过一些统计结果,以及本公司App的用户分析,来决定最低兼容版本。

根据Google Play的统计,截止到2018年10月26日,使用Android 4.4及以上版本的设备大概占了96.5%,而5.0及以上的则占了接近89%,所以最低版本兼容到4.4就基本上问题不大了。实际上一些老设备的活跃度会比较差,从这个角度考虑,直接从5.0开始做兼容也是可以的。

而用户分析则指的是,App面向的用户的特征。比如用户群体主要是30岁左右的白领,那么这些用户普遍换手机的频率较高,基本上都能追着比较新的Android版本,那么minSdkVersion设置的比较高也问题不大;而如果用户群体面向50甚至60岁以上的中老年人,这些用户对换手机、升级系统不是很感冒,所以有必要把minSdkVersion设置的低一些。

记住,千万不要忘了设置minSdkVersion,如果你不设置,那么就变成了默认值:1,然后你使用的任何在Android 1.0之后才加入的特性,在1.0上运行就崩溃了。

targetSdkVersion


An integer designating the API Level that the application targets. If

not set, the default value equals that given to minSdkVersion.

This attribute informs the system that you have tested against the

target version and the system should not enable any compatibility

behaviors to maintain your app’s forward-compatibility with the target

version. The application is still able to run on older versions (down

to minSdkVersion).

As Android evolves with each new version, some behaviors and even

appearances might change. However, if the API level of the platform is

higher than the version declared by your app’s targetSdkVersion, the

system may enable compatibility behaviors to ensure that your app

continues to work the way you expect. You can disable such

compatibility behaviors by specifying targetSdkVersion to match the

API level of the platform on which it’s running. For example, setting

this value to “11” or higher allows the system to apply a new default

theme (Holo) to your app when running on Android 3.0 or higher and

also disables screen compatibility mode when running on larger screens

(because support for API level 11 implicitly supports larger screens).

There are many compatibility behaviors that the system may enable

based on the value you set for this attribute. Several of these

behaviors are described by the corresponding platform versions in the

Build.VERSION_CODES reference.

To maintain your application along with each Android release, you

should increase the value of this attribute to match the latest API

level, then thoroughly test your application on the corresponding

platform version.

targetSdkVersion完全可以按照它的字面意思去理解:目标sdkVersion。如果没有设置,则默认值为minSdkVersion。当你设置了targetSdkVersion的时候,表示你已经充分测试过了你的App在该目标版本的运行情况,系统不应该启用任何兼容性行为来保持你的App与目标版本的向前兼容性。

最后

针对于上面的问题,我总结出了互联网公司Android程序员面试涉及到的绝大部分面试题及答案,并整理做成了文档,以及系统的进阶学习视频资料。
(包括Java在Android开发中应用、APP框架知识体系、高级UI、全方位性能调优,NDK开发,音视频技术,人工智能技术,跨平台技术等技术资料),希望能帮助到你面试前的复习,且找到一个好的工作,也节省大家在网上搜索资料的时间来学习。
Android进阶视频+面试资料部分截图

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

友,可以戳这里获取](https://bbs.csdn.net/topics/618156601)**

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 27
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值