【AndroidManifest】targetSdkVersion与target属性的区别
来源:互联网 发布:淘宝商城男鞋运动鞋 编辑:程序博客网 时间:2024/06/01 22:08
AndroidMenifest.xml中targetSdkVersion和project.properties中的target属性的区别:
在AndroidMenifest.xml中,常常会有下面的语句: <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="10" android:maxSdkVersion="15" />
在project.properties中,会看到下面的语句: target=android-10 如果是使用Eclipse的话,还可能会看到这样的警告:
Attribute minSdkVersion (4) is lower than the project target API level (10)
那么,这里面的minSdkVersion、maxSdkVersion、targetSdkVersion、target四个属性到底有什么区别?
minSdkVersion与maxSdkVersion比较容易理解,就是在安装程序的时候,如果目标设备的API版本小于minSdkVersion, 或者大于maxSdkVersion,程序将无法安装。一般来说没有必要设置maxSdkVersion。
targetSdkVersion相对复杂一些,如果设置了此属性,那么在程序执行时,如果目标设备的API版本正好等于此数值, 他会告诉Android平台:此程序在此版本已经经过充分测,没有问题。不必为此程序开启兼容性检查判断的工作了。 也就是说,如果targetSdkVersion与目标设备的API版本相同时,运行效率可能会高一些。 但是,这个设置仅仅是一个声明、一个通知,不会有太实质的作用, 比如说,使用了targetSdkVersion这个SDK版本中的一个特性,但是这个特性在低版本中是不支持的 ,那么在低版本的API设备上运行程序时,可能会报错:java.lang.VerifyError。也就是说,此属性不会帮你解决兼容性的测试问题。 你至少需要在minSdkVersion这个版本上将程序完整的跑一遍来确定兼容性是没有问题的。(这个问题确实让人头疼)
project.properties中的target是指在编译的时候使用哪个版本的API进行编译。 综上,上面的四个值其实是作用于不同的时期:
target API level是在编译的时候起作用,用于指定使用哪个API版本(SDK版本)进行编译。 minSdkVersion和maxSdkVersion是在程序安装的时候起作用, 用于指定哪些版本的设备可以安装此应用。 targetSdkVersion是在程序运行的时候起作用,用于提高指定版本的设备上程序运行体验。
这四个数值在程序编译时也没有严格的检查,比如说,你可以将minSdkVersion设置的比maxSdkVersion还大,他会自动忽略掉错误的maxSdkVersion。
小技巧补充:
最好将project.properties中target与AndroidManifest中minSdkVersion的APILevel设置为同一个等级,达到编译兼容最小版本的效果,如果前者比后者等级高的话,可能出现的一个问题就是,在开发过程中,一些高等级的api能够通过编译,但是当实际运行在低系统的真机或者模拟器上时,将会出现一些NoSuchMethodError的错误,导致程序奔溃。例如:
android.view.view.setBackgroundDrawable(Drawable background)方法在APILeven为16时废弃(deprecated)掉了,改用setBackground(Drawable background),开发中如果工程project.properties中的target编译版本大于或等于16,而在AndroidManifest中设置的minSdkVersion为小于16,则会出现能够通过开发工具的编译,但运行在4.1系统一下的机器中时,会出现NoSuchMethodError的错误!
- 【AndroidManifest】targetSdkVersion与target属性的区别
- targetSdkVersion和与target属性的区别
- targetSdkVersion和与target属性的区别
- targetSdkVersion和与target属性的区别
- targetSdkVersion和与target属性的区别
- targetSdkVersion和与target属性的区别
- android 中targetSdkVersion和与target属性的区别
- targetSdkVersion和与target属性
- minSdkVersion、maxSdkVersion、targetSdkVersion、target四个属性区别
- 【android学习】targetSdkVersion与project.properties中的target的区别
- MinSdkVersion, targetSdkVersion, target API level的区别
- MinSdkVersion, targetSdkVersion, target API level的区别
- MinSdkVersion, targetSdkVersion, target API level的区别
- minSdkVersion maxSdkVersion targetSdkVersion target 的区别
- AndroidMenifest.xml中targetSdkVersion和project.properties中的target属性的区别
- AndroidManifest.xml中的minSdkVersion、targetSdkVersion、maxSdkVersion和project.properties中target区别
- Android中target/minSdkVersion/targetSdkVersion属性的含义
- MinSdkVersion, targetSdkVersion, target API level的区别(转)
- FPGA Verilog语言实现数字钟
- coreseek 使用技巧
- LSP(分层服务提供者)
- [JQ权威指南]第十八天:使用show()与hide()方法动画显示和隐藏图片
- 语义分析的一些方法(下篇)
- 【AndroidManifest】targetSdkVersion与target属性的区别
- Hash传递攻击Windows2012远程桌面
- android 电容屏(三):驱动调试之驱动程序分析篇
- SQL SERVER的ROWNUMBER分页
- 数据库事务
- Windows环境下的NodeJS+NPM+Bower安装配置
- bzoj 1013: [JSOI2008]球形空间产生器sphere
- 设计模式概览续(结构型模式)
- fullCalendar中文api