2012-04-22 122 views
1

當安裝SDK時,我讀了大約97%的手機支持Android 2.1 我的問題是我應該在打開一個新項目時選擇將其編譯爲Android 2.1? 爲2.1編寫的應用程序是否可以在新版本中使用? 會不會有相反的工作?如果我發展到4.0.3,它會在更老的?要選擇什麼版本?

感謝, 埃裏克

回答

5

我的問題是我應該在打開一個新項目時選擇將其編譯爲Android 2.1?

您指定爲構建目標(「選擇編譯爲」)對Android的哪些版本可以運行您的應用程序沒有直接影響。

爲2.1編寫的應用程序是否可以在新版本中使用?

對於單詞「for」的任何合理解釋,是的。

如果我發展到4.0.3,它會在更老的?

與Agarwal的回答一樣,這取決於你所說的「to」是什麼意思。例如,假設您想要使用CalendarContract。該課程已添加到API Level 14(a.k.a.,Android 4.0)中。只要您使用只需在Android 4.0及更高版本上使用CalendarContract即可。但是,如果您嘗試在較舊的設備上使用CalendarContract,則會崩潰,因爲該類不會存在於固件中。

因此,您可以有條件地使用更新的API,只要您確保只在運行較新版本Android的設備上使用這些更新的API。通常,這是通過版本防護塊完成的,如下所示:

if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.HONEYCOMB) { 
    // do something that requires API Level 11+ here 
} 
+0

對。感謝您的指定答案。 – 2012-04-22 16:44:12

+0

但由於某些原因,我無法在2.2上運行簡單的ICS HelloWorld應用程序。任何想法爲什麼? – 2012-04-22 16:48:41

+0

@BojanKogoj:不,因爲您沒有提供任何超出「無法運行」的症狀,這可能會有很多不同的含義。隨意在SO上提問。如果應用程序崩潰,請包含堆棧跟蹤。 – CommonsWare 2012-04-22 16:51:38

0

如果發展到4.0.3則不會得到安裝在舊版本的設備。 如果您爲2.1開發,它將在較新版本上正常工作。但是,如果你使用你不能得到4.0.3功能。

+0

完全取決於您對單詞「to」的定義。 – CommonsWare 2012-04-22 16:38:08

+0

相反呢? 2.1版本(或更常見的2.2版本)可用於新設備嗎? – 2012-04-22 16:38:34