专栏首页Phoenix的Android之旅Android的 targetsdkversioin

Android的 targetsdkversioin

对于Android初学开发者来说,

可能会好奇 targetsdkversioin这个配置是用来干嘛的。 也有很多一两年开发经验的 Android码农会在面试中被问到这个问题。

Api Level是个什么东西?

Android的api在版本间变化可能非常大, 有时候一个 api在低版本支持,到了高版本就被删除了。 可以在 develop网站上看到 api level对应的 Android版本, xxx.jpg

举个例子,Activity.getActionBar() xxxx.jpg

可以看到 api level 11,也就是说3.0之前是没有这个api的, 3.0之前的机器运行不了用了这个api的app。

targetsdkversioin

以上面 getActionBar()的例子来说, 我们的app现在可以指定 targetsdkversioin = 11, 这意味着安装时会通知系统,开发者已经在 3.0系统上测试过没问题, 如果安装的系统 api level高于11,则会开启兼容模式来运行app。

就像 Android 6.0引入的动态权限申请, 如果你把 targetsdkversioin定位比6.0低的 api level的话, 其实是不需要动态去申请权限, 在app安装时,系统会以兼容模式默认开启这些权限。

然而问题在于, 设定 targetsdkversioin = 21(比如5.0对应的 api level 21), 意味着向系统表明我们只在 5.0系统测试过, 如果是运行在6.0的机器而用户手动关掉所需要的权限的话, 我们的应用是会崩溃的,系统并不会帮我们处理掉兼容性的问题。

@TargetApi

和 targetsdkversioin相对应的还有 @TargetApi这个注解, 还是以上 getActionBar()为例子来说明

如果我们预期app可以运行在 api level < 11的机器上, 而因为UI设计或者其他原因,非要用 getActionBar()方法的时候, @TargetApi就有作用了

对于这种情况, 通常会在代码中用 Build.VERSION.SDK_INIT 来判断,比如下面的代码,

if(Build.VERSION.SDK_INIT > 10) {
    ....
    goWithActionBar();
} else {
    ....
}

@TargetApi(11)
public void goWithActionBar(){
    ....
}

这意味着 goWithActionBar()这个方法是在 api level以上可以使用的, 不加这个注解的话,编译系统会提示兼容性错误而导致编译不过, 因此 @TargetApi主要是用来抑制编译时的兼容性问题的。

本文分享自微信公众号 - Android每日一讲(gh_f053f29083b9),作者:Phoenix

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-05-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 为什么HashCode相同的两个对象可能不相等?

    面试中曾经有这么一道题目,考察的是开发者对于 equals()和 hashCode()的理解, 题目是这样的,

    PhoenixZheng
  • Java-注解入门指南

    如果你是个Java开发者,一定用过,至少听说过注解。 注解是Java的一种手段,它的官方定义是

    PhoenixZheng
  • 如何方便的收集app崩溃日志

    很多人可能没了解过这个东西可以干嘛用, 其实它的作用是可以传入一个 Handler来捕获那些没有被捕获的异常, 比如 app 层面的 crash。 下面提供了一...

    PhoenixZheng
  • SpringBoot2.0 基础案例(02):配置Log4j2,实现不同环境日志打印

    日志打印是了解Web项目运行的最直接方式,所以在项目开发中是需要首先搭建好的环境。

    知了一笑
  • 数据分析的数据工程: 问题的分类和案例研究(CS DB)

    考虑数据分析师希望对给定的数据集进行分析的情况。 人们普遍认为,分析师的大部分时间将用于完成诸如获取、理解、清理和准备数据等数据工程任务。 本文将这些任务分为数...

    用户7095611
  • 数据分析的通用范式-Common Patterns for Analyzing Data

    这是一篇数据科学领域的翻译文章,名称 Common Patterns for Analyzing Data 数据分析的通用模式。

    needrunning
  • reload and restart

    很早以前在电脑上插入U盘还需要重启系统,那时候大家都很能忍。后来有了热插拔技术才解决这个难题,这种技术让电子设备可以在不影响操作系统和程序正常运行的情况下重新加...

    sibenx
  • 基于 HTML5 WebGL 的楼宇智能化集成系统(三)

    2018年7月,信息化部印发了《工业互联网平台建设及推广指南》和《工业互联网平台评价方法》,掀起了 工业互联网 的浪潮,并成为热词写入了报告中。同为...

    HT for Web
  • 你喜欢的女主播颜值多少分,今天带你测试虎牙直播女主播的颜值

    随着现在直播的兴起,主播这个职业逐渐走入人们的视野。现在各大平台都有当家花旦、一哥、一姐等称号。其实人气是一方面,但是颜值才是硬实力。

    松鼠爱吃饼干
  • 周博磊知乎热答:如何评价何恺明大神斩获ICCV 2017最佳论文

    大数据文摘

扫码关注云+社区

领取腾讯云代金券