大白熊 · 个人作品集

极简音乐 开源声明

第三方组件声明 与 LGPL-2.1 合规声明

「极简音乐」在编译时链接/使用了以下第三方开源组件。本页同时说明 LGPL-2.1 赋予你的权利与对象码/源码的获取方式。完整许可证文本可向开发者索取 (working12.3@126.com)或访问各组件官方仓库。

一、关键组件(涉及原生库或本地补丁)

组件版本许可证用途
libmpv / FFmpeg(安卓) 经 media_kit_libs_android_audio 1.3.8 LGPL-2.1 安卓端音频解码(WMA/ASF/APE/ALAC/WavPack 等扩展格式)。default flavor,未启用 --enable-gpl
libmpv / FFmpeg(iOS 真机) 经 media_kit_libs_ios_audio 1.1.4 LGPL-2.1 iOS 真机端音频解码(同上)。default flavor,真机切片启用 audiounit
FFmpeg(鸿蒙自研模块) 7.1.1(自构建) LGPL-2.1 鸿蒙端 wma/asf 解码(系统 AVPlayer 不支持微软格式)。仅启用 asf demuxer 与 wma 系列解码器,动态 .so,详见下文 LGPL 声明
libsmb2 v6.1.0(经 dart_smb2 0.1.1 打包) LGPL-2.1 SMB2/3 协议访问(安卓/iOS 端文件访问层底层),以预编译二进制分发
dart_smb2 0.1.1 BSD-3-Clause libsmb2 的 Dart FFI 绑定(SMB 连接/浏览/区间读主实现);其打包的 libsmb2 原生库为 LGPL,单列于上
media_kit 1.2.6 MIT libmpv 的 Dart 绑定。安卓 / iOS 真机启用;iOS 模拟器与鸿蒙不启用
mbedtls(Mbedcrypto / Mbedtls / Mbedx509) 随 media_kit 构建线 Apache-2.0 TLS 加密库,libmpv 的依赖,经 media_kit_libs_ios_audio 1.1.4 的 xcframework 捆绑分发(iOS 端随 IPA 分发的实际二进制,对象码已入库开源交付仓库)
just_audio_media_kit 2.1.0 Unlicense 将 media_kit 桥接为 just_audio 后端。安卓 / iOS 真机启用;iOS 模拟器与鸿蒙不启用
smb_connect 0.0.x(本地补丁) Apache-2.0 SMB/CIFS 局域网发现层(LAN 握手确认)。含本地 UNC 路径修复补丁,原始版权及声明保留

二、其他依赖(均为宽松许可证)

组件许可证用途
flutter / flutter_localizationsBSD-3-ClauseUI 框架
flutter_riverpodMIT状态管理
go_routerBSD-3-Clause路由
just_audioMIT音频播放抽象
audio_session / audio_service(本地补丁)MIT音频会话 / 后台播放(fork 自定义媒体通知布局)
hive_ceApache-2.0本地结构化存储
shared_preferencesBSD-3-Clause设置项存储
flutter_secure_storage(本地补丁)Apache-2.0SMB 密码加密存储
path_provider / file_pickerBSD-3-Clause / MIT文件系统
saf_util / saf_streamMIT安卓 SAF content:// 访问
httpBSD-3-Clause网络请求(专辑封面在线检索 / 图片下载)
url_launcherBSD-3-Clause打开外部链接(协议网页跳转、mailto)
permission_handlerMIT运行时权限申请(安卓 POST_NOTIFICATIONS 等)
in_app_purchaseBSD-3-ClauseiOS 应用内购买(会员订阅/买断)
package_info_plusBSD-3-Clause版本号读取
disk_space_plusMIT磁盘可用空间预检(批量缓存前)
reorderablesMIT主页专辑网格长按拖拽与重排动画
collection / intl / pathBSD-3-Clause基础工具

以上清单可能随版本迭代更新,完整且权威的清单以构建时 flutter pub deps 为准; 完整许可证文本可向开发者索取,或访问各组件官方仓库。

三、smb_connect 本地补丁声明

本项目以本地补丁版本(vendor/smb_connect)替代 smb_connect 官方发布版。补丁内容:修复 getUncPath 对 share 根目录产生畸形 UNC 路径(\\host\share\\)的缺陷, 该缺陷导致群晖等服务器在枚举 share 根目录时返回 NT_STATUS_INVALID_NAME。

补丁依据 Apache-2.0 第 4 条保留原始版权与声明;修改部分以注释标注。原始仓库:smb_connect(pub.dev)。

四、LGPL-2.1 涉及的库与平台

本部分适用于「极简音乐」安卓端、iOS 真机端与鸿蒙端发布件。本应用在运行时链接以下遵循 LGPL-2.1 的第三方库(均未启用 --enable-gpl / --enable-nonfree,属可再分发的 LGPL 构建):

