Anroid学习笔记---体系架构

本文根据CSDN很多个博客整理而成



Anroid是在Linux基础开发出的一个移动设备开发平台。它自上而下包含四个部分:

  • Application(应用程序)

  • Applicaton Framework(应用程序框架)

  • Libraries&Android Runtime(库和Android运行环境)

  • OS(Linux Kernel操作系统)。
    在这里插入图片描述

安卓版本号对应API等级

在这里插入图片描述






Android版本、API级别与代号对应关系

平台版本API 级别代号
Android 7.024Nougat
Android 6.023Marshmallow
Android 5.122LOLLIPOP_MR1
Android 5.021LOLLIPOP
Android 4.4W20KITKAT_WATCH
Android 4.419KITKAT
Android 4.318JELLY_BEAN_MR2
Android 4.2、4.2.217JELLY_BEAN_MR1
Android 4.1、4.1.116JELLY_BEAN
Android 4.0.3、4.0.415ICE_CREAM_SANDWICH_MR1
Android 4.0、4.0.1、4.0.214ICE_CREAM_SANDWICH
Android 3.213HONEYCOMB_MR2
Android 3.1.x12HONEYCOMB_MR1
Android 3.0.x11HONEYCOMB
Android 2.3.3、2.3.410GINGERBREAD_MR1
Android 2.3、2.3.1、2.3.29GINGERBREAD
Android 2.2.x8FROYO
Android 2.1.x7ECLAIR_MR1
Android 2.0.16ECLAIR_0_1
Android 2.05ECLAIR
Android 1.64DONUT
Android 1.53CUPCAKE
Android 1.12BASE_1_1
Android 1.01BASE

配置依赖的库

我们在创建App的时候经常会设置这几个参数

android {
  compileSdkVersion 23
  buildToolsVersion “23.0.1”
 
  defaultConfig {
    applicationId “com.example.checkyourtargetsdk"
    minSdkVersion 16
    targetSdkVersion 23
    versionCode 1
    versionName “1.0”
  }
}

minSdkVersion

最好理解的就是minSdkVersion了,就是我们的app能够运行的最小版本

如果选择16,那么就是Android 4.1 以及以上的设备才能运行我们app,如果小于这个版本,那么抱歉运行不了,我们不支持。这是应用程序支持api的下限。这也是应用商店判断这个应用是否能运行在设备上的一个依据之一。

在开发中也会根据这个下限去判断,是否可以用某个api方法,如果是下限之下的那么就会有警告,避免调用一些在新的版本已经改变或者过时的方法。

当我们引用了第三方的库,如果某几个库的minSdkVersion分别是API5,API10,API16的方法,那么我们的minSdkVersion最少就是16。

对于minSdkVersion的选择,我们应该看各个api的占比,不过因为基数太大了(十几亿)所以就算是0.7%也是个天文数字,所以我们需要根据自己应用的受众,以及是否需要适配低版本的需要,一般说来我们适配4.1以上,即minSdkVersion=16,不过还要根据自己的实际情况,去选择相应的版本号。

compileSdkVersion

只在编译阶段起作用。并不会打包到apk中。
compileSdkVersion是我们告诉Gradle,我们是用哪一版本的Android Sdk去编译程序的,可以使用这个版本的API,比如我们使用的是7.0的版本,compileSdkVersion=24,那么我们对于拍照裁剪图片等功能的操作,就可以使用FileProvider了。

我们需要注意的是:我们改变compileSdkVersion的版本号,本质上改变不了我们程序的运行,虽然可能会报错误❌或者警告⚠️,但compileSdkVersion 只会在编译期间起作用,因为环境是compileSdkVersion这个版本的SDK,所以你可以用一些这个版本的API,但是只是IDE给你的便利性帮助而已,帮助你检测代码,避免使用一些弃用的API。就算你用个低版本的compileSdkVersion,你依然可以那么写,但是可能会报错,报警告,但是你强制打包,其实也是没有问题的。IDE只是个工具,他的环境也只是工具的环境,不代表你应用运行时的表现。

所以希望大家用最新的sdk版本作为开发环境,compileSdkVersion设置成最新的,这样我们可以使用到最新SDK的API方法和机制。

如果我们使用了比如V4,V7包,有没有发现必须和compileSdkVersion的版本相匹配,比如我们compileSdkVersion = 26,那么V4,v7的版本也要相应的是26.xx.xx,首位的26必须一致,后两位没有要求,就是说明编译所依赖的SDK和依赖包必须是统一版本,不然两个不兼容,编译会通不过。同时也是为了使用该版本的新特性。

targetSdkVersion

决定你手机真实的运行行为。会打包到apk中。

什么是目标设备SDK版本?
是和minSdkVersion相对应的上限吗?
如果我运行在比targetSdkVersion高的设备上,会出现什么?
如果是比targetSdkVersion低的设备呢?

Android Studio gradle插件版本和gradle版本对应关系,官网说明地址:

https://developer.android.google.cn/studio/releases/gradle-plugin.html#updating-plugin
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值