在AndroidManifest.xml中uses-sdk内属性意思
作者:whsnow 时间:2021-10-08 17:16:09
在AndroidMenifest.xml中,常常会有下面的语句:
<uses-sdk android:minSdkVersion="4"
android:targetSdkVersion="10"
android:maxSdkVersion="10" />
在default.properties中,会看到下面的语句:
target=android-10
如果是使用Eclipse的话,还可能会看到这样的警告:
Attribute minSdkVersion (4) is lower than the project target API level (10)
那么,这里面的minSdkVersion、targetSdkVersion、maxSdkVersion、target API level四个数值到底有什么区别?
minSdkVersion与maxSdkVersion比较容易理解,就是在安装程序的时候,如果目标设备的API版本小于minSdkVersion,或者大于maxSdkVersion,程序将无法安装。一般来说没有必要设置maxSdkVersion。
targetSdkVersion相对复杂一些,如果设置了此属性,那么在程序执行时,如果目标设备的API版本正好等于此数值,他会告诉Android平台:此程序在此版本已经经过充分测,没有问题。不必为此程序开启兼容性检查判断的工作了。也就是说,如果targetSdkVersion与目标设备的API版本相同时,运行效率可能会高一些。
但是,这个设置仅仅是一个声明、一个通知,不会有太实质的作用,比如说,使用了targetSdkVersion这个SDK版本中的一个特性,但是这个特性在低版本中是不支持的,那么在低版本的API设备上运行程序时,可能会报错:java.lang.VerifyError。也就是说,此属性不会帮你解决兼容性的测试问题。你至少需要在minSdkVersion这个版本上将程序完整的跑一遍来确定兼容性是没有问题的。(这个问题确实让人头疼)
在default.properties中的target是指在编译的时候使用哪个版本的API进行编译。
综上,上面的四个值其实是作用于不同的时期:
target API level是在编译的时候起作用,用于指定使用哪个API版本(SDK版本)进行编译。
minSdkVersion和maxSdkVersion是在程序安装的时候起作用,用于指定哪些版本的设备可以安装此应用。
targetSdkVersion是在程序运行的时候起作用,用于提高指定版本的设备上程序运行体验。
这四个数值在程序编译时也没有严格的检查,比如说,你可以将minSdkVersion设置的比maxSdkVersion还大,他会自动忽略掉错误的maxSdkVersion。
补充:本站还提供了一个关于Android Manifest功能与权限的在线查询表供大家参考查询:
Android Manifest功能与权限描述大全:
http://tools.jb51.net/table/AndroidManifest
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Java如何实现压缩文件与解压缩zip文件
![](https://img.aspxhome.com/file/2023/6/67496_0s.png)
Java实现发红包功能
IDEA 2021.1 的 Win 和 Mac 快捷键大全
如何实现bean初始化摧毁方法的注入
![](https://img.aspxhome.com/file/2023/8/83588_0s.jpg)
Android BottomSheet效果的两种实现方式
![](https://img.aspxhome.com/file/2023/3/98643_0s.jpg)
java类加载机制、类加载器、自定义类加载器的案例
![](https://img.aspxhome.com/file/2023/7/79307_0s.jpg)
深入理解java中Arrays.sort()的用法
JAVA调用SAP WEBSERVICE服务实现流程图解
![](https://img.aspxhome.com/file/2023/2/58992_0s.png)
MybatisPlus使用@TableId主键id自增长无效的解决
![](https://img.aspxhome.com/file/2023/4/75024_0s.png)
Guava中这些Map技巧可以让代码量减少了50%
![](https://img.aspxhome.com/file/2023/6/103816_0s.jpg)
Java二叉搜索树基础原理与实现方法详解
![](https://img.aspxhome.com/file/2023/4/65154_0s.png)
Android中简单的电话管理与短信管理App编写实例
C# 站点IP访问频率限制 针对单个站点的实现方法
Java实现按比抽奖功能
![](https://img.aspxhome.com/file/2023/2/116212_0s.jpg)
C++基础概念讲述
![](https://img.aspxhome.com/file/2023/3/114943_0s.png)
c# 垃圾回收(GC)优化
![](https://img.aspxhome.com/file/2023/4/68104_0s.png)
解决Druid动态数据源配置重复刷错误日志的问题
![](https://img.aspxhome.com/file/2023/4/104024_0s.jpg)
Java字符编码简介_动力节点Java学院整理
Java查看线程运行状态的方法详解
![](https://img.aspxhome.com/file/2023/4/79294_0s.png)
关于报错IDEA Terminated with exit code 1的解决方法
![](https://img.aspxhome.com/file/2023/4/116834_0s.png)