Monday, October 19, 2009

支援不同解析度的 Android Market

本來市面上 Android 相關機種一律都是 480*320 解析度,
Android 1.6 發佈後,也正式發售支援了其他使用不同解析度的機種,例如 QVGA(320*240) 或 WVGA(800*480)。

當然在不同的解析度下,畫面顯示上多少有些不同。
為了避免使用者裝到不適合解析度的程式而引發使用上的混亂,Android 1.6 在 AndroidManifest 清單中引入了「supports-screens」宣告。

一般來說要支援各種解析度,可以在編譯前先將編譯 Target 選為 1.6(專案名>右鍵>Properties>Android>Android 1.6),並在 AndroidManifest 清單中加入如下設定:


[supports-screens
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:anyDensity="false"/]


「normalScreens」代表的是一般解析度(如 G1, Hero),「smallScreens」代表的是較低解析度(如 Tatoo)。

現在將程式發佈到 Android Market 時若沒做以上設定,你寫的程式將不會顯示在 QVGA/WVGA 機器的 Market 中。

那麼其他使用奇怪解析度的設備哩?(例如最近發表的某台 WQVGA 機器...)反正上面也沒有 Android Market, 就留給打算支援這些設備的開發者多傷一份腦筋啦.


PS: 將 Target 設為 1.6 跟在 AndroidManifest 清單中設定 minSdkVersion 最低相容版本並不衝突,只要 minSdkVersion 維持不變,低於 1.6 版的機器還是可以使用你的程式。


update: 事實上「smallScreens」代表的是小螢幕,「normalScreens」是一般螢幕,「largeScreens」當然是大螢幕。一般三者的分界點大概在3吋跟4吋。所以 Tattoo (2.8") 被歸在「smallScreens」範疇。

2 意見:

mypace said...

不好意思 請問一下喔,
使用者於手機安裝APK時,
手機是認target還是認minSdkVersion的值來判斷能不能安裝此APK.

----------

假如今天我的軟體為了要支援不同解析度的手機,那我的target從1.5改成1.6,而minSdkVersion=3(1.5版本)不去動它,這樣手機能否順利在1.5版本安裝並執行.

gasolin said...

能不能裝看的是 minSdkVersion