2013-11-26 96 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" />