android 中targetSdkVersion和與target屬性的區(qū)別
AndroidMenifest.xml中targetSdkVersion和project.properties中的target屬性的區(qū)別
在AndroidMenifest.xml中,常常會有下面的語句:
<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="10" android:maxSdkVersion="15" />
在project.properties中,會看到下面的語句: target=android-10 如果是使用Eclipse的話,還可能會看到這樣的警告:
Attribute minSdkVersion (4) is lower than the project target API level (10)
那么,這里面的minSdkVersion、maxSdkVersion、targetSdkVersion、target四個屬性到底有什么區(qū)別?
minSdkVersion與maxSdkVersion比較容易理解,就是在安裝程序的時候,如果目標(biāo)設(shè)備的API版本小于minSdkVersion, 或者大于maxSdkVersion,程序?qū)o法安裝。一般來說沒有必要設(shè)置maxSdkVersion。
targetSdkVersion相對復(fù)雜一些,如果設(shè)置了此屬性,那么在程序執(zhí)行時,如果目標(biāo)設(shè)備的API版本正好等于此數(shù)值, 他會告訴Android平臺:此程序在此版本已經(jīng)經(jīng)過充分測,沒有問題。不必為此程序開啟兼容性檢查判斷的工作了。 也就是說,如果targetSdkVersion與目標(biāo)設(shè)備的API版本相同時,運行效率可能會高一些。 但是,這個設(shè)置僅僅是一個聲明、一個通知,不會有太實質(zhì)的作用, 比如說,使用了targetSdkVersion這個SDK版本中的一個特性,但是這個特性在低版本中是不支持的 ,那么在低版本的API設(shè)備上運行程序時,可能會報錯:java.lang.VerifyError。也就是說,此屬性不會幫你解決兼容性的測試問題。 你至少需要在minSdkVersion這個版本上將程序完整的跑一遍來確定兼容性是沒有問題的。(這個問題確實讓人頭疼)
project.properties中的target是指在編譯的時候使用哪個版本的API進(jìn)行編譯。
綜上,上面的四個值其實是作用于不同的時期:
target API level是在編譯的時候起作用,用于指定使用哪個API版本(SDK版本)進(jìn)行編譯。 minSdkVersion和maxSdkVersion是在程序安裝的時候起作用, 用于指定哪些版本的設(shè)備可以安裝此應(yīng)用。 targetSdkVersion是在程序運行的時候起作用,用于提高指定版本的設(shè)備上程序運行體驗。
這四個數(shù)值在程序編譯時也沒有嚴(yán)格的檢查,比如說,你可以將minSdkVersion設(shè)置的比maxSdkVersion還大,他會自動忽略掉錯誤的maxSdkVersion。
轉(zhuǎn)載自:http://usenrong.iteye.com/blog/1488503
作者:beanmoon
出處:http://www.rzrgm.cn/beanmoon/
本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接。
該文章也同時發(fā)布在我的獨立博客中-豆月博客。

浙公網(wǎng)安備 33010602011771號