[英]what is the propose of targetSdkVersion in android?
我有 2 個關於 targetSdkVersion 的問題:
1-android中targetSdkVersion的建議是什么?
2-如果我從 gradle 設置中刪除它會發生什么?
android:targetSdkVersion
此屬性通知系統您已針對目標版本進行了測試,並且系統不應啟用任何兼容性行為來保持您的應用程序與目標版本的前向兼容性。
隨着 Android 隨着每個新版本的發展,某些行為甚至外觀可能會發生變化。 但是,如果平台的 API 級別高於您應用的 targetSdkVersion 聲明的版本,系統可能會啟用兼容性行為,以確保您的應用繼續按照您期望的方式運行。 您可以通過指定 targetSdkVersion 以匹配運行它的平台的 API 級別來禁用此類兼容性行為。 例如,將此值設置為“11”或更高允許系統在 Android 3.0 或更高版本上運行時將新的默認主題(Holo)應用到您的應用程序,並且還可以在較大屏幕上運行時禁用屏幕兼容模式(因為支持 API 11 級隱式支持更大的屏幕)。
minSDK - targetSdk - compileSdk之間的關系
minSdkVersion(最低可能)<= targetSdkVersion == compileSdkVersion(最新 SDK)
如果您不提供targetSdkVersion
怎么辦?
您的 minSdkVersion 和 compileSdkVersion 為 < API 23
(6.0 - MarshMallow - 具有運行時權限) 並且您尚未添加targetSdkVersion
。
默認情況下,您的應用程序將獲得您在清單中提供的所有權限,因為您尚未使用 API 23 編譯或提供 targetSdkVersion。
在這些情況下,默認為minSdkVersion
。 如果您沒有提供minSdkVersion
,那么它默認為 API 1。
targetSdkVersion
中 targetSdkVersion 的建議是什么?
目的是告訴 Gradle 您測試過的 Android API 的版本是什么。 它還告訴運行時平台啟用向后兼容功能以與目標版本兼容。 因此,如果您在較新的平台上運行,運行時將嘗試表現得像您的(舊)目標版本。
如果我從 Gradle 設置中刪除它會發生什么?
如果targetSdkVersion
,則默認為minSdkVersion
。 (如果你忽略它,它默認為 1!)
有關更多信息(包括設置targetSdkVersion
效果的一些示例),請閱讀
例如,如果我們以 API 14 為目標應用程序,Android 會處理更高 API 中引入的運行時權限嗎?
通常,是的1 。 如果在比您的目標級別更高的級別中引入了權限,則兼容性代碼將為應用啟用該權限。
例如,請參閱https://developer.android.com/reference/android/os/Build.VERSION_CODES.html#DONUT
1 - 檢查文檔。 我不知道這是否有例外。 如果有,它們會破壞兼容性……對於依賴於新權限所涵蓋的功能的應用程序。
targetSdkVersion —指定應用程序設計運行的 API 級別。 在某些情況下,這允許應用程序使用在目標 API 級別中定義的清單元素或行為,而不是僅限於使用為最低 API 級別定義的那些元素或行為。
如果您不設置targetSdkVersion
,則默認值等於給定的minSdkVersion
。
要在每個 Android 版本中維護您的應用程序,您應該增加此屬性的值以匹配最新的 API 級別,然后在相應平台版本上徹底測試您的應用程序。
見官方文檔
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.