注意
开发 ijkplayer 的最佳环境
- macOS Sequoia(15.1)
- Xcode Version 16.1 (15F31d)
- CocoaPods 1.16.1
感谢你对 debugly/ijkplayer 的认可,一起加入到其中让它变得更好吧。下面将为你介绍如何搭建开发环境:
1、fork 源码
当你做好了一同开发 ijkpalyer 时,你需要在 Github 上将 debugly/ijkplayer fork 到自己的账号下,然后从自己名下的仓库克隆,并拉取依赖的子模块:
#debugly改成你的 github 用户名
git clone https://github.com/debugly/ijkplayer.git ijkplayer
cd ijkplayer
git checkout -B latest k0.11.8
git submodule update --init
2、安装依赖库
ijkpalyer 依赖了 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 工程运行项目了,修改 ijkplayer 的源码后记得推送到你 fork 的仓库后方可在 GitHub 上提交 PR 给我。
提示
当安装 FFmpeg 这个库时,默认会把 FFmpeg 依赖的三方库一并安装,需要说明的是这些库不会被安装到系统目录里,只会安装到 FFToolChain/build 目录下,ijkpalyer 也不会使用使用 brew 等工具安装到系统里三方库。
3、修改 FFmpeg 等三方库源码
如果不需要修改 FFmpeg 等三方库源码,则可以跳过下面的介绍:
借助于 FFToolChain 这个工具管理所有三方库的源码以及编译和发布,这个工具就是为 debugly/ijkplayer 打造的,所以如果使用起来不方便可以提交 issue给我。
使用 init 命令可以初始化三方库的源码,其原理是将远程仓库克隆到 build/extra
目录里,然后读取配置文件里定义好的 GIT_COMMIT 那次提交,二次克隆到该平台和架构对应的目录里。
#for ios
./FFToolChain/main.sh init -l 'ass ffmpeg' -p ios
pod install --project-directory=examples/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 进行测试,功能无误后,你需要进入到三方库对应的仓库目录(比如: ijkplayer/FFToolChain/build/src/ios/ffmpeg-arm64
)提交这次的改动。
提示
对于三方库的一切修改均通过 patch 的形式存在,如果你还没用过 patch,那么刚好学习下。
然后通过 git format-patch your_commit_id
命令,将刚才的改动以 patch 的形式保存,需要把这些 patches 放到 FFToolChain/patches 目录里并推送到你这个 fork 的仓库,进而登录 GitHub 提交 PR 给我。
脚本还提供了很多功能,可以执行 ./FFToolChain/main.sh --help
查看帮助。
感谢你为 debugly/ijkplayer 做出的巨大贡献,所有使用者都会感激你的付出。