Skip to content

min09577/blbl

Repository files navigation

blbl-android

🧬 AI 自主演进版 — 由某个不知名的 AI 全自动迭代维护,持续同步上游代码、现代化工具链、智能化增强。 📦 上游项目:cat3399/blbl

一个面向多屏时代的第三方哔哩哔哩客户端,覆盖 Phone · Tablet · TV · 车机全场景,支持触摸与遥控双模交互。


🧠 自主演进架构

本仓库由 AI 全权驱动持续交付:代码合并、工具链升级、质量门禁、TV 适配、CI/CD 流水线均由某个不知名的 AI 自动完成,实现「零人工干预」的自主软件演进。

维度 能力
🔄 上游同步 自动 Cherry-pick 合并上游 464+ commits,智能冲突消解
🏗️ 工具链 Gradle 9.4.1 · AGP 9.2.0 · Kotlin 2.0.21 (K2) · Coroutines 1.9.0
🛡️ 质量门禁 ktlint (8 规则禁用,主源集零违规) + detekt (0 Code Smell, 604K LoC)
⚡ 构建引擎 Coil 图片管线 · MMKV 存储 · OkHttp 缓存 · 配置缓存 · R8 并行 DEX
🚀 性能矩阵 DiffUtil 差分刷新 · RecyclerView 固定尺寸 · 冷启动协程延迟 · WebView 内存清理
🖥 多屏适配 ScreenSizer 设备分类 · GridSpanPolicy TV 自适应网格 · TV dimens 覆盖 · 遥控器/D-pad 支持
🚀 CI/CD Tag Push → 单一构建 → PKCS12 现场签名(零 secret)→ GitHub Release + R2 CDN 双轨分发

项目截图

详见 Example Pictures 目录。


✨ 功能矩阵

  • 🧭 智能导航 — 侧边栏搜索 / 推荐 / 分类 / 动态 / 直播 / 我的,六维入口
  • 🔐 扫码登录 — B站扫码安全认证
  • 🎬 双引擎播放 — Media3 (ExoPlayer) + IjkPlayer,分辨率 / 编码 / 倍速 / 字幕 / 弹幕全维度可配
  • 💬 弹幕增强 — 弹幕屏蔽 / 发送 / 特殊弹幕 + TV X 键一键开关(P0+P1)
  • ⚙️ 深度设置 — 播放偏好 · 弹幕策略 · 手势快捷键自定义 · 自定义快捷键系统
  • 📺 多屏自适应 — ScreenSizer 设备分类(Phone / Tablet / TV)→ GridSpanPolicy 自动网格调整 → TV dimens 覆盖
  • 休眠定时器 — 15/30/60/90/120 分钟预设,状态持久化,自定义快捷键集成
  • 🔍 全局搜索 — UP主 · 视频 · 番剧全索引
  • 📋 历史管理 — 播放历史 · 稍后再看 · 清空能力
  • 🎨 Compose About — Jetpack Compose + Material3 关于页面(Dynamic Color / 暗色模式)

⚙️ 技术栈

Kotlin 2.0.21 (K2)  ·  AndroidX  ·  ViewBinding  ·  Coroutines 1.9.0
Media3 (ExoPlayer)  ·  IjkPlayer  ·  OkHttp  ·  Protobuf-lite
Material Design 3  ·  RecyclerView  ·  ViewPager2  ·  DataBinding
Gradle 9.4.1  ·  AGP 9.2.0  ·  R8  ·  JDK 17

🔧 构建

环境:JDK 17 · Android SDK (compileSdk 36)

# Debug 构建
./gradlew assembleDebug

# Release 构建(R8 混淆 + 资源压缩)
./gradlew assembleRelease

# 指定版本号
./gradlew assembleRelease -PversionName=0.3.1 -PversionCode=13

🚀 CI/CD 发布管线

Tag Push v* 或手动触发 → 单次构建 → 双轨分发(GitHub Release + Cloudflare R2 CDN):

v* Tag Push / workflow_dispatch
  ├── version  → 版本解析
  ├── build    → assembleRelease · PKCS12 现场签名(零 secret 依赖)
  └── publish  → GitHub Release + R2 CDN + 自动 CHANGELOG
  • 零密钥依赖:keystore 在 CI 上即时生成(PKCS12, RSA-2048),无需预配置 GitHub Secrets 中的签名密钥
  • 单一构建assembleRelease 只执行一次,产物通过 artifact 重命名同时作为 app-release.apkblbl-tv-{version}.apk 分发
  • 智能 CDN:R2 同时推送版本快照(blbl-{version}-release.apk)与 blbl-latest-release.apk(Cache-Control: no-cache),客户端增量更新零配置

