Pages

2015年10月29日

[ Android ] Android 6.0 Marshmallow on Z3

Title

Sony 日前於歐洲挑選了一小批測試者發送 Android 6.0 Marshmallow for Z3 Concept。名為 Concept(概念),其實就是 beta 版,還內建一隻名為 Beta feedback 的 app,讓使用者可以回傳任何意見或是遭遇的問題。很快的就有使用者使用 Flashtool 將這份韌體存成 FTF 並且在網路流通了。當然第一時間立刻刷機嚐鮮。不過畢竟是 beta 版,有些功能是缺失的,例如 STAMINA mode(有了 Doze 不知道還需不需要 STAMINA)、X-Reality 等等。但是搭配 NDR-MC31EM 的降噪功能還存在。前幾天 Concept 還有 OTA 更新,加入了「雙擊螢幕喚醒裝置」功能。


Marshmallow 有幾個新的改進,包含 Doze 模式(打瞌睡模式)可以延長續航力,終於可以讓使用者掌控的權限控制(不過不太直覺,只能說先求有、再求好)。這邊來談談三個非常討我歡心的新設計。

第一個就是 Demo mode(展示模式)。

以往為了 blog 文章截圖,希望保持提示列的一致性,總是得不停的刷掉某些提示。但是有了 Demo mode,提示列只會剩下即時訊號強度、蓄滿的電池狀態與保持在 06:00 的時鐘三個 icon。不會再有奇怪的提示 icon 出現在圖片上,只需要專注於擷取需要的畫面即可,非常貼心。比較特殊的是訊號強度是即時狀態,因此如果有開 Wi-Fi 就會看到 Wi-Fi 的 icon,如果處於飛航模式就會看到飛機 icon。當然,如果身處於無訊號地段,就會看到一個 0 訊號的 icon。

第二個就是 SD 卡與內建儲存區(Internal storage)結合的新設計。

雖然 Android 可以使用 SD 卡擴充容量,但是使用者還是常常遭遇內建儲存空間不足的問題。這是因為原本 Android 的設計並不會主動使用 SD 卡的空間。所以 app 都是安裝在內建儲存空間,app 們產生的檔案也幾乎都放在內建儲存空間中,除非使用者去調整設定。只有少部份 app 會下載大量檔案,此時設計者才會考慮把這些下載的內容存放到 SD 卡。雖然 Android 從 Ice Cream Sandwich 開始加入了「可將 app 搬移到 SD 卡」的功能,但這個功能卻很雞肋。

首先,app 不會自動搬移到 SD 卡。使用者需要自己進入 app 管理中,手動選擇 app 讓系統進行搬移。其次,搬移到 SD 卡的 app 就無法建立桌面小工具。最後,即使你選擇了某 app 搬移到 SD 卡,只要該 app 一更新,又會通通回到內建儲存區,使用者需要自行手動再搬移一次!

多麼愚蠢的設計。這使得 SD 卡頂多只能用來儲存相片、影片或音樂,可是對於解決內建儲存空間不足的問題幾乎毫無建樹。雖然有些 app 嘗試提供較有效率的解決方案,可是在沒有 root 的裝置上,幾乎沒有一個有效使用 SD 卡空間的方法。

直到 Marshmallow 的出現,Android 的開發團隊終於替這個問題帶來了一個令人激賞的解決方案。

在 Marshmallow 上插入 SD 卡時,可以選擇將 SD 卡與內建儲存空間合併成為一個裝置儲存空間使用。要完成這個動作,必須要重新格式化 SD 卡,所以務必先備份內容。合併完成後,進入【儲存空間與 USB】設定就會看到如下的畫面:

00001

首先可以看到系統描述「儲存空間共計 40.75GB」。Z3 內建 16GB FlashROM,安裝完 Marshmallow Concept 後還有 11.57GB 的空間作為內部儲存空間。而插入的 SD 卡是 32GB 的,可用空間為 29.18GB(這牽涉到硬體與軟體對於可用空間的計算,所以標示容量與實際容量有差異是正常的。有興趣者請自行 Google),所以總計 40.75GB。

看到這邊或許你會迷惑,「還是分成兩個區域啊?」可是細節上已經不同了。

在 6.0 以前的版本,使用者把裝置接上電腦時,會看到有兩個儲存裝置,一個是 Internal Storage(也就是內建儲存裝置),一個是 SD card。在 6.0 中如果使用者設定為將兩者合併使用之後,把裝置接上電腦後,只會看到一個 SD card,看不到 Internal Storage 了。這其中的奧秘讓我先展示幾張圖片。

00002  00003

在【儲存空間與 USB】畫面點一下「內建儲存空間」就會看到左邊的圖。如果點「SD card」就會看到右邊的圖。我們可以發現在 6.0 這種新機制的設計下,內建儲存空間只放兩種內容:app 本身以及快取資料。其他的一切通通都放在 SD 卡上了。

我的裝置在 5.1.1 的時候,安裝了這麼多 app 以及這些 app 所產生在內建儲存空間的檔案就使用了 8GB 左右的空間,這使得系統不停的跳出內建空間不足的警告訊息,逼的我必須安裝其他 app 來阻擋這煩人的訊息。但是在 6.0,我安裝了一樣多的 app,可以看到內建儲存空間只有使用了 5.27GB,其他的內容都放在 SD 卡上了。這使得 SD 卡的使用率大幅提昇。對於像 Z3 這種只有內建 16GB 的裝置而言,內建儲存空間不足的情況得以大幅改善。

更重要的是,使用者不必手動將 app 搬移到 SD 卡上,可以解決「每次更新就需要重新搬移」以及「搬移到 SD 卡上就無法使用桌面小工具」的問題。

當然,選擇這種模式就不能隨意退出 SD 卡。如果要退出 SD 卡必須遵照一定的步驟。

這個選擇是可逆的,你可以重新把 SD 卡的使用方式恢復成原本的可攜式儲存空間。

00004

比較深入一點點的技術描述(個人觀察):在 Ice Cream Sandwich 之後,內建儲存空間是掛載在 /storage/emulated/0 或是 /storage/sdcard0 這些目錄下,而 SD 卡則是掛載在 /storage/emulated/1 或是 /storage/sdcard1 這些目錄下。在 Marshmallow 中,如果選擇合併運作的模式,內建儲存區會掛載到 /data 目錄。這個目錄原本就是用來存放 app 本身(apk 檔案)用的,是一個系統目錄。沒有 root 的裝置是無法進入該目錄瀏覽內容的。這也就是為什麼在這種模式下,裝置接上電腦後只會看到 SD card 而已。

第三個就是 App 資料自動備份(Automation backup for apps)機制。

不同於 Apple 的態度,Google 對於 Android 的設計上希望使用者可以不必依賴其他裝置就能夠備份資料(iOS 仰賴 iTunes 備份)。所以 Google 的許多設計都是以雲端為主,將裝置的內容同步到雲端。如此一來更換新裝置或是重置裝置,使用者都可以迅速的讓裝置恢復原樣。例如 Android 已經擁有的將已安裝的 app 清單跟已儲存的 Wi-Fi 設定跟著你的 Google 帳號儲存在雲端,每次重新安裝後就會自動取回所以已經安裝的 app;或者是 Google Photos 會自動備份你的照片與影片等等,而你隨時可以用 Google Play Music 將音樂儲存在雲端等等。

可是這個設計有個缺陷,app 的設定不會跟著回來。Android 許多使用者都有高度客製化的習慣,如果裝置故障了,雖然更換新裝置後會自動把原本已經安裝的 app 重新下載、安裝,可是設定檔卻不會跟著回來。除非使用者一直定期匯出並且把重要檔案手動上傳到雲端空間。即使這樣,使用者還是必須手動匯入或是安排檔案的位置,這麼一來跟 iTunes 的備份機制比起來就遜色多了(大概只有贏過不需要多一台電腦這一點而已)。

在 6.0 Marshmallow 中,Google 也想辦法彌補這個缺陷。新的 App 資料自動備份機制會將 app 的檔案備份到個人 Google 帳號的 Google Drive 中。不佔空間,同時使用者「看不到」。

00005

上圖中的「應用程式資料」就是 app 資料備份機制。使用者可以自行選擇要不要自動備份。

00006

使用者可以到 Google Drive app 進行更進一步的設定。在 Google Drive app 的「設定」中可以看到「自動備份應用程式」。當然,你得用 6.0 Marshmallow 才會看到這個。

00007  00008

從「管理備份」可以看到哪些 app 的資料被備份了,以及何時備份的。其實我覺得「管理備份」這個名字取的並不好。因為使用者在這邊只能單純的瀏覽資訊,不能夠取消或針對個別 app 設定,也許將來會有這功能所以現在先取名叫「管理備份」。

在「備份與重設」可以選擇要不要開啟備份功能,以及要不要自動恢復備份內容。

這個功能還有一些限制。其中 app 必須更新使用 API 23 才能具備自動備份功能。其次,開發者可以自行決定哪些檔案是否需要被備份,這部份並不是使用者控制的。所以如果開發者設定錯誤或是決定都不備份,使用者心中「app 重裝後設定都會自動回來」的期待恐怕會落空。

最後,我還沒有機會嘗試這個備份功能的實用性。因為我還不想重裝。所以我不知道這個新機制能不能解決「換裝置或是重刷韌體就會失去遊戲進度」的問題。

沒有留言: