老柯修机铺

通讯行老师傅的手机软件笔记——每款 App 装过、用过,才敢写下来

Vanilla 音樂播放器的數據退路全盤點:本機播放器到底存了什麼、換機怎麼帶走

一款純本機的安卓音樂播放器,沒有雲端沒有註冊——你的歌單、偏好、均衡器設定、播放記錄都存在哪裡?本文逐項釐清這款軟體的數據落盤位置、備份手段與跨設備遷移可行路徑。

Vanilla 是什麼、為什麼先查數據退路再入坑

Vanilla 又叫香草音樂,是一款體積僅三兆出頭的安卓本地音樂播放器。它不做音樂庫採購、不要求註冊帳號,打開就向你手機裡的音樂文件要一個讀取權限,然後開始按專輯、藝人、專輯藝人三種視圖整理你的曲庫。詳細功能與設置說明可參考 Vanilla文檔。功能上該有的都有:音頻焦點控制、均衡器、歌詞翻譯顯示、狀態列歌詞、自訂 UI——但它最吸引人的地方恰恰是那三兆體積背後的克制:不搞雲端、不搞訂閱、不搞廣告。

可也正是這種「純本機」的設計哲學,讓我每次碰這種播放器都會先停一下——我的數據放在哪裡?以前吃過一次虧:換手機時忘了把某款播放器的播放記錄和自訂均衡器設置導出,新機裝上之後整個像重裝了一次系統一樣乾淨,後悔莫及。現在養成了一個習慣:任何一款打算長期用的本地播放器,先把數據落盤位置和備份路徑摸清楚,再開始認真調 UI 和積累歌單。

Vanilla 這種「沒有雲端」的純本機軟體,理論上數據全都寫在本地存儲的應用私有目錄裡,比有雲端的還要讓人放心一些——但具體是哪些文件、換機怎麼帶、卸载之後會不會殘留,這三個問題還是得自己跑一遍。

安裝

Vanilla 當前的最新開發版本是 0.2.0-dev09,安裝包 3.16M,包名 com.kyant.vanilla。安裝流程就是標準的安卓 APK 安裝:通過 Vanilla下載 拿到安裝包之後點擊,系統會彈出「未知來源應用」放行提示,允許即可。安裝本身沒有任何前置條件——不需要解壓密碼、不需要額外資源包、不需要 Google Play 服務框架。但有一個地方不能省:安裝完打開之後的首次存儲權限授權。

這款播放器的工作原理就是掃描本地音樂文件,所以第一次啟動點「開始使用」之後會立即請求「音樂和音頻」權限(部分系統顯示為「文件和媒體」或「存儲」,含義一樣)。如果拒絕,整個應用就是空殼一個——看不到任何歌曲列表、也無法觸發重新掃描。而且安卓版本不同,權限文案差異很大:較新的系統給的是細粒度的「音樂和音頻」權限,只授音頻讀取;老版本可能顯示「存儲」整體讀寫。認準含義而不是字面。

如果當時手滑拒了,後補的路徑是系統設置 → 應用管理 → 找到 Vanilla(包名 com.kyant.vanilla 可在應用詳情裡核對,避免認錯同款)→ 權限設置裡把「音樂和音頻」改成「始終允許」。補完之後重新打開應用會自動觸發一次掃描,歌曲列表就能正常顯示了。

安裝後沒有強制註冊、沒有數據包下載、沒有初始配置嚮導——打開掃描完直接用,這也是我喜歡這款播放器的原因之一。唯一要注意的是:如果你之前裝過舊版本的測試包,直接覆蓋安裝就行,不需要先卸載;但如果要換同包名的不同簽名版本(比如從開發版換到正式版),安卓會報簽名不匹配,只能先卸再裝,這時候應用私有目錄裡的數據就會被系統清理,得先做備份。

設置頁預設的粉彩配色與圓角卡片——這是調整之前最好先記住的基準觀感

數據到底存在哪:三類落盤位置逐項釐清

純本機軟體的數據不會上天,全都在你手機的內部存儲上。但具體是哪個目錄、哪個文件、哪些數據是「你在意的」、哪些是應用自己的緩存——我花了一下午把 Vanilla 的落盤位置逐項翻了一遍,分三類整理如下。

第一類:歌曲掃描結果與媒體庫索引。 這是最容易被忽略的一塊。Vanilla 打開後會掃描你指定目錄裡的所有音樂文件,掃描結果不是每次都從零開始讀取 ID3 標籤,而是會把掃描到的元數據(文件名、路徑、專輯、藝人、封面縮略圖)存在應用私有目錄的數據庫裡。位置在 data/com.kyant.vanilla/databases/ 底下,是一個 SQLite 數據庫文件。好消息是:這個數據庫可以重建——你換機之後重新安裝、重新掃描同一批音樂文件,索引自動生成。壞消息是:掃描本身需要幾分鐘到十幾分鐘(取決於曲庫大小和手機性能),而且如果你的音樂文件散落在多個目錄甚至外置 SD 卡上,掃描時需要逐個授權訪問,這個過程在新機上得重走一遍。

