Android 6.0 記憶卡擴充小註解

雖然 Android 6.0 有了把外部 SD Card 變成內部記憶體的能力, 但是各家廠商都捨不得這個賺錢的法門, 老大哥 iphone 的手機就是用內部記憶體大小定價的啊, 不然 128GB 以後要賣誰? Android 廠商都快活不下去了, 當然比照辦理, 硬是把這個功能給隱藏了. 原本想說 Android 親生的 Nexus 系列總該以身作則吧!? 想不到 Nexus 竟然連插卡功能都不給, 這樣就不能說他們違反 CTS 了.

以 Samsung S7 系列為例, 雖然上個月才出來, 網路上已經有一大堆 adaptive storage (SD card) 的教學, 中文英文都有 [1,2]. 不過按圖施工也不一定會成功, 這邊就讓我來做 debug 的小註解吧!

  1. 首先要備份 SD card, 因為裝好之內內容會被清掉. 卡要選速度快的, 容量愈大愈好. (see 11)
  2. 安裝 adb, Windows / Mac 都可以裝. Windows 裝 adb 的方法很多, Mac 參考這一篇 [3] 的 option 1.
  3. 手機要連到電腦 – 不過我的 Windows 10 從來沒有成功過, 兩台Macbook 都可以. 至於 Windows 8.1 應該沒問題, 因為大部分的人都是用這個環境. 其中要把開發人員選項叫出來, 才能打開 USB debug 功能 [2].
  4. adb devices 要能看到 device. 如果看不到, 可能之一是手機進入休眠, 所以沒點到螢幕上是否同意連接 adb 的選單. 允許之後就  OK.
  5. 如果 adb devices 還是失敗, 請參考 [4].
  6. 進入 adb shell 之後, 大概就可以順利執行 sm list-disks, 長相是這樣: 文字或數字 179.xxx  這個文字或是數字就是 SD Card 的代號. 如果 xxx 不是 0, 後面就簡單了.
  7. 用 sm partition disk:179,xxx private 把整個 SD Card 指定成內部記憶體, 用  sm partition disk:179,xxx  mixed 50, 其中 50 代表切給內部的 ratio.
  8. 可以用 sm list-volumes all 看到所有的內容. 完整指令如下:sm-command-1-620x200
  9. 如果很不幸地, 看到 SD Card 是 179.0, 那麼可能會伴隨各種 Java error…etc. 網路上災情不少. 例如: Error: java.lang.IllegalStateException: java.util.concurrent.TimeoutException: Thread Binder_B gave up waiting for partitionPrivate after 180000ms, 或者
    Error: java.lang.IllegalArgumentException: command ’45 volume partition disk:179:0 private’ failed with ‘500 45 Unknown disk’
  10. 這要麼辦呢? 我想應該是 Java 版本的關係. 當我在第一台比較少用的 Macbook 看到上述第二種錯誤後, 試了各種網路上建議的: 重新 format SD 卡, 改變 USB 連接方式….等等. 但是拿到另外一台 Macbook 卻是簡單地過關.
  11. 這樣做有沒有風險呢? 我認為有, 包括我自己的平台, 以及網路上其他人貼的圖. 系統把實際記憶體高估了, 也就是內部+外部記憶體, 對我來說是 32 + 64 = 96 (GB), 但系統顯示有 128GB, 其中 64GB 已使用 [1-2].
  12. 做了個實驗, 如果是內建 32GB + 外插 128GB, 合併之後, 系統認為總共是 256GB. 所以手機會固定把外部記憶體 x 2 當作總記憶體數. 已使用的部分再細項的部分都是正確的, 但是合併之後的"已使用", 包含虛胖的 128GB (假內部) – 32GB (真內部) = 96GB, 然後再加上真正已使用的部分.
  13. 不過根據 [2], 這個動作可以還原, 所以至少不影響保固.

[REF]

  1. Here’s how to configure adoptable storage on your S7 / S7 Edge
  2. 三星不給你的自己來!Galaxy S7 / Edge 合併記憶卡空間【免 Root】
  3. Installing ADB on MAC OS X
  4. ADB server didn’t ACK

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s

%d 位部落客按了讚: