开源项目
zhongjhATC/AlbumCameraRecorder avatar
zhongjhATC/AlbumCameraRecorder

AlbumCameraRecorderX 评测:一套 Kotlin 库能否同时搞定拍照、录像、录音与九宫格展示?

高效的多媒体支持操作库,可简单配置操作相册、拍照、录音、录音等多种功能。还支持配套使用显示图片、视频、音频的九格功能。 。

1,141 个 Star139 个 ForkKotlinMIT
GitHub

秒懂

它是什么?
AlbumCameraRecorderX 是一个基于 CameraX 的 Kotlin 多媒体操作库,支持相册、拍照、录像、录音及九宫格展示。本文从实际工程角度分析其模块拆分、配置方式、兼容性边界,并给出适用场景与风险提示。
适合谁用?
适合需要快速集成拍照、录像、录音、相册及九宫格展示,并且愿意接受模块化拆分、自定义权限流程和 CameraX 架构的 Android 工程师。不适合追求极致稳定、依赖长期维护或对包体积敏感的项目。
能商用吗?
可以。MIT 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
还在维护吗?
在维护。仓库最近一次提交在 2 天前。
用什么语言写的?
主要是 Kotlin(依据 GitHub 的语言统计)。

以上回答依据项目的 GitHub 数据(最近同步于 2026年9月14日)和我们的分析,不构成法律意见。

开源项目深度解析

它解决什么问题,适合谁

这个库把 Android 开发中常见的多媒体操作,拍照、录像、录音、相册选择、文件展示,压缩成一组可配置的 API。你不需要自己写 CameraX 的预览逻辑,不需要处理权限申请流程,也不需要维护图片和视频的压缩管线。它面向的是那些需要在 App 里快速加入类似抖音式三段式交互,底部同时有相册、拍摄、录音入口的团队。如果你的需求只是简单调用系统相机或相册,这个库可能过重。但如果你要自定义拍摄参数、动态水印、分段录像,或者需要九宫格展示媒体文件,它把这块拼图提前拼好了。

从 CameraX 到九宫格:模块如何分工

仓库默认分支是 kotlin,基于 CameraX 构建拍摄功能。它把功能拆成五个模块:common 是公共库,multilibrary 是核心,负责调用和展示相册、录屏、录音;grid 模块用于展示获取到的媒体数据并显示上传进度;imageedit 和 videoedit 分别处理图片编辑和视频压缩。这种拆分意味着你可以只依赖需要的部分。例如只获取照片数据,就不需要 grid 模块。但注意,combined 模块是一个快捷入口,同时引入 multilibrary、grid 和 common,省去配置多个依赖的麻烦。videoedit 依赖 ffmpeg,体积增加约 25M,这是文档明确点出的代价。

配置与启动:从 JitPack 到第一个调用

导入过程不算复杂。首先在 build.gradle 中加入 JitPack 仓库,然后添加形如 com.github.zhongjhATC.AlbumCameraRecorder:combined:2029 的依赖。版本号直接是 2029,对应最近的 release。接着需要开启 AndroidX 和 Jetifier,并在 app 模块配置 Java 8 和 coreLibraryDesugaringEnabled true。README 强调这个开关是开启 java.time API 和 minify 优化尺寸的关键。使用时,你需要实例化 CameraSetting 和 AlbumSetting,前者设置支持的媒体类型,后者设置是否显示多选数字、过滤器、原图开关和最大原图大小。文档建议下载 Demo 查看完整用法,因为 README 只给了片段。

权限与兼容性:声明与现实的差距

库内置了权限处理,包括检测、解释为何申请、以及被多次拒绝后引导跳转设置页。这省去了不少样板代码,但文档也明确支持自定义权限请求,说明内置流程不一定适合所有应用。兼容性方面,README 声称在 4.1 到 Android 16 上有处理,并附有 WeTest 兼容性测试报告链接,声称 100% 通过。但这是厂商自测,不是第三方验证。另一个关键点是,当前 kotlin 分支刚发布,README 自己说如果想要更稳定版本,可以选择 androidx 分支,但该分支已停止维护,除非有严重 bug。这意味着你只能选择旧但稳定的分支,或新但未经验证的分支。

功能亮点与隐藏成本

功能列表很长,但有几个值得注意。拍摄和录像支持双指缩放、单指滑动调亮度,这是很多自定义相机库不提供的。分段录像已支持,但视频编辑目前只有压缩功能,文档说未来会加更多。图片编辑包含涂鸦、文字、马赛克、旋转、裁剪,这算是完整。动态水印是亮点,但文档没有说明水印的具体实现方式,只提到可以通过 CameraX 简化。压缩方面,图片压缩可自定义或使用 Demo 里的 LuBan,视频压缩用 ffmpeg。缓存管理有完整系统,但具体策略未公开。这些功能背后是配置项的增多,你需要花时间理解每个设置的边界。

维护状态与升级风险

仓库没有标记为 archived,最近一次推送在 2026 年 8 月,release 版本号按年份递增,说明还在活跃开发。但 androidx 分支已明确停止维护,这透露出一个信号:项目可能更倾向于推进新架构而非维护旧分支。升级成本方面,由于版本号直接是年份,没有语义化版本,你无法从版本号判断是否包含破坏性变更。README 说这版刚发布,所以从 androidx 分支迁移到 kotlin 分支需要重写部分代码,因为拍摄架构从自定义实现换成了 CameraX。如果你已经在用旧分支,迁移不是小工程。

替代方案与差异

一个直接的替代方案是使用 Android 官方的 CameraX 库,自己实现相册和录音功能。CameraX 提供预览、分析、拍照和录像的基础能力,但你需要自己处理权限、压缩、九宫格展示和分段录像。另一个思路是使用像 Matisse 这样的图片选择库,它只处理相册选择,不涉及拍摄和录音。与 AlbumCameraRecorderX 相比,Matisse 更轻量,但功能范围窄得多。如果你只需要相册选择,Matisse 或类似库会更简单,不会引入 CameraX 和 ffmpeg 的依赖。选择这个库意味着你接受一个全栈方案,但同时承担其体积和配置复杂度。

许可与结论

项目使用 MIT 许可证,这意味着你可以自由使用、修改和分发,只要保留版权声明。没有附加的开源传染性义务,但如果你修改了源码并发布,需要保留原始许可文本。在决定采用前,检查你的 minSdk 版本是否满足 desugaring 要求,因为 coreLibraryDesugaringEnabled 是必需的。还要确认你的构建环境能正常从 JitPack 拉取依赖,因为这不是 Maven Central 或 Google 仓库。这个库的定位是快速集成而非长期稳定,你需要在 Demo 里验证所有你需要的功能,特别是水印和分段录像,因为文档没有提供详细的 API 说明。

编辑结论

适合需要快速集成拍照、录像、录音、相册及九宫格展示,并且愿意接受模块化拆分、自定义权限流程和 CameraX 架构的 Android 工程师。不适合追求极致稳定、依赖长期维护或对包体积敏感的项目。在采用前应先验证三点:kotlin 分支的 2029 版本是否满足你的 minSdk 与 desugaring 配置;videoedit 模块引入的 ffmpeg 25M 体积是否可接受;以及你是否愿意在遇到问题时自行阅读源码或提交 Issue,因为 androidx 分支已停止维护,kotlin 分支刚发布,稳定性未经过长时间验证。

官方来源

  1. Official README
  2. Project repository
  3. Release notes
社区笔记

社区笔记