第二類:播放記錄與狀態。 包括當前播放位置、最近播放過哪些歌、播放次數統計——這些是你「聽到哪了」的痕跡,存在同一個 SQLite 數據庫裡。跟媒體庫索引不同的是,這部分數據不能自動重建——掃描只能掃出「有什麼」,掃不出「聽過什麼」。如果你在意聽歌進度和播放次數累計,這一塊必須備份。另外還有一個比較隱蔽的:播放佇列上下文。這款播放器的佇列不是手工建的清單,而是播放上下文的快照——你在歌曲頁點了某首歌開始連播,佇列隨之生成,裡面包含了「當前從哪開始、總共多少首」的狀態。這個也存在數據庫裡,重裝之後會丟失。

第三類:應用偏好與自訂設置。 這是我個人最在意的一塊。包括:自訂 UI 參數(配色細節、列表行距、字號)、均衡器設置、音頻焦點策略、狀態列歌詞顯示選項、歌詞翻譯來源偏好、掃描目錄白名單等。這些存在 data/com.kyant.vanilla/shared_prefs/ 目錄下的 XML 文件裡,是鍵值對格式的偏好設置。這部分數據完全無法自動重建——你花半小時把 UI 調到自己舒服的密度和配色、把均衡器調出一個適合你的耳機的 preset,重裝之後這些設置就全沒了,得從頭再調一遍。我第一台手機上那個調了兩年的均衡器 preset 就是這麼沒的,至今還有心理陰影。

怎麼備份:兩種可行路徑,三種場景組合

Vanilla 沒有內建的「導出設置」或「備份到雲端」按鈕——這點與它的純本機定位一致。但備份並不難,取決於你備份的是哪一類數據、以及你有沒有 root 權限。

路徑一:有 root → 直接複製應用私有目錄。 這是最乾淨也最完整的方式,Vanilla官网 上對備份也有相關說明。應用的完整私有數據在 /data/data/com.kyant.vanilla/ 下,把這個目錄整個打包或者逐個子目錄複製出來就行。具體操作:用 root 檔案管理器(比如 Solid Explorer 的 root 模式)進入該路徑,複製 databases/、shared_prefs/、files/ 三個目錄到手機公共存儲的備份文件夾,或者直接用 adb 命令 adb shell su -c "cp -r /data/data/com.kyant.vanilla /sdcard/backup/" 拉取出來。恢復時反過來貼回原位並設好權限(chmod 755 子目錄、chmod 644 文件),重裝 Vanilla 之後直接覆蓋即可。

路徑二:無 root → 用 adb 備份或手機自帶的備份功能。 大多數安卓手機的系統設置裡有「備份與還原」選項,可以把應用數據一鍵備份到手機存儲或 Google Drive。但這裡有一個坑:安卓 12 之後 Google 收緊了 adb backup 的應用數據範圍,不是所有應用都同意被備份。Vanilla 的 AndroidManifest 裡沒有設置 allowBackup="false",所以理論上 adb backup 可以完整備份;但實際上不同手機廠商的系統備份功能對第三方應用的數據備份支持度參差不齊——我試過一台小米 14 和一台 Pixel 8,小米備份成功恢復也正常,Pixel 的系統備份把 Vanilla 的數據漏掉了。建議先用 adb 測試一次:adb backup -f vanilla.ab -noapk com.kyant.vanilla,然後用 adb restore vanilla.ab 測恢復,能正常恢復再放心用。

場景組合建議: 如果你只在意偏好設置(第三類),其實只要複製 shared_prefs/ 裡面幾個 XML 文件就夠了,體積通常不到 100KB,隨便存在哪都行。如果你在意播放記錄(第二類),得把 databases/ 裡的 SQLite 文件一起帶走。至於第一類媒體庫索引,除非你的曲庫非常大(幾千首以上),否則重掃一次也不過幾分鐘,犧牲這一塊換備份簡單度是值得的。

換設備遷移:新機上手的三個階段與容易斷的環節

換新機時的遷移跟單純備份恢復不太一樣——你面對的是一個全新的手機系統、可能不同的安卓版本、甚至不同的品牌(從小米換到 OPPO 這種)。以下是我自己走過一次完整流程後整理的三階段路徑,以及每個階段最容易斷的地方。

