Android 开发中compileSdkVersion 和 targetSdkVersion

在 Android 开发中,compileSdkVersion 和 targetSdkVersion 是 build.gradle 文件中的两个关键配置,它们分别控制应用的编译行为运行时兼容性。以下是它们的详细区别和用途:

1. compileSdkVersion(编译版本)

  • 作用:指定用于编译应用的 Android SDK 版本。

  • 影响范围

    • 决定你在代码中能调用哪些 API(例如 Android 14 的新特性需要 compileSdkVersion 34)。

    • 仅影响编译时的代码检查,不影响应用在设备上的实际运行行为

  • 建议:始终使用最新的稳定版 SDK(如 Android 14 对应 34),以支持新 API 和优化编译。

gradle

复制

android {compileSdkVersion 34 // 使用 Android 14(API 34)编译
}

2. targetSdkVersion(目标版本)

  • 作用:声明应用针对哪个 Android 版本进行优化

  • 影响范围

    • 控制应用的运行时行为。例如:

      • 权限模型(如 Android 6.0+ 的动态权限)。

      • 后台限制(如 Android 8.0+ 的后台服务限制)。

      • 存储访问(如 Android 11+ 的分区存储)。

    • 如果 targetSdkVersion 低于设备系统版本,Android 会启用兼容模式(可能影响功能或性能)。

  • 建议

    • 更新前需充分测试,确保兼容性。

    • 通常应逐步升级到最新版本(但不超过 compileSdkVersion)。

gradle

复制

