☰
如何从零构建NuvioTV源码:full与Play Store双构建的完整开发者指南
2026/10/2 6:51:33 网站建设 项目流程

如何从零构建NuvioTV源码:full与Play Store双构建的完整开发者指南

【免费下载链接】NuvioTVOfficial Nuvio Android TV Repository项目地址: https://gitcode.com/gh_mirrors/nu/NuvioTV

NuvioTV 是一款免费开源的 Android TV 媒体库应用,支持"自带源"(BYOS),把影视源自动变成带海报、评分、字幕和播放进度的媒体库。这篇指南带你从零完成 NuvioTV 源码构建:了解双构建变体差异、配置环境,并用一条 Gradle 命令产出你的第一个 APK。

一、NuvioTV 技术栈速览:构建前先认识它

在动手之前,先了解 NuvioTV 源码由什么构成,这会直接决定你的构建环境要求:

技术说明
Kotlin 2.3.0主力开发语言
Jetpack Compose + TV Material 3声明式 UI,专为电视遥控器交互设计
Media3 (ExoPlayer)播放引擎,项目内置了 本地 AAR 引擎库(AV1、MPEG-H、IAMF、FFmpeg 解码器)
Gradle 8.13 / AGP 8.13.2构建工具链,详见 gradle/wrapper/gradle-wrapper.properties
minSdk 24 / targetSdk 36覆盖 Android 7.0 至最新系统

所有依赖版本统一维护在 gradle/libs.versions.toml 中,工程结构由 settings.gradle.kts 定义,共三个模块:

  • :app—— 主应用
  • :baselineprofile—— Baseline Profile 性能基线生成器
  • :ffmpeg-decoder-downmix—— 可选的本地 FFmpeg 解码器模块

二、构建环境准备:3 件事先做好 ✅

  1. 安装 Android Studio(含 Android SDK Platform 36、NDK 29.0.14206865、CMake 3.22.1)
  2. JDK 11+—— 项目 Java/Kotlin 编译目标均为 11
  3. Git—— 用于拉取源码

💡 无需手动配置 NDK:只要开启 DOVI 原生构建(默认开启),CMake 会自动编译 Dolby Vision 桥接库,配置见 app/src/main/cpp/CMakeLists.txt。

三、获取 NuvioTV 源码:clone 仓库只需两行

打开终端,执行:

git clone https://gitcode.com/gh_mirrors/nu/NuvioTV cd NuvioTV

进入项目后,建议先复制一份本地配置模板:

cp local.example.properties local.properties

local.example.properties 是项目提供的配置模板,包含 Supabase 后端地址、Trakt/SimKL/MDBList 客户端 ID 等。首次构建即使留空占位值也能正常编译,相关字段只是注入到 BuildConfig 中,可按需再填写。

四、full 与 playstore:双构建变体到底差在哪

NuvioTV 采用产品风味(Product Flavor)实现一份源码、两种分发,核心定义在 app/build.gradle.kts:

对比项full 变体playstore 变体
包名com.nuvio.tvcom.nuvio.app
插件系统(QuickJS + CloudStream)✅ 开启❌ 关闭
应用内自动更新✅ 开启❌ 关闭
应用内预告片✅ 开启❌ 关闭
外部播放保活服务✅ 开启❌ 关闭
自定义服务器连接✅ 开启❌ 关闭
Leanback 特性不强制强制要求

两个变体在功能之外的差异同样讲究:

  • 依赖差异:full 变体额外引入 QuickJS 脚本引擎、CloudStream 插件库、Jackson、NiceHttp 等(见 app/build.gradle.kts),用于在设备端运行第三方扩展插件;playstore 变体则全部剔除,包体更小。
  • 权限差异:playstore 变体通过 app/src/playstore/AndroidManifest.xml 移除了"安装未知应用""前台服务"等权限,并删除保活 Service,以符合商店审核规范。
  • 代码差异:每个变体有独立源集,如 full 的 PluginManager.kt 是真正的插件管理器,而 playstore 的 同名文件 是不含插件能力的桩实现。

