使用更高的sdk编译android项目

使用更高的sdk编译android项目,android,sdk,Android,Sdk,我有一个关于android SDK的问题。我正在开发一个android应用程序,它必须在android 2.3.3及更高版本上运行 因为我需要使用“android-support-v7-appcompat”库,所以我需要用android 4或更高版本编译这个项目。如果我尝试使用Android 2.3.3进行编译,则该项目无法编译 那么,如果我用Android 4编译这个项目会发生什么呢?它能在安卓2.3.3上运行吗 当然,我会加入AndroidManifest 它取决于您为ex选择的目标:

我有一个关于android SDK的问题。我正在开发一个android应用程序,它必须在android 2.3.3及更高版本上运行

因为我需要使用“android-support-v7-appcompat”库,所以我需要用android 4或更高版本编译这个项目。如果我尝试使用Android 2.3.3进行编译,则该项目无法编译

那么,如果我用Android 4编译这个项目会发生什么呢?它能在安卓2.3.3上运行吗


当然,我会加入AndroidManifest

它取决于您为ex选择的目标:

    <uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="19" />

在任何情况下,您都应该在清单文件中正确定义minSDK和targetSDK。例如,当您使用API 19(KitKat)进行编译并将其设置为minSDK API 10时,您的2.3.3 Android上的一切都应该可以工作

但是,如果您在代码中使用了一些在2.3.3中不可用的方法、常量,您将在Eclipse中收到警告/错误(我打赌在Android Studio中也是如此)。例如:

if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.JELLY_BEAN_MR2) {
        // before JELLY_BEAN_MR2 code;
        // methods, constants available for example from API 1
    } else {
        // after JELLY_BEAN_MR2 code
        // here are new methods,constants available from GINGERBREAD_MR1 and after
    }
if(android.os.Build.VERSION.SDK\u INT
因此,在这里,你的应用程序将以两种不同的方式执行某些内容,具体取决于它运行的Android版本。。。如果您不使用等于或高于JELLY_BEAN_MR2的API进行编译,您甚至无法进行编译,因为在此之前,常量JELLY_BEAN_MR2在API中不可用。。。然而,当您使用更高的API编译时,所有内容都将正确编译,应用程序将在早期版本上正常工作

若您保留类似这样的代码,则会出现警告,但@SuppressLint(“NewApi”)在调用方法之前应将其删除,不会出现进一步的问题

希望这能有所帮助,现在一切都清楚了……)

干杯