
文章目录SpotiFlyer用 Kotlin 写的跨平台音乐下载器1、它解决什么问题2、跨平台是怎么实现的3、支持哪些平台4、安装方式5、项目现状6、技术细节7、适用场景8、总结SpotiFlyer用 Kotlin 写的跨平台音乐下载器SpotiFlyer 在 GitHub 上拿到了 11.1K Star。这是一个用 Kotlin 写的音乐下载工具支持 Spotify、YouTube、Gaana、JioSaavn、SoundCloud 五个平台。能下载单曲、专辑和播放列表覆盖 Android、桌面端和 Web 端。1、它解决什么问题日常听歌的痛点之一你在 Spotify 收藏了一堆歌换个环境想离线听发现要么开会员要么根本没这个选项。SpotiFlyer 干的事就是把这个过程简化了。复制一个链接粘进去下载完成。不需要注册账号不需要去申请 API Key不需要折腾配置文件。装好就能用。2、跨平台是怎么实现的SpotiFlyer 基于 Kotlin Multiplatform 构建。同一套核心代码跑在不同平台上Android 端用 Jetpack Compose 做 UI桌面端用 Compose for DesktopWeb 端用 Kotlin/JS 配合 React Wrapper。iOS 端也在开发中用 SwiftUI 实现。这种架构的好处是业务逻辑只写一遍各平台只负责各自的界面层。修一个 bug三个平台同时生效。3、支持哪些平台五个音乐来源SpotifyYouTubeYouTube MusicGaanaJioSaavnSoundCloud把歌曲链接粘贴进去工具会自动识别来源解析内容然后提供下载。不需要手动选择平台。4、安装方式Android 用户直接下载 APK 安装包也可以从 F-Droid 获取。桌面端支持 Windows、macOS 和 Linux。Windows 有 MSI 安装包和 JAR 包两种选择macOS 和 Linux 提供 JAR 包。运行 JAR 包需要系统已安装 Java 环境。Web 端目前处于 Beta 阶段可以直接在浏览器里使用。所有平台的安装包都在 GitHub Releases 页面统一发布版本号一致当前稳定版是 3.6.3。5、项目现状需要说明的一点SpotiFlyer 已经停止更新了。开发者转向了一个新项目叫 Soundbound。Soundbound 延续了 SpotiFlyer 的核心理念但架构和功能都有升级。Soundbound 支持通过插件扩展用户可以自行安装需要的插件按需加载。对于还在用 SpotiFlyer 的用户现有版本依然可以正常使用。但如果想要持续的功能更新和维护建议迁移到 Soundbound。6、技术细节SpotiFlyer 的一些设计选择值得关注。首先是无广告。整个应用没有任何广告位不管是启动页、列表页还是下载页都没有广告插入。其次是省流量。它的核心逻辑是把歌曲下载到本地而不是每次都在线播放。对于流量有限或者网络不稳定的用户这个设计很实用。权限方面应用申请的权限都有明确用途网络权限用于访问在线服务存储权限用于保存下载的文件查询已安装应用的权限用于判断用户是否安装了 Spotify 等客户端。电池优化豁免是为了后台下载不被系统杀掉。数据采集方面应用内置的 Analytics 和 Crashlytics 默认关闭属于用户主动选择开启的类型而且是自托管方案数据不经过第三方。7、适用场景想把 Spotify 或 YouTube 播放列表批量下载到本地的人经常在没有网络的环境下听歌的人不想为了离线播放而订阅音乐平台会员的用户对跨平台工具有需求希望在手机和电脑上都用同一套方案的人8、总结SpotiFlyer 作为一个 Kotlin Multiplatform 项目在技术实现上有参考价值。它证明了用 Kotlin 写一套代码同时覆盖 Android、桌面和 Web 是可行的而且用户体验没有打折扣。虽然项目本身已经停止维护但它的继任者 Soundbound 在继续推进。从 SpotiFlyer 到 Soundbound技术路线和产品思路是一脉相承的。对于开发者来说这个项目的代码库值得看看尤其是 Kotlin Multiplatform 的实践部分。对于普通用户直接用 Soundbound 是更好的选择。对于开发者来说这个项目的代码库值得看看尤其是 Kotlin Multiplatform 的实践部分。对于普通用户直接用 Soundbound 是更好的选择。