关于android API级别的困惑?
我正在学习一门关于android的Udacity课程,这些术语似乎让我感到困惑 我使用android studio 1.x的最新版本 在我的身材里,格拉德尔,我有这些关于android API级别的困惑?,android,android-studio,avd,android-sdk-tools,build.gradle,Android,Android Studio,Avd,Android Sdk Tools,Build.gradle,我正在学习一门关于android的Udacity课程,这些术语似乎让我感到困惑 我使用android studio 1.x的最新版本 在我的身材里,格拉德尔,我有这些 compileSdkVersion 21 buildToolsVersion "21.1.2" ...... minSdkVersion 10 targetSdkVersion 20 versionCode 1 versionName "1.0" ....
compileSdkVersion 21
buildToolsVersion "21.1.2"
......
minSdkVersion 10
targetSdkVersion 20
versionCode 1
versionName "1.0"
....
compile 'com.android.support:appcompat-v7:20.0.0'
我的假设
如果我将清单文件中的app主题保留为默认,我会将其设置为使用app:theme,而在styles.xml中则默认为使用app:theme
appcompat.light.darkaction bar
我理解了appcompat主题的意思,即它将更改为在目标SDK的版本中使用主题,而不管设备操作系统的版本如何
当我选择API 21时,它看起来像一个材料应用程序
当我选择API 20时,它看起来像一个kitkat应用程序
都在我运行ICS的设备上
因此,无论设备操作系统如何,target SDK都控制着我的应用程序的外观,
它定义了设备可以支持的最高版本的android,对吗?默认情况下,外观更改为最新版本或目标API外观,同时使用app:compat主题仍使其能够在较低的SDK上运行,低至API 10
minsdk是支持的最小值
我一直到这儿吗
现在让我困惑的是
什么是CompileSDK,它应该始终是最新的吗
示例:材质没有在操作栏图标中显示应用程序图标,我不喜欢它,并切换到API 20
接下来是MOOC视频
但我是否应该将编译sdk保留为21,这会不会使应用程序看起来像材料,因为我很困惑,因为它没有
最后一个问题,,
我想在运行姜饼的设备上测试应用程序,我没有,
你能为姜饼设备推荐一些典型的AVD配置吗?因为我知道很多人在发展中国家仍然使用它,
我应该使用什么样的ram、屏幕大小和像素密度来适合典型的姜饼设备
因此,无论设备操作系统如何,target SDK都在控制我的应用程序的外观
对。除其他外
它定义了设备可以支持的最高版本的android,对吗
不!目标SDK表示用于测试应用程序的SDK。您可以使用目标SDK 20并在安装了API 21的设备上运行应用程序:它将使用KitKat l&f i.e level 20
怎么可能呢?当以API 20为目标的应用程序在具有API 21的设备上运行时:系统将自动启用一些向后兼容性挂钩,以便您的应用程序的行为与旧版本(即targetVersion操作系统)上的行为相同
支持的最大sdk是很少使用且不推荐使用的maxSdk属性。如果指定maxSdk 20:您将无法在运行SDK 21的设备上安装应用程序+
编译SDK级别是用于编译应用程序的SDK版本。如果您选择最新版本:最新android版本的用户将受益于为他们优化的代码。它将允许您使用sdk的最新功能。。。但在使用新API编写代码时要小心,因为它会在旧设备上崩溃
最低sdk版本可能低于编译sdk。在您的示例中,您声明您的代码可以在API级别10上执行,但可以使用API级别21编译。。。这没关系,但您必须确保API-10中不存在的每个API调用不会在运行API-10的设备上执行
让我们来说明这个棘手的问题。假设:compileSdk=20;targetSdk=20和minSdk=10
if (Build.VERSION.SDK_INT >= 13) {
apiCallToSomethingAvailableOnlySinceApi13();
}else {
//put here some alternative code to perform something similar
//(but probably degraded) feature
//on device running API 10, 11 or 12
//device with api 9 or lower are exclude anyway (because minSdk is 10)
}
总结如下:
minSDK:可以在至少具有此级别的设备上安装应用程序,开发人员编写了防御代码,以确保在运行minSDK版本的设备上不会执行比minSDK更新的所有api调用
targetSDK:应用程序已在此级别上进行测试,较新的设备必须启用向后兼容性挂钩,以便应用程序的行为仍像在较新的设备上运行一样
compileSDK:代码经过优化,可以在这个级别上运行。通常可以安全地将其与targetSDK相同
maxSDK:您无法在运行更高API的设备上安装该应用程序。不推荐使用,而且大多数情况下都没有用。@DroidIcs抱歉,我看不出问题所在。你能说得更准确些吗?检查你对minsdk的解释