电视盒子应用如何每天自动出新版本?TVBoxOSC 的完整做法
【免费下载链接】TVBoxOSCTVBoxOSC - 一个基于第三方项目的代码库,用于电视盒子的控制和管理。项目地址: https://gitcode.com/GitHub_Trending/tv/TVBoxOSC
你有没有被"追更"折腾过?想用的电视盒子应用隔三差五就有新提交,可自己盯仓库、拉源码、打包、签名,再装进盒子验证,一折腾就是一天。TVBoxOSC 解决的就是这个麻烦:它是一个面向电视盒子的控制与管理应用的代码库,内置了一条全自动构建流水线,上游一有更新,第二天早上就能拿到签好名的新版 APK。下面带你把这条流水线拆开看一遍。
30 秒看懂 TVBoxOSC:它盯住了哪两个上游
它自己不"发明"功能,定位很清晰:站在成熟项目的肩膀上做持续构建。README 的致谢里列了三个来源,真正参与每日构建的是 q215613905/TVBoxOS 和 takagen99/Box 这两个仓库。
想完整读一遍的话,先把仓库拉到本地:
git clone https://gitcode.com/GitHub_Trending/tv/TVBoxOSC每个上游各跑一条独立任务
两个仓库分别跑在两条构建任务里,一个走默认 Java 版本,一个显式指定 Java 17,互不影响。任何一个上游有更新,都能单独出包,不会互相"连坐"。
它会交给你哪些产物 📦
每次出新版,你会拿到三样东西:签好名的 APK(命名格式TVBox_作者_时间.apk)、对应提交的源码压缩包,以及一份自动生成的更新日志。
自动更新原理:每天 6:59 那次检查怎么判断新版
核心逻辑都写在 .github/workflows/test.yml 里,一句话概括:取上游最新提交号,去 README.md 里查有没有记过。没记过就构建,记过了直接跳过。定时由这一行控制:
59 6 * * *每天 6 点 59 分自动跑一次。你不用半夜起来刷盒子,早上一看,新版本已经躺在发布列表里。
版本号直接取自提交时间 ⏰
版本号不是手敲的,直接取上游提交时间,形如20260909-1619。光看版本号就能大致猜到这一版基于哪次提交打的,出问题回查提交记录特别顺手。
什么情况会被判定为新版
只有两条路:README 里没有这个提交号,或者你手动勾了 rebuild(忽略构建记录、强制重建)。判断标准简单粗暴,但基本零误报。
构建全流程:从上游源码到可安装的签名 APK
确认有新提交后,流水线先克隆上游源码并切到目标提交,然后做几件"脏活":
- 把构建脚本里的版本号替换成时间戳,同时写进"关于"对话框
- 给依赖配置补上 crosswalk 仓库源,注释里就俩字:防挂,专治构建时拉不到依赖
- 注入签名配置,用仓库里现成的签名文件给 release 包签名
- 执行
./gradlew assemblerelease完成构建,把产物统一改名、归进 apk 目录
更新日志也是自动写的
日志不靠人回忆。它直接取"上次记录的上次提交"到"这次提交"之间的提交记录,滤掉合并噪音、按顺序编号,再附上上游作者署名,原样贴进发布说明。
手动触发构建:两个开关分别解决什么问题
定时任务之外,这条 workflow 还开了手动触发入口,并配了两个可选开关,各对应一种真实场景:
- rebuild:上游没更新,但你就是想把同一版重打一遍(比如改了配置想验证),勾上它就能绕过"README 已记录"的检查
- donotpublish:只想让流水线跑通、验证构建能不能过,不想真的发新版,勾上它最后发布会自动跳过
第二个开关对调试特别友好 ✋——反复触发也不会把发布列表刷成垃圾场。
容易被忽略的隐藏细节:推送、清理与依赖升级
- 新版自动推送到 Telegram:构建完成后,APK 和更新说明会直接发到 Telegram 群,上传动作由 .github/scripts/upload.py 完成
- 历史定期清场:内置的 clean 任务只保留最近 14 天、至少 10 条运行记录,构建历史不会无限膨胀 🧹
- 依赖也在自动升级:.github/dependabot.yml 把 GitHub Actions 组件的更新检查设成了每天一次
还有个容易被漏掉的点:每个 release 都会带上源码包。你拿到的不只是一个"黑盒"APK,随时能解包对照,看清这一版到底改了什么。
所以下次再听到"这个盒子应用又更新了",你不用亲自上阵。凌晨的活流水线替你干了,你要做的只是早上装个包、打开看看。
【免费下载链接】TVBoxOSCTVBoxOSC - 一个基于第三方项目的代码库,用于电视盒子的控制和管理。项目地址: https://gitcode.com/GitHub_Trending/tv/TVBoxOSC
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考