2013-11-26 62 views
2

我有一个关于android sdks的问题。我正在开发一个Android应用程序,它必须在Android 2.3.3及更高版本上工作。用更高的sdk编译android项目

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

那么如果我使用Android 4编译项目会发生什么?它会在Android 2.3.3上运行吗?

当然我会在AndroidManifest中设置。

回答

1

在任何情况下,你应该在适当的清单文件中定义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 
    } 

所以在这里你的应用程序在两个不同的方式取决于它是在...运行如果您不API编译Android版本将执行什么等于或JELLY_BEAN_MR2的更高,你不会即使能够编译,因为之前,常量JELLY_BEAN_MR2在API中不可用...但是,当您使用更高API编译时,所有内容都将被正确编译,并且应用程序可以在早期版本中正常工作。

如果您保留这样的代码,警告将在调用方法之前出现,但是@SuppressLint(“NewApi”)应该将其删除,而不会再有问题。

希望它帮助,它现在很清楚..;)

干杯

0

它取决于选择前你的目标:

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