如何正确选择Android sdkVersion?

时间:2017-08-16 11:52:53

标签: android sdk

大家好!

我是Android编程的新手,所以简单的事情有时会成为一个问题。

我有我的申请。它应该适用于Android 5及更高版本的设备。 问题是什么是sdkVersion定义的正确策略?

我的意思。

例如,我需要实现permision才能使用蓝牙。 如果我的目标sdkVersion为7且最小sdkVersion为5,我应该在清单文件中询问权限,然后在运行时实现它。喜欢这个

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
...
}

但如果我的目标sdkVersion为5,则Build.VERSION_CODES.M无法解析。

所以问题是:选择sdkVersion的正确方法是什么?我在哪里可以阅读它?

我在这里阅读https://developer.android.com/guide/topics/manifest/uses-sdk-element.html#target

但我没有得到最佳做法。所以请分享您的经验。

2 个答案:

答案 0 :(得分:1)

阅读伊恩湖的这篇文章:Picking your compileSdkVersion, minSdkVersion, and targetSdkVersion

<强> compileSdkVersion:

  

compileSdkVersion是告诉Gradle什么版本的方法   Android SDK用于编译您的应用程序。使用新的Android SDK是一个   要求使用在该级别添加的任何新API。

<强>的minSdkVersion:

  

如果compileSdkVersion设置了最新的API,   minSdkVersion是您应用的下限。 minSdkVersion是   Google Play商店用于确定哪个信号的信号之一   用户的设备可以安装应用程序。

<强> targetSdkVersion:

  

然而,三者中最有趣的是targetSdkVersion。   targetSdkVersion是Android提供的主要方式   不应用行为更改的兼容性,除非   targetSdkVersion已更新。这允许您使用新的API(和您一样)   在完成之前,确实更新了你的compileSdkVersion吗?)   行为改变。

理想情况下,这种关系在稳定状态下会更像这样:

  

minSdkVersion(尽可能最低)&lt; =       targetSdkVersion == compileSdkVersion(最新的SDK)

答案 1 :(得分:1)

我想您使用的是Android Studio和build.gradle。如果没有,我建议你去拿它。以下所有内容均与Android Studio和Gradle构建系统相关。

您的主要错误是build.gradle模块的app中的 SDK版本与Android版本不同。 Here是平台代号,版本,API级别的列表。您需要的SDK版本是第一个表的API级别列中的数字。

这是针对Android 5.0及更新版本的应用的android部分的build.gradle部分。

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.3"
    defaultConfig {
        applicationId "net.eraga.myobjectives"
        minSdkVersion 21
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

详细了解targetSdkVersionminSdkVersioncompileSdkVersion here

在这种情况下,您的minSdkVersion应为21(android 5.0),targetSdkVersioncompileSdkVersion应为25(android 7.1)。