Android中的TargetsDkversion以及较低版本(例如Android 2.3)的兼容性



我在文档中阅读了有关 targetsdkversion 的读取,我知道 targetsdkversion 是什么。但是我的问题是 targetsdkversion 是19,如果 minsdkversion 是8 ..现在,如果我的应用在代码的某些部分中使用API 16,我的应用程序是否在Android 2.3中运行。?

您的应用程序仍将运行,但是您必须在使用特定方法之前检查Android版本。Android Studio通常会阻止您讨论可能的问题。如果您在API8上使用API 16方法,则该应用可能会崩溃。它将抛出 nosuchmethodexception classNotFoundException (依赖)。这就是为什么您必须检查运行版本以防止崩溃的原因。

示例

    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN){
        view.setBackground(drawable);
    } else {
        view.setBackgroundDrawable(drawable);
    }

注释

您也可以使用注释指定将在特定版本和更高版本上运行的方法:

@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
public static void setBackground(View view, Drawable drawable){
   view.setBackground(drawable);
}

如果您将使用Android 2.3的设备上的API 16中的代码,则可能是Nosuchmethodexception。

简短的答案是:是的。很长,只有当您不使用更高级别的API调用时。市场使用Minsdkversion标签来指示该应用程序可以安装的最低设备操作系统。Target SDK版本用于指示您要编译的API级别,这使您可以访问更高级别的API调用。但是,如果这样做,您将捍卫某些代码,因为某些设备(Minsdkversion设备)可能没有所需的API。

不要忘记运行,如果您使用API可用于API级别16,并且在API级别2.3上不可用。首先是 Eclipse会给您一个错误指出您的最低sdk ver是8,其中API(方法或函数)在SDK VER 8中不可用的API(方法或函数)。

SO 您可以检查UR SDK版本并基于此做出决定。这也适用,反之亦然,假设您将要使用的方法将显示为在Eclipse中向U显示。该特定功能可能可用于某些SDK版本,然后在某些API级别后可能会完全丢失其功能,并且支持在即将到来的API级别完全停止。

这是如何使用此检查的一个小例子:

private int currentApi = Build.VERSION.SDK_INT; 
if(currentApi >= 16){
btnIconTxt.setBackground(new ColorDrawable(Color.parseColor(btnColor)));
}
else
btnIconTxt.setBackgroundDrawable(new ColorDrawable(Color.parseColor(btnColor)));

setbackgrounddrawable(可绘制)[此方法在kitkat上无法正常使用],从API级别16中弃用,因此先进和使用适当的方法更好。如果API级别大于或等于16,则在这种情况下进行第一个。

相关内容

最新更新