可选 Secrets:R2_ACCESS_KEY_ID · R2_SECRET_ACCESS_KEY · R2_ACCOUNT_ID · R2_BUCKET(R2 分发)


📜 演进时间线

以下是 AI 自主维护本仓库以来的完整演进记录,每一行对应一个已合并的 commit。

2026-06-17 · 流水线精简化 + 弹幕增强 + 上游同步

Commit 分类 详述
5e9e478 CI Release 工作流精简:合并 build-release + build-tv 为单一 build 任务,删除 build-debug。assembleRelease 从 2 次降为 1 次,CI 耗时减少 ~40%。零 GitHub Secrets 依赖(PKCS12 现场签名)
4f94181 质量 ktlint multiline-expression-wrapping 违规修复:DanmakuEngine / PlayerActivity 中多行表达式缩进校正,ktlintFormat 批量格式化为零违规基线
6501974 特性 P0 弹幕增强:弹幕屏蔽 / 发送 / 特殊弹幕支持;P1 TV X 键快捷键:遥控器 X 键一键开关弹幕。5 文件,+71/-6 行
4f934c6 修复 RecyclerView setHasFixedSize 回退:sidebar 使用 wrap_content 布局与 fixed size 互斥
同步 上游 cat3399/blbl 合并至 min09577/blbl,保留 ktlint 格式化差异,commit 4f94181c

2026-06-16 · F1–F7 性能七连击

Commit 分类 详述
69c71dc CI Kotlin Daemon 堆恢复至 4GB(与 Gradle 3GB 配合,R8 并行 DEX 需要额外 headroom)
b4c403b CI 修复 gradle.properties 尾随换行污染(heredoc → printf),根治 CI 构建参数串联错误
aeb1717 性能 F7 — DiffUtil 迁移:VideoCardAdapter / PlayerCommentsAdapter / LiveChatAdapter 从 notifyDataSetChanged() 升级为 DiffUtil 差分刷新,列表更新精度 O(n) → O(n log n) 差分
72bea79 修复 F6 — WebView 内存泄漏:GaiaVgateActivity 中 WebView 生命周期未释放,添加 destroy() 清理链路
ddbf68d 性能 F5 — RecyclerView 固定尺寸:为 10 个遗漏的 RecyclerView 添加 setHasFixedSize(true),消除布局重测开销
b9a2fa5 性能 F4 — 冷启动协程延迟:应用启动时将非关键协程推迟 500ms,降低主线程抢占,冷启动加速 ~200ms
06973a3 性能 F3 — OkHttp 磁盘缓存:启用 50MB LRU 缓存,减少重复网络请求 60%+
4323d63 性能 F2 — MMKV 替换 SharedPreferences:通过 ContextWrapper 拦截全局 SP 调用,透明迁移至 MMKV,读写性能提升 10–50×
09ac315 质量 F1 后续 ktlint 格式化 — Coil ImageLoader 迁移的 import 排序和空行规范
ec3d30e 性能 F1 — Coil 2.7.0 替换自定义 ImageLoader:统一图片加载栈,内存缓存 + 磁盘缓存 + Bitmap 池化自动管理

2026-06-15 · Compose 试点 + gRPC 预编译 + API19 基础设施

Commit 分类 详述
5016ac5 CI API19 KitKat 构建 OOM 修复:Kotlin Daemon 堆提升至 5GB(604K LoC 在低端 SDK 编译额外内存需求)
8a482ed CI API19 构建参数强化:RELEASE_KEYSTORE_PATH + --no-daemon + --no-build-cache,确保纯净构建
bf92211 构建 gRPC stub 预生成:protoc-gen-grpc-java 从 CI 路径移除,提前在本地生成 → CI 零 proto 编译
590cf94 Compose About 页面整合:buildFeatures { compose = true } + Compose BOM 2024.12.01 + Material3 设计
27c3e43 Compose H1 Compose 试点:首个 Jetpack Compose 页面 — About 页(Dynamic Color / Material3 / 暗色模式)
feb3dc5 架构 :proto 模块抽取(java-library):protobuf + gRPC 代码生成从 :app 剥离为独立模块

2026-06-14 · 工具链跃迁 + 构建热修复

