天天看點

minSdkVersion、targetSdkVersion、target

在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。

繼續閱讀