Android 面试 - compileSdkVersion、minSdkVersion、targetSdkVersion、buildToolsVersion


buildToolsVersion specifies the version of the SDK build tools,

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

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
img

尾声

如果你想成为一个优秀的 Android 开发人员,请集中精力,对基础和重要的事情做深度研究。

对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。 整理的这些架构技术希望对Android开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。

这里,笔者分享一份从架构哲学的层面来剖析的视频及资料分享给大家梳理了多年的架构经验,筹备近6个月最新录制的,相信这份视频能给你带来不一样的启发、收获。

PS:之前因为秋招收集的二十套一二线互联网公司Android面试真题 (含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)

架构篇

《Jetpack全家桶打造全新Google标准架构模式》

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

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值