Android 面试 - compileSdkVersion、minSdkVersion、targetSdkVersion、buildToolsVersion(1)

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

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

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

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

如果你需要这些资料,可以添加V获取:vip204888 (备注Android)
img

正文

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与目标版本的向前兼容性。

如果系统的API级别高于应用的目标版本,则系统会启用兼容性行为来确保应用在更高版本系统上的运行。这一点相信做Android开发时间比较久的人都很理解了,只要你写的程序比较规矩,没有太多的官方推荐外的行为,那么一个老版本的应用放在几年后的Android新设备上依然能顺利运行,只不过相当多的开发者(尤其是国内的)并不是很遵守规范罢了。

再详细说说

targetSdkVersion 是 Android 系统提供前向兼容的主要手段(即:新版本SDK手机兼容旧版本SDK工程)。这是什么意思呢?

举例:在 Android 4.4 (API 19)以后,AlarmManager 的 set()和 setRepeat()这两个 API 的行为发生了变化。

最后,面试前该准备哪些资源复习?

其实客户端开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

这里再分享一下我面试期间的复习路线:(以下体系的复习资料是我从各路大佬收集整理好的)

《Android开发七大模块核心知识笔记》

面试字节两轮后被完虐,字节面试官给你的技术面试指南,请查收

面试字节两轮后被完虐,字节面试官给你的技术面试指南,请查收

《960全网最全Android开发笔记》

面试字节两轮后被完虐,字节面试官给你的技术面试指南,请查收

《379页Android开发面试宝典》

历时半年,我们整理了这份市面上最全面的安卓面试题解析大全
包含了腾讯、百度、小米、阿里、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率。

《507页Android开发相关源码解析》

只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。

真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。

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

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注Android)
img

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

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注Android)
[外链图片转存中…(img-20MDhpUh-1713690135598)]

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值