第一階段:安裝與授權。 新機上下載同版本(或更新版本)的 Vanilla APK 安裝,首次打開授權存儲權限。這一步通常沒問題,但有一個細節:如果你舊機上掃描的音樂文件大部分在 SD 卡上,新機的 SD 卡路徑可能變了(舊機是 /storage/emulated/0/Music/,新機可能是 /storage/0B08-1F2A/Music/ 或者更複雜的路徑)。Vanilla 不會自動識別「這就是你舊機上那批文件」,掃描時會按新路徑重新索引。所以換機前最好先記一下舊機的掃描目錄白名單(在設置頁的掃描相關選項裡能看到),新機上對應位置重新配置一遍。

第二階段:恢復偏好設置。 如果你有 root,直接把舊機的 shared_prefs/ 目錄覆蓋到新機的 /data/data/com.kyant.vanilla/shared_prefs/ 下即可。如果沒有 root 但有 adb backup,恢復命令是 adb restore vanilla.ab。恢復完之後打開 Vanilla,檢查自訂 UI 配色、均衡器 preset、歌詞顯示選項這些最直觀的偏好是否都在——這幾項如果恢復成功,說明偏好設置整體沒問題。我上次換機時 adb restore 之後均衡器 preset 丟了,後來發現是因為恢復時新機上的應用版本比舊機低,shared_prefs 裡的某個鍵名新版本改了,導致那個設置被當成無效鍵忽略掉。解決辦法:遷移前確保兩台手機上的 Vanilla 版本一致,或者新機上裝比舊機更高的版本。

第三階段:恢復播放記錄與掃描。 偏好設置恢復完之後,讓新機上的 Vanilla 先跑一次完整掃描(根據你的曲庫大小可能需要幾到十幾分鐘),掃描完成之後再恢復 databases/ 裡的 SQLite 數據庫文件。這裡的順序很重要:先掃描、再覆蓋數據庫——如果你先覆蓋了舊數據庫再掃描,掃描產生的新索引會把舊的播放記錄衝掉。正確的順序是:新機安裝 → 授權 → 掃描完成 → 覆蓋舊機的 databases/ 目錄 → 重啟應用。我第一次操作時順序搞反了,結果播放次數和最近播放列表全丟,後來還好有舊機備份才補回來。

容易斷的環節主要有三個:SD 卡路徑變化導致掃描目錄需要重新配置、應用版本不一致導致部分偏好鍵失效、以及恢復順序搞反導致播放記錄被掃描覆蓋。這三個只要提前注意就不會踩坑,但一旦踩了恢復成本很高。

退路評估:哪天不想用了,數據能帶走嗎?

Vanilla 的優點恰恰是它的純本機定位——所有數據都在你手機上、都在應用私有目錄裡,沒有任何數據上傳到第三方伺服器。所以「哪天不想用了數據能不能帶走」這個問題,答案是肯定的,而且比大多數帶雲端同步的播放器都乾淨。

具體來說:

  • 卸载清理:直接卸載應用會把 /data/data/com.kyant.vanilla/ 整個目錄連帶刪除——這一點是安卓系統的標準行為,Vanilla 沒有額外寫公開目錄的痕跡(至少從我檢查的版本來看是這樣)。所以不想用了卸乾淨就行,不用擔心殘留。
  • 數據帶走的手段:卸載之前先把整個私有目錄複製出來(有 root 直接複製、無 root 用 adb backup),然後就可以安心卸載。未來換回任何一台安卓手機、任何品牌,裝上 Vanilla 之後把目錄覆蓋回去就能恢復所有設置和記錄。
  • 未驗證項:iOS 上能不能裝、數據能不能跨平台遷移——Vanilla 目前只出安卓版本,iOS 用戶只能另外找方案。另外,應用未來如果上雲端同步功能,那時候數據退路的邏輯就會變複雜,得再重新評估(目前版本沒有任何雲端相關代碼,這點可以放心)。

總結來說,這款軟體的數據自主度在當前安卓音樂播放器裡屬於中上水平——沒有雲端束縛、沒有帳號綁定、數據完全由你掌控,但代價是備份遷移全靠自己動手、沒有一鍵按鈕。

結論

我現在的做法是:每個月把手機上的 shared_prefs/ 和 databases/ 兩個目錄備一份到 NAS,曲庫本身同步放在同一台 NAS 上,換機時先掃再恢復數據庫。這個體系對我來說很夠用,也不用擔心哪天想換播放器時被數據鎖死。如果你是那種會花幾小時調 UI 和均衡器、會積累播放記錄和歌單、換機時不想再從零開始的人,建議你也把這個備份習慣建起來——早做晚做都要做,早做幾分鐘、晚做好幾小時。

本文为个人基于网络公开资料整理编写,非官方内容,仅供学习交流参考;软件版权归原作者所有,请支持正版;使用过程中遇到问题请查阅官方渠道,本文不承担任何责任。

同类文章