转自:http://blog.csdn.net/champgauss/article/details/7291189
MinSdkVersion, targetSdkVersion, target API level的区别
在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。
分享到:
相关推荐
这种情况下,开发者需要理解minSdkVersion、targetSdkVersion以及deviceSdk等概念,并采取合适的解决策略来确保应用能够正常运行。 ### 一、问题背景 #### 1.1 Android SDK版本说明 - **minSdkVersion**: 表示应用...
开发者应确保应用向下兼容更低版本的Android,通常通过设置`minSdkVersion`、`targetSdkVersion`和`maxSdkVersion`属性。 - **编译与构建**:使用API 22时,需要在构建配置中指定`targetSdkVersion`为22,以利用新...
以下是`minSdkVersion`、`targetSdkVersion`、`maxSdkVersion`以及`target API level`四个数值的详细解释: 1. **minSdkVersion**:这是应用能够支持的最低Android API级别。当用户尝试在设备上安装应用时,系统会...
为了确保跨版本兼容性,开发者通常需要在`build.gradle`文件中设置`minSdkVersion`、`targetSdkVersion`和`compileSdkVersion`。例如: ```groovy android { compileSdkVersion 22 defaultConfig { minSdkVersion...
米家扩展程序也是基于Android环境开发的,开发扩展程序的时候请确保Android配置信息(比如compileSdkVersion、minSdkVersion、targetSdkVersion)与米家最新版本保持一致。 米家APP最新版本:5.0.28 米家APP最新API ...
targetSdkVersion 25 } } Add jitpack repository to your root build.gradle: allprojects { repositories { ... maven { url 'https://jitpack.io' } } } Add dependency to app level build.gradle: ...
使用"android-14"意味着你的应用至少要支持API Level 15的设备,但可以通过设置minSdkVersion和targetSdkVersion属性,让你的应用向下兼容更低版本的Android。 9. **权限和特性**:Android 4.0.3引入了一些新的系统...
开发者通常需要通过设置minSdkVersion、targetSdkVersion和maxSdkVersion来控制应用的兼容性范围。 五、最佳实践 1. 使用最新的稳定API版本进行开发,以充分利用新功能并遵循最新的设计规范。 2. 对于低版本设备的...
- 同时,检查并更新`AndroidManifest.xml`文件中的`<uses-sdk android:minSdkVersion="5"/>`,将其替换为`<uses-sdk android:minSdkVersion="7"/>`,以反映实际使用的最低支持SDK版本。 ### 2. Dalvik格式转换失败 ...
- `compileSdkVersion`(在Gradle 7.0+中变为`android.compileSdk`):构建时使用的Android版本,应与`targetSdkVersion`匹配或更高。 5. **更新策略**: - **强制更新**:用户必须更新到最新版本才能继续使用...
在SDK 24中,开发者需要在build.gradle文件中指定targetSdkVersion和minSdkVersion,确保应用至少支持到API 24。 **5. Android虚拟设备(AVD)** AVD是Android SDK中的一个关键组件,用于创建和管理模拟器实例。...
在尝试编译包含高版本API方法的代码时,如果`minSdkVersion`设置为8,Android Studio会报错,提示需要API level 9。开发者可能会选择使用`@SuppressLint("NewApi")`或`@TargetApi(9)`注解来解决编译错误。然而,这...
The application’s minSdkVersion is newer than the device API level. 意思是我使用的设备的sdk版本低于要求的sdk版本 解决方法: 找到项目所在位置 项目位置\app\build.gradle 注意是app文件夹下的,不是...
在新建项目的AndroidManifest.xml中指定minSdkVersion和targetSdkVersion属性,确保应用兼容Android 4.4及以上版本。 7. **API 19特性和变化**:了解API 19带来的新功能和变化是必要的,例如:运行时权限、多窗口...
- `minSdkVersion`定义了应用能运行的最低系统版本,`targetSdkVersion`指明了应用优化的目标版本。 5. **开发实践** - 利用Android 4.3的新特性,如BLE,可以开发节能的物联网应用。 - 使用OpenGL ES 3.0提升...
<uses-sdk android:minSdkVersion="X" android:targetSdkVersion="Y" /> ``` 这里的`X`和`Y`应替换为你项目对应的最小和目标SDK版本。 2. **修改Gradle配置**:如果你的项目使用了Gradle构建,你需要在`build....
在`Manifest.xml`中,设置`minSdkVersion`为4,`targetSdkVersion`为你的目标API版本。同时,需要在你的Fragment相关的Activity中导入`android.support.v4.app.*`包,并让Activity继承`FragmentActivity`。 2. **...
targetSdkVersion 19 multiDexEnabled = true } signingConfigs { myrelease { keyAlias 'androiddebugkey' keyPassword 'android' storeFile file('C:\\Users\\Adminis') } } } ``` #### 四、总结 ...
targetSdkVersion.apiLevel = 29 versionCode = 1 versionName = "1.0" } ndk { abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86' } } android.ndk { moduleName "mylibrary" // 这是你原生库的名字 ...