android:minSdkVersion 之我見

weixin_34119545發表於2013-07-14

 在 新建一個 android project 時,要求輸入 minSdkVersion 這一項,一般我們是指定和我們使用的 SDK 版本相一致的 API Level. 然後,在androidManifest.xml 檔案中會有一個對應的屬性:android:minSdkVersion .那這個屬性是否可以修改呢?我覺得是可以的,但不能隨便修改。

    "android:minSdkVersion" ,故名思義,就是最小的 SDK 版本,這個值是對應 Android 不同版本的 API Level , 如 Android 1.5 對應 3,Android 1.6 對應 4,Android 2.1 對應7,Android2.2對應8 ,Android 2.3.3 對應10,等等。。。當使用者指定這個值後,Android 系統會用這個指定的值對應的 SDK 版本去編譯你的應用程式。

    那麼,我們在 androidManifest.xml 中指定的話,必須是比我們新建時的 API Level 小或相等的值,這樣 Android 系統在編譯的時候,才會用對應的版本的 SDK 進行編譯。假如修改後的 android:minSdkVersion 比我們 project 裡的 SDK 版本對應的 API level 大,那麼Android 系統在編譯的時候,就會報錯。

 

 

舉例說明:

    1. 我們新建一個 Android Project (HelloAndroid), 指定為 Android 2.2 版本,對應的 minSdkVersion 填8,finish;

    2. 此時我們執行 HelloAndroid ,會執行一個 2.2 版本的模擬器。

    3. 假若我們現在去 AndroidManifest.xml 檔案 中修改 android:minSdkVersion=7,再次執行,那麼會在我們已經開啟的 2.2 模擬器上執行。因為 Android API 都是向後相容的,所以系統在編譯時,這個 Project 是利用 2.1 版本來編譯的,但也可以在 2.2 模擬器上執行;若我們先把 2.2 模擬器關閉,再執行 HelloAndroid 這個Project 的話,那麼會新建一個 API Level=7 的 模擬器來執行這個程式(也就是 2.1模擬器)。

    4. 假若我們修改  android:minSdkVersion=10, 那麼無論你是否開啟了 2.2 版本的模擬器,都會報錯:

        ERROR: Application requires API version 10. Device API version is 8 (Android 2.2).
        Launch canceled!

 

相關文章