開源專案
rawnaldclark/Stash avatar
rawnaldclark/Stash

Stash:在 Android 上同步 Spotify 與 YouTube Music 音樂庫

您的 Spotify + YouTube 音樂庫和日常合輯。以無損 FLAC 格式串流或下載。永遠免費和開源。

1,066 個 Star43 個 ForkKotlinGPL-3.0
GitHub

秒懂

它是什麼?
Your Spotify + YouTube Music library & daily mixes. Stream or download in lossless FLAC. Free and open source forever.
適合誰用?
適合已具備 Kotlin 或相關執行環境,且需求正好落在 Stash README 所列範圍的使用者;不適合把文件未說明的效能、相容性或安全承諾視為既定事實。先依本文列出的 Stash 命令、檔案與版本做一次隔離測試,再決定是否納入正式流程。
可以商用嗎?
可以,但有條件。GPL-3.0 是 copyleft 授權:如果你散布包含它的軟體,就必須以同一授權公開該軟體的原始碼。只在內部執行、不對外散布,則不會觸發這項義務。
還在維護嗎?
有在維護。儲存庫最近一次提交在 5 天前。
用什麼語言寫的?
主要是 Kotlin(依據 GitHub 的語言統計)。

以上回答依據專案的 GitHub 資料(最近同步於 2026年9月14日)與我們的分析,不構成法律意見。

開源專案深度解析

Stash:專案定位

rawnaldclark/Stash 的 README 將專案描述為「Your Spotify + YouTube Music library & daily mixes. Stream or download in lossless FLAC. Free and open source forever.」。本文只整理倉庫可直接核對的內容,不把 star、Fork 或宣傳語當成品質證明。README 在「Stash」下寫到:> Your Spotify + YouTube Music library, on your phone, in FLAC.。這說明的是專案邊界,不是已完成的生產驗證。

Stash 的邊界與文件記號(6)需要分開看。README 已列出的入口、版本與限制可以直接對照,未寫出的效能、相容性與營運承諾則不能從 star 或描述推導。針對 rawnaldclark-stash-deep-analysis,請把這段判斷放回實際命令與設定檔的輸出中,保留錯誤訊息與退出狀態,才知道問題在安裝、權限、網路還是專案本身。

Stash 的邊界與文件記號(12)需要分開看。README 已列出的入口、版本與限制可以直接對照,未寫出的效能、相容性與營運承諾則不能從 star 或描述推導。針對 rawnaldclark-stash-deep-analysis,請把這段判斷放回實際命令與設定檔的輸出中,保留錯誤訊息與退出狀態,才知道問題在安裝、權限、網路還是專案本身。

Stash:適用場景

從 README 的「Library」與相關條目,可以先判斷它是否處理你的實際問題:Spotify + YouTube Music in one unified library , liked songs, playlists, daily mixes, every Spotify mix worth syncing。若需求不同,不應只因專案熱度就採用。本文保留原始專案名、命令與元件名,方便回到一手來源核對。 README 另外列出一項可核對的資訊:QBDLX , a program that downloads streams directly from Qobuz.。這類原文條目可用來設計試跑步驟,但不能取代實際環境測試。

Stash 的邊界與文件記號(1)需要分開看。README 已列出的入口、版本與限制可以直接對照,未寫出的效能、相容性與營運承諾則不能從 star 或描述推導。針對 rawnaldclark-stash-deep-analysis,請把這段判斷放回實際命令與設定檔的輸出中,保留錯誤訊息與退出狀態,才知道問題在安裝、權限、網路還是專案本身。

Stash 的邊界與文件記號(7)需要分開看。README 已列出的入口、版本與限制可以直接對照,未寫出的效能、相容性與營運承諾則不能從 star 或描述推導。針對 rawnaldclark-stash-deep-analysis,請把這段判斷放回實際命令與設定檔的輸出中,保留錯誤訊息與退出狀態,才知道問題在安裝、權限、網路還是專案本身。

Stash 的邊界與文件記號(13)需要分開看。README 已列出的入口、版本與限制可以直接對照,未寫出的效能、相容性與營運承諾則不能從 star 或描述推導。針對 rawnaldclark-stash-deep-analysis,請把這段判斷放回實際命令與設定檔的輸出中,保留錯誤訊息與退出狀態,才知道問題在安裝、權限、網路還是專案本身。

Stash:運作方式

README 將運作方式分散在「Stash」等段落。可確認的線索包括:There's no Stash account. No subscription. No ads. No analytics. Your credentials live on your phone, encrypted, and the only network traffic Stash makes is to Spotify and YouTube themselves.。本文不把未寫出的架構、效能或安全邊界補成結論;真正的執行鏈仍要配合目錄、設定檔與版本標籤檢查。

Stash 的邊界與文件記號(2)需要分開看。README 已列出的入口、版本與限制可以直接對照,未寫出的效能、相容性與營運承諾則不能從 star 或描述推導。針對 rawnaldclark-stash-deep-analysis,請把這段判斷放回實際命令與設定檔的輸出中,保留錯誤訊息與退出狀態,才知道問題在安裝、權限、網路還是專案本身。

Stash 的邊界與文件記號(8)需要分開看。README 已列出的入口、版本與限制可以直接對照,未寫出的效能、相容性與營運承諾則不能從 star 或描述推導。針對 rawnaldclark-stash-deep-analysis,請把這段判斷放回實際命令與設定檔的輸出中,保留錯誤訊息與退出狀態,才知道問題在安裝、權限、網路還是專案本身。

Stash 的邊界與文件記號(14)需要分開看。README 已列出的入口、版本與限制可以直接對照,未寫出的效能、相容性與營運承諾則不能從 star 或描述推導。針對 rawnaldclark-stash-deep-analysis,請把這段判斷放回實際命令與設定檔的輸出中,保留錯誤訊息與退出狀態,才知道問題在安裝、權限、網路還是專案本身。

Stash:安裝與第一次執行

第一次安裝應從 README 指出的入口開始。目前可核對的命令是:

git clone https://github.com/rawnaldclark/Stash.git cd Stash ./gradlew assembleDebug # APK lands in app/build/outputs/apk/debug/

如果倉庫沒有命令,本文不會自行編造步驟,而是建議先閱讀「Online vs Offline」,確認系統依賴、預設埠與首次初始化。

Stash 的邊界與文件記號(3)需要分開看。README 已列出的入口、版本與限制可以直接對照,未寫出的效能、相容性與營運承諾則不能從 star 或描述推導。針對 rawnaldclark-stash-deep-analysis,請把這段判斷放回實際命令與設定檔的輸出中,保留錯誤訊息與退出狀態,才知道問題在安裝、權限、網路還是專案本身。

Stash 的邊界與文件記號(9)需要分開看。README 已列出的入口、版本與限制可以直接對照,未寫出的效能、相容性與營運承諾則不能從 star 或描述推導。針對 rawnaldclark-stash-deep-analysis,請把這段判斷放回實際命令與設定檔的輸出中,保留錯誤訊息與退出狀態,才知道問題在安裝、權限、網路還是專案本身。

Stash 的邊界與文件記號(15)需要分開看。README 已列出的入口、版本與限制可以直接對照,未寫出的效能、相容性與營運承諾則不能從 star 或描述推導。針對 rawnaldclark-stash-deep-analysis,請把這段判斷放回實際命令與設定檔的輸出中,保留錯誤訊息與退出狀態,才知道問題在安裝、權限、網路還是專案本身。

Stash:設定與日常使用

日常使用取決於專案文件。README 的「Online vs Offline」段落提到:Stash has two modes. They decide what a sync actually does.。設定檔、環境變數、權限與資料目錄只在來源明確時才會記錄;沒有寫出的預設值,應在測試環境驗證並保留回滾副本。 同一部分也提到:Bulletproof matching , finds the right version of a track 99% of the time。

Stash 的邊界與文件記號(4)需要分開看。README 已列出的入口、版本與限制可以直接對照,未寫出的效能、相容性與營運承諾則不能從 star 或描述推導。針對 rawnaldclark-stash-deep-analysis,請把這段判斷放回實際命令與設定檔的輸出中,保留錯誤訊息與退出狀態,才知道問題在安裝、權限、網路還是專案本身。

Stash 的邊界與文件記號(10)需要分開看。README 已列出的入口、版本與限制可以直接對照,未寫出的效能、相容性與營運承諾則不能從 star 或描述推導。針對 rawnaldclark-stash-deep-analysis,請把這段判斷放回實際命令與設定檔的輸出中,保留錯誤訊息與退出狀態,才知道問題在安裝、權限、網路還是專案本身。

Stash 的邊界與文件記號(16)需要分開看。README 已列出的入口、版本與限制可以直接對照,未寫出的效能、相容性與營運承諾則不能從 star 或描述推導。針對 rawnaldclark-stash-deep-analysis,請把這段判斷放回實際命令與設定檔的輸出中,保留錯誤訊息與退出狀態,才知道問題在安裝、權限、網路還是專案本身。

Stash:README 能確認的限制

README 能確認的限制比宣傳頁更重要。現有來源沒有證明rawnaldclark/Stash具備固定相容矩陣、服務等級、效能基準或長期支援承諾。README 只明確寫到「Offline mode Sync downloads each track as a FLAC file (or the closest lossless source available) and stores it on your phone. Once a track is on disk you can play it forever with no connection. It costs storage but no recurring data.」。這些未知項應列入選型紀錄,不要改成肯定句。

Stash 的取捨很具體:Offline 會把曲目存成 FLAC 並消耗約 9 至 15 GB,Online 只建立本機索引但播放需要網路。建置時使用 Android Studio Hedgehog、JDK 17、SDK 35 與 ./gradlew assembleDebug,產物在 app/build/outputs/apk/debug/。

Stash 的邊界與文件記號(5)需要分開看。README 已列出的入口、版本與限制可以直接對照,未寫出的效能、相容性與營運承諾則不能從 star 或描述推導。針對 rawnaldclark-stash-deep-analysis,請把這段判斷放回實際命令與設定檔的輸出中,保留錯誤訊息與退出狀態,才知道問題在安裝、權限、網路還是專案本身。

Stash 的邊界與文件記號(11)需要分開看。README 已列出的入口、版本與限制可以直接對照,未寫出的效能、相容性與營運承諾則不能從 star 或描述推導。針對 rawnaldclark-stash-deep-analysis,請把這段判斷放回實際命令與設定檔的輸出中,保留錯誤訊息與退出狀態,才知道問題在安裝、權限、網路還是專案本身。

Stash 的邊界與文件記號(17)需要分開看。README 已列出的入口、版本與限制可以直接對照,未寫出的效能、相容性與營運承諾則不能從 star 或描述推導。針對 rawnaldclark-stash-deep-analysis,請把這段判斷放回實際命令與設定檔的輸出中,保留錯誤訊息與退出狀態,才知道問題在安裝、權限、網路還是專案本身。

編輯結論

適合已具備 Kotlin 或相關執行環境,且需求正好落在 Stash README 所列範圍的使用者;不適合把文件未說明的效能、相容性或安全承諾視為既定事實。先依本文列出的 Stash 命令、檔案與版本做一次隔離測試,再決定是否納入正式流程。

官方來源

  1. Official README
  2. Project repository
  3. Release notes
社群筆記

社群筆記