首页
学习
活动
专区
圈层
工具
发布

compileSdkVersion、minSdkVersion 和 targetSdkVersion —— Android 三个核心的 SDK 版本配置

一、概述 在 Android 项目中,有三个核心的 SDK 版本配置:compileSdkVersion、minSdkVersion 和 targetSdkVersion。...三、详细解析 1. compileSdkVersion(编译版本) 它是项目在编译阶段所使用的 Android SDK 版本。 它控制 你可以在代码中调用哪些 Android API。...政策要求: Google Play 要求新应用和重大更新必须针对最新的 Android 主流版本进行开发(即使用最新的 targetSdkVersion)。...Android 10 (API 29) 的分区存储: 如果 targetSdkVersion >= 29,默认情况下 your 应用只能访问自己的私有目录和公共媒体文件,不能随意访问外部存储。...这让你能访问最新的 API 和开发工具。 targetSdkVersion: 尽快测试并适配到与 compileSdkVersion 相同的版本。这是确保应用在现代设备上拥有最佳表现和安全性的关键。

64310

AS中的minSdkVersion、compileSdkVersion、targetSdkVersion、buildTools

注意,如果使用 Support Library ,那么使用最新发布的 Support Library 就需要使用最新的 SDK 编译。...如果只在较高版本的系统上才使用某些 API,通常使用运行时检查系统版本的方式解决。 注意:你所使用的库,如 Support Library,可能有他们自己的 minSdkVersion 。...在少数情况下,你仍然想用一个比你应用的 minSdkVersion 还高的库(处理所有的边缘情况,确保它只在较新的平台上使用),你可以使用 tools:overrideLibrary 标记,但请做彻底的测试...targetSdkVersion 是 Android 提供向前兼容的主要依据,在应用的 targetSdkVersion 没有更新之前系统不会应用最新的行为变化。...如果targetSdkVersion提升到了23,如果代码没有进行运行时权限判断会直接崩溃。

