在AndroidMenifest.xml中,常常會(huì)有下面的語句: 在default.properties中,會(huì)看到下面的語句: target=android-10 如果是使用Eclipse的話,還可能會(huì)看到這樣的警告:Attribute minSdkVersion (4) is lower than the project target API level (10) 那么,這里面的minSdkVersion、targetSdkVersion、maxSdkVersion、target API level四個(gè)數(shù)值到底有什么區(qū)別?minSdkVersion與maxSdkVersion比較容易理解,就是在安裝程序的時(shí)候,如果目標(biāo)設(shè)備的API版本小于minSdkVersion,或者大于maxSdkVersion,程序?qū)o法安裝。一般來說沒有必要設(shè)置maxSdkVersion。 targetSdkVersion相對(duì)復(fù)雜一些,如果設(shè)置了此屬性,那么在程序執(zhí)行時(shí),如果目標(biāo)設(shè)備的API版本正好等于此數(shù)值,他會(huì)告訴Android平臺(tái):此程序在此版本已經(jīng)經(jīng)過充分測(cè),沒有問題。不必為此程序開啟兼容性檢查判斷的工作了。也就是說,如果targetSdkVersion與目標(biāo)設(shè)備的API版本相同時(shí),運(yùn)行效率可能會(huì)高一些。但是,這個(gè)設(shè)置僅僅是一個(gè)聲明、一個(gè)通知,不會(huì)有太實(shí)質(zhì)的作用,比如說,使用了targetSdkVersion這個(gè)SDK版本中的一個(gè)特性,但是這個(gè)特性在低版本中是不支持的,那么在低版本的API設(shè)備上運(yùn)行程序時(shí),可能會(huì)報(bào)錯(cuò):java.lang.VerifyError。也就是說,此屬性不會(huì)幫你解決兼容性的測(cè)試問題。你至少需要在minSdkVersion這個(gè)版本上將程序完整的跑一遍來確定兼容性是沒有問題的。 在default.properties中的target是指在編譯的時(shí)候使用哪個(gè)版本的API進(jìn)行編譯。 綜上,上面的四個(gè)值其實(shí)是作用于不同的時(shí)期:target API level是在編譯的時(shí)候起作用,用于指定使用哪個(gè)API版本(SDK版本)進(jìn)行編譯。minSdkVersion和maxSdkVersion是在程序安裝的時(shí)候起作用,用于指定哪些版本的設(shè)備可以安裝此應(yīng)用。targetSdkVersion是在程序運(yùn)行的時(shí)候起作用,用于提高指定版本的設(shè)備上程序運(yùn)行體驗(yàn)。這四個(gè)數(shù)值在程序編譯時(shí)也沒有嚴(yán)格的檢查,比如說,你可以將minSdkVersion設(shè)置的比maxSdkVersion還大,他會(huì)自動(dòng)忽略掉錯(cuò)誤的maxSdkVersion。 |