注意
此文档将介绍修改源码后如何贡献到开源社区,日常使用者可忽略。
感谢你对 debugly/fsplayer 的认可,一起加入到其中让它变得更好吧。下面将为你介绍如何搭建开发环境:
提示
开发 fsplayer 的最佳环境
- macOS Sequoia(15.1)
- Xcode Version 16.1 (15F31d)
- CocoaPods 1.16.1
1、fork 源码
当你做好了一同开发 fspalyer 时,你需要在 Github 上将 debugly/fsplayer fork 到自己的账号下,然后从自己名下的仓库克隆,并拉取依赖的子模块:
#{your_name} 改成你的 github 用户名
git clone https://github.com/{your_name}/fsplayer.git fsplayer
cd fsplayer
git checkout -B main
git submodule update --init
2、安装依赖库
fspalyer 依赖了 FFmpeg、ass、opus、smb2 等三方库,如果不需要修改这些三方库,可以直接下载已经预编译好的版本,直接调用 install 命令安装这些三方库:
./FFToolChain/main.sh install -p macos -l 'ass ffmpeg'
./FFToolChain/main.sh install -p ios -l 'ass ffmpeg'
./FFToolChain/main.sh install -p tvos -l 'ass ffmpeg'
# 可通过 demo 调试开发
pod install --project-directory=./examples/macos
pod install --project-directory=./examples/ios
pod install --project-directory=./examples/tvos
现在就可以打开 demo 工程运行项目了,修改 fsplayer 的源码后记得推送到你 fork 的仓库后方可在 GitHub 上提交 PR 给我。
提示
当安装 FFmpeg 这个库时,默认会把 FFmpeg 依赖的三方库一并安装,需要说明的是这些库不会被安装到系统目录里,只会安装到 FFToolChain/build 目录下,fspalyer 也不会使用使用 brew 等工具安装到系统里三方库。
3、修改 FFmpeg 等三方库源码
如果不需要修改 FFmpeg 等三方库源码,则可以跳过下面的介绍:
借助于 FFToolChain 这个工具管理所有三方库的源码以及编译和发布,这个工具就是为 debugly/fsplayer 打造的,所以如果使用起来不方便可以提交 issue给我。
使用 init 命令可以初始化三方库的源码,其原理是将远程仓库克隆到 build/extra
目录里,然后读取配置文件里定义好的 GIT_COMMIT 那次提交,二次克隆到该平台和架构对应的目录里。
#for ios
#先把所有依赖下载下来
./FFToolChain/main.sh install -l 'ass ffmpeg' -p ios
pod install --project-directory=examples/ios
#初始化需要修改的三方库的源码
./FFToolChain/main.sh init -l ffmpeg -p ios
执行完毕后,源码将会克隆到:build/src/ios/
目录:
src
├── ios
│ ├── ffmpeg-arm64
│ ├── ffmpeg-arm64_simulator
│ └── ffmpeg-x86_64_simulator
接下来就可以进入到对应的目录去修改源码了,当修改完后通过 compile 命令编译源码:
#通过 -a 参数指定编译的架构,可以提升开发效率,减少编译等待时间
./FFToolChain/main.sh compile -l ffmpeg -p ios -a arm64
运行 demo 进行测试,功能无误后,你需要进入到三方库对应的仓库目录(比如:fsplayer/FFToolChain/build/src/ios/ffmpeg-arm64
)并提交相关修改。
提示
对于三方库的一切修改均通过 patch 的形式存在,下面简单介绍如何生成 patch。
- 通过
git format-patch {your_commit_id}
命令,将刚才的改动以 patch 的形式导出 - 把这些 patches 保存到 FFToolChain/patches 目录里
- 将这些 patch 推送到你 fork 的仓库
- 登录 GitHub 提交 PR 给我
脚本还提供了很多功能,可以执行 ./FFToolChain/main.sh --help
查看帮助。
感谢你为 debugly/fsplayer 做出的巨大贡献,所有使用者都会感激你的付出。