许可证安卓iOS 真机鸿蒙引入方式
libmpv(内含 FFmpeg)LGPL-2.1经 media_kit 预编译库动态链接
FFmpeg(鸿蒙自研模块)LGPL-2.1自构建 FFmpeg 7.1.1,动态链接 .so
libsmb2LGPL-2.1经 dart_smb2 打包的预编译二进制,Dart FFI 动态调用

平台差异说明:安卓经 media_kit_libs_android_audio 引入 libmpv(动态 .so), libsmb2 经 dart_smb2 jniLibs 引入;iOS 真机切片启用 audiounit 音频输出,libsmb2 经 xcframework 引入;iOS 模拟器受预编译产物限制不使用 libmpv/FFmpeg(改用系统 AVPlayer);鸿蒙不使用 libmpv 与 libsmb2(media_kit 与 dart_smb2 均无 ohos 原生库),为补齐系统 AVPlayer 不支持的 wma/asf,自研 FFmpeg 解码模块:交叉编译 FFmpeg 7.1.1 (aarch64-ohos,--disable-everything 后仅启用 asf demuxer、wmav1/wmav2/wmapro/wmalossless 解码器与 swresample,--disable-network),产出 libavcodec / libavformat / libavutil / libswresample 四个动态库(合计约 1.1MB),经自有 N-API 封装层 libwma.so 动态链接。封装层为 自有代码,不受 LGPL 约束;四个 FFmpeg 库受 LGPL-2.1 约束。

关于商用:libsmb2 以 LGPL-2.1 分发,该许可证不限制商用场景; 上游仓库(sahlberg/libsmb2)无附加协议条款,企业付费商用同样适用,无需额外授权。 FFmpeg 本应用采用 LGPL 构建(未启用 --enable-gpl / --enable-nonfree), 同样允许商用分发。

五、经 FFmpeg 解码的扩展格式

下列格式由 FFmpeg(LGPL-2.1,LGPL 构建)解码:

扩展名容器 / 编码支持平台说明
wma / asfASF(Windows Media Audio)安卓 / iOS 真机 / 鸿蒙微软容器,FFmpeg 内置 wmav1/wmav2 解码器;鸿蒙模块另启用 wmapro/wmalossless
apeMonkey's Audio 无损安卓 / iOS 真机FFmpeg 内置 ape 解码器;移动端解码耗 CPU 较 FLAC 高
alac裸 ALAC(Apple Lossless)安卓 / iOS 真机FFmpeg 内置 alac 解码器;ALAC 在 .m4a 容器内由系统解码器直接支持
wvWavPack 无损 / 混合安卓 / iOS 真机FFmpeg 内置 wavpack 解码器

关于 DSD(DSF/DFF):DSD 涉及索尼专利布局,且移动端需 PCM 转码能耗高, 本应用暂不支持该格式。如未来支持,将另行评估专利许可。

六、LGPL-2.1 赋予你的权利

依据 LGPL-2.1 第 6 条,你作为终端用户拥有以下权利:

七、如何获取对象码与源码

公开交付仓库(推荐,即时获取,无需申请):各版本对应的 LGPL 库 源码、构建材料与对象码已同步至独立的开源交付仓库,任何第三方均可自由获取与再分发 (遵循各组件原始许可证):

仓库以「应用版本 ↔ git 标签」索引(如 music-v0.0.6+8),每个标签包含:

邮箱渠道(兜底):以下材料不适宜公开于仓库,请邮件联系开发者 王珂景:working12.3@126.com,附上你使用的 应用版本号(见「关于 → 关于我们」)、平台(安卓 / iOS / 鸿蒙)与你的诉求。我们将在 3 个工作日内回复确认收到请求,并在收到索取邮件后 30 个工作日内 完成交付:

上述 LGPL 库的上游源码仓库(亦可直接获取):

八、关于 iOS 静态链接的说明

iOS 应用受 Apple App Store 代码签名与分发机制限制,最终用户难以在设备上 自行替换已签名的库。这是 LGPL 在 iOS 平台长期存在的已知张力(见 FFmpeg 官方 Trac #1229)。我们通过上述「书面要约 + 公开源码」的方式履行 LGPL-2.1 的义务, 确保任何第三方均可获取源码与对象码。鸿蒙 HAP 分发机制同理,亦以本声明作为书面要约。

需要说明的是:本应用 iOS 端的 FFmpeg(libavcodec / libavformat / libavutil / libswresample)与 libsmb2 均以独立动态 framework(未合并进主程序二进制) 的形式随 IPA 分发,安卓端与鸿蒙端亦全部为动态库(.so)链接——即 LGPL-2.1 第 4 条 所述「共享库机制」,替换库无需重新编译主程序,用户重新签名(如 Xcode 自签、侧载) 后即可自行替换这些库。在此之上,我们仍按第七节额外承诺提供应用主程序目标文件, 作为兜底举证材料。

九、免责

本应用自身的源代码、UI、业务逻辑(即除上述 LGPL 库之外的全部内容,含鸿蒙模块的 N-API 封装层 libwma.so)不适用 LGPL,保留所有权利。LGPL 的义务仅限于上述库本身。