minSdkVersion、API level 以及兼容包appcompat三者之间的关系

1、minSDK与API

minSDK: 该应用能够运行的最低版本的SDK是多少。

API level: 每个API有它被引入android SDK的时间,也就是对应的SDK版本,自此SDK版本以上才能使用该API


比如说某应用APK使用API: funA ,且funA被引入的版本为7,那么只有7以后的SDK才能使用该API。
然后这个APK运行的SDK平台一定要大于这个funA被引入的SDK版本7,minSDK也是我们的这个APK要能够运行的平台,所以minSDK一定要大于等于7。


综上: 在确定了最小SDK版本的情况下,如何选择使用API:要符合以下公式,即: API_Level <= minSDK (即要选择使用那些被引入的版本低于minSDK 的API)


那么问题来了,我们在高版本平台下build,我们不可能只用那些低版本的API吧,高版本才有的api和特性怎么办?

答案: 兼容包。


2、minSDK与兼容包



为了兼容低版本的SDK平台运行高版本平台编译出来的apk,需要使用兼容包,有了兼容包就可以在低版本平台运行该apk,并使用一些高版本才有的特性,
但是问题来了,该apk如何选择api?是使用高版本的api还是使用低版本的api,还是使用兼容包的api? (对于API的概念和特性的概念感觉有点混乱了,这里只讲概念,就不区分了)


我的理解是: 一些低版本不支持或者低版本与高版本功能不一致的api或者特性组件,要使用兼容库的api,兼容库的api既可以运行在高版本平台也可以运行在低版本平台,
而对于一些低版本已经支持,到高版本功能仍然没有变化的api,那就使用这个通用的api。


比如默认生成的apk demo工程:


A: 当我们选择的minSDK和targetSDK是一致的时候,这个时候默认使用的组件是Activity,工程里面不包含兼容包。
B: 而当minSDK比较低的时候,那么意思就是说要兼容低版本SDK平台,这个时候
默认生成的工程中就会包含兼容包V7,而这个时候默认使用的组件就是ActionBarActivity,而不是Activity,这是为什么呢?


首先,Activity这个组件很早就有了,我查看api文档,在level 1就已经被引入,所以为什么不使用Activity呢?
答案是:我们这个默认生成的工程,要使用Activity的ActionBar特性,而这个特性在早期的SDK版本(比如说minSDK)中的Activity还不支持,
所以这个时候如果仍然使用Activity就不能达到和前一种工程一样的效果,不能够使用ActionBar特性,这个时候就需要发挥兼容包的作用了,
ActionBarActivity是兼容包v7或者v4中的组件,我猜想兼容包中利用低版本SDK的api重新实现了和高版本类似的功能,
然后起名字叫ActionBarActivity,而低版本的API显然也是能够在高版本平台上运行的,所以就达到了兼容的目的!



### 回答1: 这个错误表示应用的"minSdkVersion"(最小支持的Android API级别)高于当前设备的API级别,导致应用无法在该设备上运行。 要解决这个问题,您需要将应用的"minSdkVersion"降低到低于或等于当前设备的API级别。您可以通过编辑应用的build.gradle文件来更改"minSdkVersion"。请注意,这样做可能会影响您的应用在较低版本的Android上的兼容性。 另外,您还可以尝试在应用代码中使用条件语句,根据当前设备的API级别来执行不同的代码路径,以确保应用可以在各种设备上运行。 ### 回答2: 该问题意味着应用程序的"minSdkVersion"最低支持的Android API级别高于设备的Android API级别。这可能会导致应用程序无法在该设备上运行,并显示错误消息。 具体来说,应用程序开发人员必须根据其应用程序的要求选择正确的最低支持级别。如果选择了较高的最低支持级别,则允许应用程序在较新的设备上运行,但会将一些旧设备排除在外。 对于设备API级别较低的设备,应用程序将不能正常运行,因为它需要较高版本的API才能正常工作。这意味着开发人员必须降低其应用程序的最低支持级别,以便在设备上运行。如果应用程序已发布,则必须进行更新,以便与更多的设备兼容。 在编写应用程序时,开发人员应该考虑到这些限制,并使用API检查来确定其代码是否兼容较旧的设备。他们还可以使用功能检查来加载适当的类和方法,并避免在设备上运行时产生错误。 总之,开发人员必须始终保持对应用程序的最低支持级别和设备API级别的清晰了解,以确保其应用程序在适当的设备上能够正常运行。 ### 回答3: 这个问题指的是应用程序的最低SDK版本高于设备的API级别。这通常会导致应用程序无法在该设备上运行,并提示错误消息。 在开发应用程序时,开发人员可以指定需要特定的最低SDK版本才能在手机或平板电脑上运行。这意味着应用程序需要至少具有该最低SDK版本的所有功能才能正常运行。然而,如果用户的设备API级别低于应用程序的最低SDK版本,那么应用程序将无法在该设备上运行。这就是所谓的“最低SDK版本高于设备API级别”的问题。 要解决这个问题,通常有两种方法: 1. 更新设备的API级别 此方法意味着用户需要升级他们的设备,以便它具有满足应用程序最低SDK版本的API级别。用户可以检查他们的设备文档或在互联网上搜索,以了解他们的设备可以升级到哪个更高版本的API级别。 2. 降低应用程序的最低SDK版本 另一种解决方法是使应用程序的最低SDK版本与用户设备的API级别匹配。然而,这可能需要修改应用程序代码以满足较低版本的SDK要求,这可能会限制应用程序的功能。 总的来说,要避免“最低SDK版本高于设备API级别”问题,开发人员应该考虑市场上最广泛使用的API级别,并尽可能支持多个版本。此外,应开发人员应该仔细阅读Android文档,以确保他们的应用程序最低SDK版本与设备上的API级别匹配。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值