大家好!
我是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
但我没有得到最佳做法。所以请分享您的经验。
答案 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'
}
}
}
详细了解targetSdkVersion
,minSdkVersion
和compileSdkVersion
here。
在这种情况下,您的minSdkVersion
应为21(android 5.0),targetSdkVersion
和compileSdkVersion
应为25(android 7.1)。