android {defaultConfig {targetSdkVersion 34 // 针对 Android 14 优化}
}

核心区别总结

配置项作用阶段影响运行时?推荐设置
compileSdkVersion编译时❌ 否最新稳定版(如 34
targetSdkVersion运行时✅ 是逐步升级,充分测试后更新

注意事项

  1. 版本关系

    • compileSdkVersion ≥ targetSdkVersion ≥ minSdkVersion(最低支持版本)。

  2. 常见问题

    • 如果 targetSdkVersion 过低,应用在新系统上可能无法使用新特性,或触发兼容性警告(如 Google Play 要求至少 targetSdkVersion 33 以上)。

    • 如果 compileSdkVersion 过低,无法调用新 API(编译报错)。


示例配置(Android Studio 新项目)

gradle

android {compileSdkVersion 34defaultConfig {minSdkVersion 21 // 最低支持 Android 5.0targetSdkVersion 34}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/75953.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt QComboBox 下拉复选多选

Qt 中,QComboBox 默认只支持单选,但实际使用过程中,我们经常会碰到需要多选的情况,但是通过一些直接或者曲折的方法还是可以实现的。 1、通过 QListWidget 间接实现 这种方式是网上搜索最多的一种方式,也是相对来说比…

Selenium自动化:玩转浏览器,搞定动态页面爬取

嘿,各位爬虫爱好者和自动化达人们!是不是经常遇到这种情况:信心满满地写好爬虫,requests一把梭,结果抓下来的HTML里,想要的数据空空如也?定睛一看,原来数据是靠JavaScript动态加载出…

天梯赛 L2-023 图着色问题

使用vector<vector<int>> g(N)去存储边&#xff0c;然后每次判断每个节点的邻节点是不是相同的颜色&#xff0c;需要注意的是不同的颜色一定需要为K种&#xff0c;不能多也不能少。 #include<bits/stdc.h> using namespace std; int main(){int n,m,k;cin&g…

在ubuntu24上装ubuntu22

实验室上有一台只装了ubuntu24的电脑&#xff0c;但是项目要求在22上进行 搞两个ubuntu系统&#xff01; 步骤一&#xff1a;制作22的启动盘 步骤二&#xff1a;进入bios安装界面 步骤三&#xff1a;选择try or install ubuntu 步骤四&#xff1a;选择try ubuntu 步骤五&…

【PVR Review】《Review of Deep Learning Methods for Palm Vein Recognition》

[1]谭振林,刘子良,黄蔼权,等.掌静脉识别的深度学习方法综述[J].计算机工程与应用,2024,60(06):55-67. 文章目录 1、Background and Motivation2、数据采集3、掌脉图像预处理3.1、ROI提取算法3.2、图像滤波与增强 4、掌脉识别算法4.1、基于深度学习的方法4.2、其他方法 5、融合识…

【CSP】202403-1词频统计

文章目录 算法思路1. 数据结构选择2. 输入处理3. 统计出现的文章数4. 输出结果 代码示例代码优化 样例输入 4 3 5 1 2 3 2 1 1 1 3 2 2 2 2 3 2样例输出 2 3 3 6 2 2算法思路 1. 数据结构选择 vector<int>&#xff1a;用于存储每篇文章的单词列表&#xff08;可能包含…

Docker基础1

本篇文章我将从系统的知识体系讲解docker的由来和在linux中的安装下载 随后的文章会介绍下载镜像、启动新容器、登录新容器 如需转载&#xff0c;标记出处 docker的出现就是为了节省资本和服务器资源 当企业需要一个新的应用程序时&#xff0c;需要为它买台全新的服务器。这样…

Linux系统学习Day04 阻塞特性,文件状态及文件夹查询

知识点4【文件的阻塞特性】 文件描述符 默认为 阻塞 的 比如&#xff1a;我们读取文件数据的时候&#xff0c;如果文件缓冲区没有数据&#xff0c;就需要等待数据的到来&#xff0c;这就是阻塞 当然写入的时候&#xff0c;如果发现缓冲区是满的&#xff0c;也需要等待刷新缓…

vue 3 从零开始到掌握

vue3从零开始一篇文章带你学习 升级vue CLI 使用命令 ## 查看vue/cli版本&#xff0c;确保vue/cli版本在4.5.0以上 vue --version ## 安装或者升级你的vue/cli npm install -g vue/cli ## 创建 vue create vue_test ## 启动 cd vue_test npm run servenvm管理node版本&#…

Mysql专题篇章

一、事务的四大特性&#xff1f; 1、原子性&#xff1a;是指事务包含的所有操作要么全部成功&#xff0c;要么全部失败回滚。 2、一致性&#xff1a;是指一个事务执行之前和执行之后都必须处于一致性状态。比如a与b账户共有100块&#xff0c;两人之间转账之后无论成功还是失败…

CAD插件实现:自动递增编号(前缀、后缀、位数等)——CADc#实现

cad中大量输入一定格式的递增编号时&#xff0c;可用插件实现&#xff0c;效果如下&#xff1a; ①本插件可指定数字位数、起始号码、加前缀、后缀、文字颜色等&#xff08;字体样式和文字所在图层为cad当前图层和当前字体样式&#xff09;。 ②插件采用Jig方式&#xff0c;即…

k8s1.24升级1.28

0、简介 这里只用3台服务器来做一个简单的集群&#xff0c;当前版本是1.24.17目标升级到1.28.17 地址主机名192.168.160.40kuber-master-1192.168.160.41kuber-master-2192.168.160.42kuber-node-1 因为1.24已经更换过了容器运行时&#xff0c;所以之后的升级相对就会简单&am…

4.3-2 jenkins

一.登录jenkins 二.修改密码 三.配置节点 新建节点 编辑节点名称 编辑节点配置 激活节点 将jar下载到指定的路径 再到dos命令下的路径 E:\az\wx 执行 配置节点成功 四. 安全设置中&#xff0c;勾选代理 五.新建项目 编辑项目名称 编辑项目执行的 路径&#xff1a;C:\Users\Ad…

js对象与数组的互转

js对象与数组的互转 文章目录 js对象与数组的互转一、数组转对象1.使用forEach,for in,es6展开运算符,assign2. 使用 Object.fromEntries()3. 将数组转为键值对对象4. 使用 reduce()4. 数组元素为对象时提取属性 二、对象转数组1. 提取键/值/键值对2. 转换为特定结构的数组 三、…

HTTPS在信息传输时使用的混合加密机制,以及共享、公开密钥加密的介绍。

HTTPS在信息传输时使用的混合加密机制&#xff0c;其中包括了共享密钥加密和公开密钥加密&#xff0c;我们先来介绍一下这两种加密方式。 共享密钥加密&#xff08;对称密钥&#xff09; 对称加密是指加密和解密使用的是同一个密钥。就像家里的门锁&#xff0c;钥匙只有一把&…

Oracle 23ai Vector Search 系列之4 VECTOR数据类型和基本操作

文章目录 Oracle 23ai Vector Search 系列之4 VECTOR数据类型和基本操作VECTOR 数据类型基本语法Vector 维度限制和向量大小向量存储格式&#xff08;DENSE vs SPARSE&#xff09;1. DENSE存储2. SPARSE存储3. 内部存储与空间计算 Oracle VECTOR数据类型的声明格式VECTOR基本操…

机器学习——ROC曲线、PR曲线

一、ROC曲线简介 1.1 ROC曲线的构成 1.横轴&#xff08;假正率&#xff0c;FPR&#xff09;&#xff1a; 表示负样本被错误分类为正的比例&#xff08;越小越好&#xff09; 2.纵轴&#xff08;真正率&#xff0c;TPR&#xff0c;即召回率&#xff09;&#xff1a; 表示正样…

IntelliJ IDEA下开发FPGA——FPGA开发体验提升__上

前言 由于Quartus写代码比较费劲&#xff0c;虽然新版已经有了代码补全&#xff0c;但体验上还有所欠缺。于是使用VS Code开发&#xff0c;效果如下所示&#xff0c;代码样式和基本的代码补全已经可以满足开发&#xff0c;其余工作则交由Quartus完成 但VS Code的自带的git功能&…

昂贵的DOM操作:一次DOM导致的性能问题排查记录

公司来了一个前端实习生&#xff0c;踏实&#xff0c;勤快&#xff0c;很快得到老大的认可&#xff0c;分配给她一个需求&#xff0c;大概如下&#xff1a;构建一个公司产品的评论展示页面&#xff0c;页面可以滚动加载新的内容&#xff0c;同时如果已经加载的内容发生变化&…

前端服务配置详解:从入门到实战

前端服务配置详解&#xff1a;从入门到实战 一、环境配置文件&#xff08;.env&#xff09; 1.1 基础结构 在项目根目录创建 .env 文件&#xff1a; # 开发环境 VUE_APP_API_BASE_URL http://localhost:3000/api VUE_APP_VERSION 1.0.0# 生产环境&#xff08;.env.produc…