1.1K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android-support-v4 v7 v8 v13 v17,Android SDK目录结构.打个不恰当比方:JNI 需要自己买菜、洗菜、炒菜、煮饭,很麻烦;NDK就是宅急送,一个电话。

    min、compile、target版本的区别 这里参考一下谷歌开发者的一篇推送文章!...注意,如果使用 Support Library ,那么使用最新发布的 Support Library 就需要使用最新的 SDK 编译。...如果只在较高版本的系统上才使用某些 API,通常使用“运行时检查系统版本”的方式解决。...在少数情况下,你仍然想用一个比你应用的 minSdkVersion 还高的库(处理所有的边缘情况,确保它只在较新的平台上使用),你可以使用 tools:overrideLibrary 标记,但请做彻底的测试...targetSdkVersion 是 Android 提供向前兼容的主要依据,在应用的 targetSdkVersion 没有更新之前系统不会应用最新的行为变化。

    56310

    关于2020最新Kali无法使用arpspoof命令解决(在源和包都已经安装的情况下)

    第一步 可以参照 这个 ———>参考地址——< 如果你按照上面的步骤安装了相应的包,还是没有相应的命令,那多半就是路径的问题了 第二步 [root@server ~]# echo $PATH /usr.../local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin 如果输出的东西和上面不一样,则输入下面的代码,将对应路径加入环境变量...sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin" 这下再试一下就OK啦 以上只能临时修改,永久修改变量需要配置profile 使用...vim对profile文件进行修改 修改对应路径 将if判断语句里面的PATH改成第二步的环境变量 source /etc/profile 更新一下 最后就永久都有啦 版权声明:本文内容由互联网用户自发贡献...本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    1.4K10

    笔记——Gradle入门(十三)

    compileSdkVersion app当前运行的Android版本API取决于安卓设备版本与targetSdkVersion版本比较 ,如果安卓设备>=targetSdkVersion版本,则当前...app运行的版本为targetSdkVersion;如果安卓设备targetSdkVersion版本,则当前app运行版本为安卓设备系统版本。...选择最新的API版本,在编译的时候检查代码的错误和警告,提示开发者修改和优化,V4,V7包,必须和compileSdkVersion的版本相匹配。...尽量设置compileSdkVersion=targetSdkVersion,且是最新的API版本。 minSdkVersion:app能够运行的最小API版本。...如果我们的工程中没有gradle,AndroidStudio会根据这个url去下载对应版本的gradle 3、implementation、api、compile区别: api和compile关键字作用效果是一样的

    98830

    和安卓什么关系?应用发布如何知道自己的版本?优雅草卓伊凡

    开发者通过指定 minSdkVersion(最低支持版本)、targetSdkVersion(目标适配版本) 和 compileSdkVersion(编译版本) 来控制应用在不同 Android 设备上的运行行为...compileSdkVersion:编译时使用的 SDK 版本,影响代码能否调用新 API(但不会影响运行时行为)。2. 在 UniApp 开发中如何设置 API Level?...(2)方式 2:在原生 build.gradle 中配置(如需深度定制)如果 UniApp 的 HBuilderX 打包无法满足需求,可以导出 Android 原生工程,修改:android {...常见问题(1)如果 targetSdkVersion 设置过低会怎样?Google Play 可能会拒绝上架(2023 年后要求 ≥ 30)。...总结minSdkVersion 决定最低支持的 Android 版本(建议 ≥ 21)。targetSdkVersion 决定应用适配的最新特性(建议 ≥ 30)。

    1K10

    【错误记录】Kotlin 编译报错 ( Class ‘Xxx‘ is not abstract and does not implement abstract member )

    文章目录 一、报错信息 二、解决方案 一、报错信息 ---- Google Play 上架要求 Android 的编译版本 和 目标版本都要高于 30 才可以上传 ; 将 Android 的编译版本...和 目标版本 都升级为 30 之后 , Kotlin 的编译检查变得更严格 , 之前不规范的代码需要逐个修改 ; 将编译版本 compileSdkVersion 和 目标版本 targetSdkVersion...编译版本 compileSdkVersion 和 目标版本 targetSdkVersion 都为 28 时 , 编译不报上述错误 ; 改了下 Android 编译版本号 , 报了 286 个错误..., format: Int, width: Int, height: Int) { 可以看到第一个参数是可空参数 , 这个问号总不会是我打上去的吧 ; 这 Kotlin 相关的 前后冲突的操作 , Android...官方没少干这事 ; 解决方案 : 在 Kotlin 中 , 将所有的重写的函数的可空参数 , 都改为非空参数 , 即删除参数后面的问号 “?”

    2.6K20

    【错误记录】Kotlin 编译报错 ( Only safe (?.) or non-null asserted (!!.) calls are allowed on a nullable ... )

    文章目录 一、报错信息 二、解决方案 一、报错信息 ---- Google Play 上架要求 Android 的编译版本 和 目标版本都要高于 30 才可以上传 ; 将 Android 的编译版本...和 目标版本 都升级为 30 之后 , Kotlin 的编译检查变得更严格 , 之前不规范的代码需要逐个修改 ; 将编译版本 compileSdkVersion 和 目标版本 targetSdkVersion...在 编译版本 compileSdkVersion 和 目标版本 targetSdkVersion 都为 28 时 , 编译不报上述错误 ; 改了下 Android 编译版本号 , 报了 286...= window.attributes val window 没有声明变量类型 , 使用自动推断确定变量类型 , 而系统自动推断为 Window!...类型 , 这是可空类型 ; 如果调用可空类型的成员方法 或 成员变量 , 则必须使用 ? 或者 !!

    99320

    满足 Google Play 目标 API 等级 (targetSdkLevel) 的要求

    Google Play 服务 SDK; ·· Firebase Cloud Messaging documentation 在使用 Firebase Cloud Messaging 时,消息投递受限于后台执行限制...检查并更新您的 SDK 和库 请确保您使用的三方 SDK 依赖项支持 API 26:部分 ADK 供应商会在发布说明中写明是否支持;其它供应商则须要进一步调查。...您还须要验证您正在使用的 Android 支持库可能存在的任何限制。和以往一样,您必须确保应用中的 compileSdkVersion 与 Android 支持库主要版本能够顺利兼容。...我们推荐您选择小于或等于 Support Library 主要版本的 targetSdkVersion ,并建议您升级到近期发布的兼容 Support Library,从而能够使用到最新版本的兼容性特性和错误修正功能...查看更多指导文档链接 测试您的应用 在更新完应用的 API 等级和功能后,您须要测试一些核心用例。下文列举的几条建议并没有涵盖所有情况,但希望能给您提供指导作用。

    11.7K30

    【错误记录】Kotlin 编译报错 ( Not nullable value required to call an ‘iterator()‘ method on for-loop range )

    文章目录 一、报错信息 二、解决方案 一、报错信息 ---- Google Play 上架要求 Android 的编译版本 和 目标版本都要高于 30 才可以上传 ; 将 Android 的编译版本...和 目标版本 都升级为 30 之后 , Kotlin 的编译检查变得更严格 , 之前不规范的代码需要逐个修改 ; 将编译版本 compileSdkVersion 和 目标版本 targetSdkVersion...编译版本 compileSdkVersion 和 目标版本 targetSdkVersion 都为 28 时 , 编译不报上述错误 ; 改了下 Android 编译版本号 , 报了 286 个错误..., 今天逐个解决上述编译错误 ; 二、解决方案 ---- 错误分析 : 使用 ForEach 遍历可空类型的集合时 , 会出现此类报错 ; 因为被遍历的集合 files 有可能为空 , 由此可能会产生崩溃...{ } 方案二 : 遍历 files.orEmpty() 集合 , 如果 files 为空 , 则 files.orEmpty() 会返回空集合 ; 如果 files 不为空 , 则 files.orEmpty

    1.3K20

    Android P Beta 3 现已发布!

    如果您没有支持最新系统的实体设备,您可以在 Android 模拟器上使用 Android Virtual Device 作为测试环境。...如果您的应用已经在使用 API 26+,且一直致力于遵守 Google Play 最新的安全和性能政策,那么升级至 API 28 将会十分轻松。不过请记得确保您的应用支持所有相关的行为变更。...在可能的情况下,请从 Android SDK 或 NDK 中寻找相应的公开替代接口。如果所有公开 API 均无法满足您的需求,请点击这里告知我们。...想要使用新 API 进行构建,您只需将官方版 API 28 SDK 和工具下载到 Android Studio 3.1,或使用最新的 Android Studio 3.2 版本。...随后将您的项目的 compileSdkVersion 和 targetSdkVersion 升级到 API 28。 您可以观看这支视频快速了解 Android P 开发者预览版新亮点。

    1K40

    【错误记录】Kotlin 编译报错 ( Smart cast to ‘Xxx‘ is impossible, because ‘xxx‘ is a mutable property ... )

    文章目录 一、报错信息 二、解决方案 一、报错信息 ---- Google Play 上架要求 Android 的编译版本 和 目标版本都要高于 30 才可以上传 ; 将 Android 的编译版本...和 目标版本 都升级为 30 之后 , Kotlin 的编译检查变得更严格 , 之前不规范的代码需要逐个修改 ; 将编译版本 compileSdkVersion 和 目标版本 targetSdkVersion...编译版本 compileSdkVersion 和 目标版本 targetSdkVersion 都为 28 时 , 编译不报上述错误 ; 改了下 Android 编译版本号 , 报了 286 个错误..., 今天逐个解决上述编译错误 ; 二、解决方案 ---- 错误分析 : 该错误报错位置是调用时 , 在方法参数中 , 应该传入非空参数的位置 , 传入了可空参数 ; 此类型错误与 Type mismatch...) 解决方案 : Canvas 的绘制位图的方法是 Android 系统方法 , 方法无法修改 , 只能修改参数 ; 在传入的参数后 , 添加 !!

    2.8K20

    Android中compileSdkVersion、buildToolsVersion、minSdkVersion和targetSdkVersion的含义作用

    为20的app运行在系统版本号高于20的手机系统中,app所执行的旧版本api在高版本可能不一样了,但是安卓为了兼容在系统层会读取当前应用的targetSdkVersion,当targetSdkVersion...一般来说compileSdkVersion设置为最新的SDK版本比较好,compileSdkVersion的作用就是可以让我们在编码的过程中编译器以最新的SDK的api去要求我们的编码,它会有最新的一些提醒和异常...,compileSdkVersion版本调高还有一个好处就是当我们的项目有其他第三方sdk或者supperLib时compileSdkVersion低于这些库的编译版本时就无法编译打包。...targetSdkVersion也是一样设置为最新的版本最好,因为不需要让系统对app进行前向兼容了,同时也可以使用高版本的一些新特性。...像我们在开发过程中如果需要用到高版本的api但是我们又不想去改动项目中的代码时可以把compileSdkVersion版本调到新版本,targetSdkVersion保持不变就可以,编译版本让你可以调用高版本的

    3.9K20

    【错误记录】Kotlin 编译报错 ( Type mismatch: inferred type is String? but String was expected )

    文章目录 一、报错信息 二、解决方案 一、报错信息 ---- Google Play 上架要求 Android 的编译版本 和 目标版本都要高于 30 才可以上传 ; 将 Android 的编译版本...和 目标版本 都升级为 30 之后 , Kotlin 的编译检查变得更严格 , 之前不规范的代码需要逐个修改 ; 将编译版本 compileSdkVersion 和 目标版本 targetSdkVersion...but String was expected 在 编译版本 compileSdkVersion 和 目标版本 targetSdkVersion 都为 28 时 , 编译不报上述错误 ; 改了下...Android 编译版本号 , 报了 286 个错误 , 今天逐个解决上述编译错误 ; 二、解决方案 ---- 错误分析 : 上述问题是在方法中传入一个参数 , 导致上述编译报错 ; 方法的参数只接受非空类型..., 不能接受可空参数 ; 传入的数据没有设置具体的数据类型 , 被自动推断为 String!

    3.1K20

    移动开发界囚徒现身说法,审查困境与控制权探讨

    Play Store 应用在 Play Store 的上架流程也基本没有问题。当然,因为这是个遗留应用的版本更新,发布间隔比较长,所以我得按谷歌的指示填写一些调查问卷。...我寻思着这也太顺利了,却无论如何没有想到大麻烦会在下班之后等着我。 麻烦来了 大概是晚上 21:30 左右,手机上亮起客户发来的消息,说使用最新的应用版本会在登录账户时遇到问题。...这个问题会导致应用在登录后立即崩溃,而使用较旧 Android 版本则不受影响。我们的最大疏忽,就是没有在模拟测试时使用最新的 Android 版本,所以没能及时问题隐患。...毕竟 Google Play Store 不支持版本回滚,如果不立即着手解决,用户会逐渐把这个最新版本的应用安装到手机上,然后把我们公司彻底逼疯。...多年来,我个人一直很反感移动应用开发,理由也跟这类文章中的说法相同——一旦决定开发移动应用,我们实际上就是把产品 / 服务的控制权交给了第三方,即使出了问题也无法修复。

    84510

    Android 8.1 开发者预览版 —— 为 ML 机器学习做好准备的 Oreo 升级版

    敬请期待 TensorFlow Lite 的公告。 Autofill 升级:我们一直努力扩展 Autofill 框架,改善密钥管理和其他 Autofill 服务的使用体验。...如果没有 Pixel 或者 Nexus 设备,可以通过 Android 8.1 虚拟器进行测试。...如果您的应用支持 Camera2 API 并且您手边有 Pixel 2 设备,您可以尝试使用 Pixel Visual Core 的一个早期版本。...-0-0) 可以将您项目的 compileSdkVersion 升级到 API 27 版本,从而和 Android O APIs 官方发布版本兼容。...确保 App 更新以后能够在 Android 8.1 和其他旧版本上运行。我们建议开发者使用 beta 测试功能,从部分用户群中先获取反馈,然后再进行多级发布。期待见到您的更新!

    1.8K40

    机器学习为核心,DeepMind助力谷歌开发的安卓 9「Pie」今日上线

    在配备两个前置摄像头或两个后置摄像头的设备上,你可以实现单个摄像头无法实现的创新功能,例如无缝变焦、散景和立体视觉。API 还允许你调用逻辑或融合的摄像机流,该流可以在两个或多个摄像机之间自动切换。...在支持的设备上,app 可以使用 OMAPI API 来访问安全组件(SE),以允许智能卡支付和其它安全服务。...正如去年谷歌所宣布的,Google Play 将在 2018 年 11 月让所有 app 更新目标 Android Oreo(targetSdkVersion 26 或更高)。...最开始,你需要下载官方 API 28 SDK、最新的工具和模拟器映像到 Android Studio 3.1 中,或者使用 Android Studio 3.2 的最新版本。...然后更新你的项目的 compileSdkVersion 和 targetSdkVersion 到 API 28。当你改变目标时,确保你的 app 支持所有合适的行为变化。

    3K10

    Android 11 开发者常见问题 | FAQ・第一期

    灰名单和其他 jar 包没有关系。无论在任何渠道,目前调用浅灰名单没有问题,但无法保证在未来版本浅灰名单中的非 SDK 接口是否会移至黑名单,所以我们建议浅灰名单中的非 SDK 接口尽量减少调用。...如果您要启动新的服务或启动过其他的应用,如果您的应用不可以看到其他的应用,是无法启动其他应用的组件。...如果应用使用了黑名单中的接口,运行时可能会有异常从而导致应用无法正常使用,那么 Google Play 是会拒绝上架的。...从这个角度来看,我们会尽量把行为变更放在 targetSdkVersion 升级之后。如果应用还没有升级到最新版本的 targetSdkVersion,就不会受到行为变更的影响。...GitHub 中我们提供了相应示例,通过参考示例代码可以有更完整的了解: github.com/android/use… 目前只有在 Andorid 11 中可以使用这个最新的 API,在低版本中无法使用

    2.6K40

    Android 9 Pie 兼容性常见问题及注意事项

    应用不应该再使用 org.apache.http.legacy 库,如果实在必须,可以将它打包进自己的 APK,同时改名以防止与运行时的版本冲突。...空闲应用无法访问麦克风、摄像头和传感器 为了更好地保证隐私,Android P 限制所有处于空闲状态的应用对麦克风、摄像头和所有 SensorManager 传感器的访问。...在大多数情况下,这些限制不会为现有应用带来新的问题,但我们仍然建议您从应用中移除此类传感器请求。...前台服务权限 应用 target 到 P 版本后,在使用前台服务时必须申请 FOREGROUND_SERVICE 权限。...Google Play targetSdkVersion 政策 为了推动应用获得 Android 新版本提供的安全和性能提升,Google Play 应用市场要求其上的应用必须: 从 2018 年 8

    1.7K20
    领券