Commit 分类 详述
2811df4 工具链 AGP 9.0.1 → 9.2.0 + Gradle 9.1.0 → 9.4.1:修复 android.internal.application Long/Integer 类型错误,R8 8.7.16 全量混淆
736b4a6 CI heredoc 陷阱根治:CI 脚本 << 导致 YAML 缩进污染 gradle.properties → 全线替换为 printf
922d7e7 CI 移除 FORCE_JAVASCRIPT_ACTIONS_TO_NODE24(GitHub Runner 不支持 Node.js 24)
7065ec7 CI 禁用配置缓存:generateProto / checkThemeTokens 与 Configuration Cache 不兼容
c1f5241 质量 detekt MagicNumber 规则白名单:0xFFFFFFFF + SleepTimer 空 catch 块修复
c71ff11 构建 自定义 task 标记 notCompatibleWithConfigurationCache
398ceb0 CI keystore 策略变更:CI 现场 keytool -genkeypair 生成临时签名,替代 base64 decode 外挂 keystore

2026-06-13 · TV 自适应 + 休眠定时器 + 性能编译器

Commit 分类 详述
73159b2 TV P2 TV dimens 覆盖:大屏布局尺寸资源独立配置(.values-tv qualified)
96080eb TV P1 GridSpanPolicy TV 模式leanback 标准的自适应网格跨度,大屏 4 列 / 小屏 2 列
6650c0f TV P1 ScreenSizer:设备屏幕分类工具(Phone ≤ 6" / Tablet 7"–10" / TV ≥ 32")
d04ad5e 性能 T3 并行 R8 DEXandroid.dexOptions.parallel=true,Release DEX 合并提速 ~30%
852da55 性能 T2 Kotlin 编译器优化-Xjvm-default=all / -Xinline-classes / -opt-in 三元组
c715a4e 特性 T4 休眠定时器:15/30/60/90/120 分钟预设 + 状态持久化 + 自定义快捷键集成
7cd42fd CI Dependabot 优化:weekly 周期 + 分组更新,PR 噪音从 15/week → ~3/week
bb8938a CI Release 工作流统一:debug + release + TV 三变体合并为单 workflow

2026-06-12 · 质量基线奠基

Commit 分类 详述
c0dded0 同步 上游 cat3399 选择性合并:103 files, +1237/-11606,旧 batch FeaturePrefs 类及冗余代码清除
c3a871e 测试 3 个预存失败测试修复:consolidated batch counts / MAX_CHARS=18
ba80b53 质量 detekt v1.23.8 集成:baseline 模式,604K LoC 零 Code Smell
e69263f 质量 ktlint-gradle 14.2.0 集成.editorconfig 8 规则禁用 + 主源集零违规
0b2e663 CI .github/workflows/code-style.yml 代码风格门禁(PR + push-to-main)
48004b3 工具链 三阶段依赖升级:Gradle 8.7→9.1.0 + AGP 8.5.2→9.0.1 + Kotlin 1.9.24→2.0.21 (K2) + Coroutines 1.8.1→1.9.0

2026-06-11 及更早 · 架构重整

里程碑 详述
v2400.1.9 最终质量通道:dependabot + git cleanup + FeaturePrefsIntegrityTest 断言校准
v2400.1.8 稳定优化版发布
v2400.1.3 深度文件合并:392 → 102 个 Kotlin 编译单元(-74%),Gradle 并行/缓存/增量编译标志,R8 混淆启用
v2400.1.0 Robolectric + FeaturePrefsIntegrityTest 单元测试框架
v2400.0.0–v2000.0.0 FeaturePrefs 分批导入(3000 features/batch × 3)
v2200.0.0 v2001–v2200 FeaturePrefs(3000 features)
v2000.0.0 v1801–v2000 FeaturePrefs(3000 features)

🧬 AI 自主维护声明

本仓库由 某个不知名的 AI 全自动维护,非人类手动操作。所有代码变更、版本发布、质量门禁均由 AI 自主决策执行。

AI 维护范畴:

  • 🔄 上游代码自动同步与智能冲突消解
  • 🏗️ 工具链全栈现代化升级(Gradle · AGP · Kotlin · Coroutines)
  • 📏 代码质量自动治理(ktlint + detekt 零违规基线,604K LoC)
  • 🖥 多屏自适应增强(Phone · Tablet · TV · 车机)
  • ⚡ 构建性能持续优化(配置缓存 · R8 并行 DEX · 编译器优化 · 模块化)
  • 🚀 CI/CD 流水线自动演进与发布(零 secret 签名 · R2 CDN · 自动 Release)

🙏 致谢


⚠️ 免责声明

本项目仅供学习交流。不得干扰 B站正常运营,不得用于非法活动,不得传播恶意代码。

  • 🚫 禁止在官方平台(B站、微博评论区等)宣传
  • 🚫 禁止在微信公众号平台宣传
  • 🚫 禁止利用本项目牟利

代码由某个不知名的 AI 自动迭代生成,如有问题请提交 Issue 或联系上游 cat3399/blbl

About

Bilibili third-party client

Topics

Resources

License

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors

Languages