2017-03-29 109 views
1

如果我選擇minSdkVersion = 4targetSdkVersion =「19」那麼在哪個sdk版本中,我的android應用程序將被開發?Android:如果我選擇minSdkVersion = 4和targetSdkVersion =「19」,那麼在我的Android應用程序開發哪個SDK版本?

就好像我的應用程序支持minSDK版本= 4那麼它將如何具有SdkVersion = 19的特性?

所以我感到困惑哪個版本的SDK如果讓我選擇我的Android應用程序將作出的minSdkVersion = 4targetSdkVersion =「19」,如果它支持所有從開始版本4到19的特徵,那麼它是如何在版本4中做的,我們沒有版本9的功能。

謝謝。

+1

簡單:如果您使用的設備中不存在的功能,您的應用程序將崩潰並燒燬可怕。在開發向後兼容的應用程序時,您必須檢查您嘗試使用的功能是否可用。你提到的那兩個領域與此無關。另外作爲一個方面說明:你應該總是在開發一個最新的api級別(當前會是25級)。最低等級4級?你是認真的嗎?我認爲唯一能夠遇到api level 4設備的地方是博物館。使用api級別9,覆蓋所有設備的99.9%。 –

+1

或者讓你的生活變得輕鬆,並與最低api水平15去。這仍然涵蓋99%的所有Android設備。 –

+0

查看此鏈接查看有多少用戶仍在使用哪個Android版本:https://www.statista.com/statistics/271774/share-of-android-platforms-on-mobile-devices-with-android-os/ – Guido

回答

0
<uses-sdk android:minSdkVersion="integer" 
      android:targetSdkVersion="integer" 
      android:maxSdkVersion="integer" /> 

包含在:

<manifest> 

描述:

允許表達您的應用程序與Android平臺的一個或多個版本的兼容性,通過API級別整數的手段。由應用程序表示的API級別將與特定Android系統的API級別進行比較,該級別可能因不同Android設備而異。

儘管有其名稱,但此元素用於指定API級別,而不是SDK(軟件開發工具包)或Android平臺的版本號。 API級別始終是一個整數。您無法從其關聯的Android版本號中派生API級別(例如,它與主要版本或主要版本和次要版本的總和不相同)。

另請閱讀有關版本控制您的應用程序的文檔。 屬性:

android:minSdkVersion 

的整數指定爲運行應用程序所需的最低API級別。如果系統的API級別低於此屬性中指定的值,Android系統將阻止用戶安裝應用程序。你應該總是聲明這個屬性。

注意:如果您未聲明此屬性,系統將默認值爲「1」,表示您的應用程序與所有Android版本兼容。如果您的應用程序與所有版本不兼容(例如,它使用API​​ Level 3中引入的API),並且您尚未聲明適當的minSdkVersion,那麼當安裝在API級別小於3的系統上時,應用程序將在執行期間崩潰運行時試圖訪問不可用的API。出於這個原因,一定要在minSdkVersion屬性中聲明適當的API級別。 android:targetSdkVersion 指定應用程序所針對的API級別的整數。如果未設置,則默認值等於minSdkVersion的值。

此屬性通知系統您已針對目標版本進行了測試,並且系統不應啓用任何兼容性行爲以維持您的應用程序與目標版本的向前兼容性。該應用程序仍然能夠在舊版本上運行(下載到minSdkVersion)。

隨着Android隨着每個新版本的發展,一些行爲甚至外觀可能會改變。但是,如果平臺的API級別高於應用程序的targetSdkVersion聲明的版本,系統可能會啓用兼容性行爲以確保您的應用程序繼續按照您的預期方式工作。您可以通過指定targetSdkVersion來匹配它所運行的平臺的API級別來禁用這種兼容性行爲。例如,將此值設置爲「11」或更高時,系統可以在Android 3.0或更高版本上運行時將新的默認主題(Holo)應用於您的應用程序,並且在大屏幕上運行時禁用屏幕兼容模式(因爲支持API 11級隱式支持更大的屏幕)。

根據您爲此屬性設置的值,系統可能會啓用許多兼容性行爲。在Build.VERSION_CODES參考中,相應的平臺版本描述了其中的一些行爲。

爲了維護您的應用程序以及每個Android版本,您應該增加此屬性的值以匹配最新的API級別,然後在相應的平臺版本上徹底測試您的應用程序。

API級別4 android:maxSdkVersion 一個整數,指定應用程序設計運行的最大API級別。

在Android 1.5,1.6,2.0和2.0.1中,系統在安裝應用程序時以及在系統更新後重新驗證應用程序時檢查此屬性的值。無論哪種情況,如果應用程序的maxSdkVersion屬性低於系統本身使用的API級別,則系統將不允許安裝該應用程序。在系統更新後重新驗證的情況下,這會有效地將您的應用程序從設備中刪除。

爲了說明這個屬性怎麼能系統更新後影響到你的應用程序,請看下面的例子:

的應用程序在其清單宣佈maxSdkVersion =「5」是在谷歌Play發佈。其設備運行Android 1.6(API級別4)的用戶下載並安裝該應用程序。幾周後,用戶會收到Android 2.0(API Level 5)的無線系統更新。安裝更新後,系統檢查應用程序的maxSdkVersion併成功重新驗證它。應用程序正常運行。但是,一段時間後,該設備會收到另一個系統更新,這次是Android 2.0.1(API Level 6)。更新之後,系統不能再重新驗證應用程序,因爲系統自己的API級別(6)現在高於應用程序(5)支持的最大值。系統阻止應用程序對用戶可見,實際上將其從設備中移除。

警告:建議不要聲明該屬性。首先,不需要將該屬性設置爲阻止將應用程序部署到新版Android平臺上的方式,因爲它們已發佈。按照設計,新版本的平臺完全向後兼容。您的應用程序應該在新版本上正常工作,前提是它只使用標準API並遵循開發最佳實踐。其次,請注意,在某些情況下,聲明該屬性可能導致您的應用程序在系統更新到更高API級別後從用戶設備中刪除。安裝應用程序的大多數設備都將定期收到系統更新,因此在設置此屬性之前應考慮其對應用程序的影響。

引入於:API Level 4 Android(超越Android 2.0.1)的未來版本在安裝或重新驗證期間將不再檢查或強制執行maxSdkVersion屬性。但是,在向用戶展示可供下載的應用程序時,Google Play將繼續使用該屬性作爲過濾條件。

+0

這是很多的信息!謝謝@Vlad – Ethan

+0

Ethan。如果我的評論對你有用。給我一個評價。謝謝。 –

0

首先,你需要知道這些是什麼意思。

minSdkVersion表示應用程序需要支持它的最低SDK版本(反過來,它指的是Android版本)。 targetSdkVersion表示您的應用在其上運行的最佳SDK版本(您實際上指的是該應用的Android版本)。

但是,您錯過了第三個設置。

compileSdkVersion是你正在尋找的東西。當您將compileSdkVersion設置爲指向有效SDK的值(介於minSdkVersion和targetSdkVersion之間)時,您的應用程序將使用該SDK作爲首選SDK進行編譯。

查看任何項目的示例build.gradle文件以瞭解其工作原理。我已經鏈接下面的一個: https://github.com/googlesamples/android-UniversalMusicPlayer/blob/master/mobile/build.gradle

相關問題