📌 新手建议:本地开发选full 变体,功能最全,方便调试插件与更新逻辑;面向商店分发时才选 playstore。

五、最快构建方法:一条 Gradle 命令搞定

仓库自带 Gradle Wrapper,无需本机安装 Gradle。常用构建命令如下:

# full 变体 Debug APK(最常用,本地开发首选) ./gradlew :app:assembleFullDebug # playstore 变体 Debug APK ./gradlew :app:assemblePlaystoreDebug # full 变体 Release APK(需要签名配置) ./app:assembleFullRelease 2>/dev/null || ./gradlew :app:assembleFullRelease # playstore 变体 AAB(提交 Play Store 用) ./gradlew :app:bundlePlaystoreRelease

产物在哪里?构建完成后,APK 位于:

app/build/outputs/apk/{full,playstore}/{debug,release}/

几个值得注意的细节:

  • ABI 分包:Release 构建默认按arm64-v8a、armeabi-v7a、x86、x86_64四种架构分包,并额外生成一个 universal 全架构包(见 app/build.gradle.kts),而 AAB 构建则不做分包。
  • 签名:Debug 构建复用 release 签名配置,CI 环境可通过环境变量CI_USE_DEBUG_SIGNING=true切换为调试签名。
  • Dolby Vision:DOVI_NATIVE_ENABLED=true(默认)时,构建过程会把 DV7/libdovi/ 中预编译的各架构静态库链接进dovi_bridge原生库,实现杜比视界 Profile 7 → 8.1 转换。

六、进阶:两个可选构建开关

在local.properties中按需修改:

  • USE_LOCAL_FFMPEG_DECODER=false(默认)——使用预编译 FFmpeg 解码器 AAR;设为true时改为构建 ffmpeg-decoder-downmix/ 本地模块,需要额外指定 FFmpeg 源码与构建目录。
  • DOVI_NATIVE_ENABLED/DOVI_ENABLE_REAL_LINK—— 控制杜比视界原生桥接是否编译及是否链接真实 libdovi,找不到静态库时会自动降级为 stub 模式,不会中断构建。

七、项目结构导航:源码都藏在哪

NuvioTV/ ├── app/ │ ├── src/main/ # 公共主代码(播放器、同步、Debrid、插件框架等) │ ├── src/full/ # full 变体专属代码(插件、自动更新) │ ├── src/playstore/ # playstore 变体专属代码(桩实现、清单裁剪) │ ├── src/main/cpp/ # DOVI 原生桥接(CMake 构建) │ └── libs/ # Nuvio 引擎与解码器本地 AAR ├── baselineprofile/ # Baseline Profile 生成模块 ├── ffmpeg-decoder-downmix/# 可选本地 FFmpeg 解码器 ├── DV7/libdovi/ # 预编译 libdovi 静态库(4 种架构) └── docs/ # 架构与设计文档

如果你想深入理解某块功能,架构文档 docs/architecture/mdblist-library.md 是不错的起点;应用入口从 MainActivity.kt 开始读即可。

八、总结:你的第一个 NuvioTV APK 只需要 3 步 🎉

  1. 安装 Android Studio(含 SDK 36 + NDK + CMake),准备 JDK 11+
  2. git clone https://gitcode.com/gh_mirrors/nu/NuvioTV && cd NuvioTV
  3. ./gradlew :app:assembleFullDebug

构建成功后,把app/build/outputs/apk/full/debug/下的 APK 传到你的 Android TV 或电视模拟器上安装,NuvioTV 的完整源码之旅就从这里正式开始。祝你构建顺利!

【免费下载链接】NuvioTVOfficial Nuvio Android TV Repository项目地址: https://gitcode.com/gh_mirrors/nu/NuvioTV

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询