Android清單文件中 minSdkVersion、targetSdkVersion、targetApiLevel的區別

在AndroidMenifest.xml中,常常會有下面的語句:
 <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="10" android:maxSdkVersion="10" /> 在default.properties中,會看到下面的語句:
 target=android-10 如果是使用Eclipse的話,還可能會看到這樣的警告: Attribute minSdkVersion (4) is lower than the project target API level (10) 
那麼,這裏面的minSdkVersion、targetSdkVersion、maxSdkVersion、target API level四個數值到底有什麼區別?  

minSdkVersion與maxSdkVersion比較容易理解,就是在安裝程序的時候,如果目標設備的API版本小於minSdkVersion,或者大於maxSdkVersion,程序將無法安裝。一般來說沒有必要設置maxSdkVersion。
  

targetSdkVersion相對複雜一些,如果設置了此屬性,那麼在程序執行時,如果目標設備的API版本正好等於此數值,他會告訴Android平臺:此程序在此版本已經經過充分測,沒有問題。不必爲此程序開啓兼容性檢查判斷的工作了。也就是說,如果targetSdkVersion與目標設備的API版本相同時,運行效率可能會高一些。 但是,這個設置僅僅是一個聲明、一個通知,不會有太實質的作用,比如說,使用了targetSdkVersion這個SDK版本中的一個特性,但是這個特性在低版本中是不支持的,那麼在低版本的API設備上運行程序時,可能會報錯:java.lang.VerifyError。也就是說,此屬性不會幫你解決兼容性的測試問題。你至少需要在minSdkVersion這個版本上將程序完整的跑一遍來確定兼容性是沒有問題的。(這個問題確實讓人頭疼) 

在default.properties中的target是指在編譯的時候使用哪個版本的API進行編譯。
 綜上,上面的四個值其實是作用於不同的時期: target API level是在編譯的時候起作用,用於指定使用哪個API版本(SDK版本)進行編譯。 minSdkVersion和maxSdkVersion是在程序安裝的時候起作用,用於指定哪些版本的設備可以安裝此應用。 targetSdkVersion是在程序運行的時候起作用,用於提高指定版本的設備上程序運行體驗。 這四個數值在程序編譯時也沒有嚴格的檢查,比如說,你可以將minSdkVersion設置的比maxSdkVersion還大,他會自動忽略掉錯誤的maxSdkVersion。

原文鏈接:http://blog.sina.com.cn/s/blog_4e345ce70100v8ut.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章