Thanks to visit codestin.com
Credit goes to github.com

Skip to content

quicktvui/hippy-tv

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

hippy-tv

hippy-tvquicktvui框架中Native层运行库。它主要工作是对腾讯开源项目 hippy 进行针对电视设备的优化及二次扩展。

graph LR
A[quicktvui] -- run on --> B[quicktvui-sdk]
B -- depends on --> C[hippy-tv]
Loading

ℹ️ quicktvui由三部分组成:quicktvui-sdk(安卓RuntimeSDK)、hippy-tv(基于hippy的tv扩展)、quicktvui(Vue 快应用框架)。 本仓库为核心代码仓库,若需查看完整安卓端运行效果和实际应用示例,请前往 quicktvui-sdk 项目。

⚠️ 目前仅支持Android >= 17 版本设备


功能

  • ✏️ 修改 hippy 部分 API 行为:对底层渲染与事件响应机制进行了适配优化。
  • 🎯 引入焦点系统:支持遥控器方向键导航、焦点记忆、边界控制等,增强 TV 操作体验。
  • 🧾 更快的列表组件:高性能虚拟列表,支持遥控分页滚动和动态渲染。
  • 🧩 完善各类组件模块:补充瀑布流等 TV 常用UI组件

📌 注意!本项目基于 Hippy v2.8.2 版本 Fork,并在此基础上进行 TV 场景定制与功能增强。目前与hippy偏离较大,暂不考虑合并新版hippy后续将会在大版本变动时与hippy最新版本合并。


快速开始

在 Android Studio 中编译

  1. 打开 Android Studio:
  • 启动 Android Studio
  • 选择 "Open an Existing Project"
  1. 选择项目目录:
  • 导航到 hippy-tv 项目的根目录
  • 选择 build.gradle 或 settings.gradle 文件所在目录
  • 点击 "Open"
  1. 同步Gradle:
  • Android Studio 会自动开始同步 Gradle
  • 如果没有自动同步,点击工具栏的 "Sync Project with Gradle Files" 按钮
  1. 编译项目:
  • 同步完成后,打开右侧的 Gradle 面板(View → Tool Windows → Gradle)
  • 导航到项目 → Tasks → build
  • 双击 "build" 任务执行编译
  • 或者,在终端运行:
./gradlew android-sdk:build

发布

第一步:配置本地账号信息

在项目的 hippy-tv/android/sdk/local.properties 文件中添加您自己仓库及账号信息:

MAVEN_REPO_URL_RELEASE=your-repo-url-release
MAVEN_REPO_URL_SNAPSHOT=your-repo-url-snapshot
MAVEN_USERNAME=your-username
MAVEN_PASSWORD=your-password

第二步:配置发布信息

按需修改 hippy-tv/android/sdk/gradle.properties 文件中的发布相关配置:

EXT_JS_ENGINE_LIB=false
NDK_VERSION=21.4.7075529
INCLUDE_SUPPORT_UI=true
INCLUDE_ABI_X86=true
android.useAndroidX=false
#是否动态加载so,如果为true,则不会打包到aar中
ENABLE_SO_DOWNLOAD=true
##需要的so架构,ENABLE_SO_DOWNLOAD为false时生效
INCLUDE_ABI_ARM64_V8A=false
INCLUDE_ABI_ARMEABI=false
INCLUDE_ABI_ARMEABI_V7A=false
INCLUDE_ABI_X86_64=false
COMPILE_SDK_VERSION=29
PUBLISH_ARTIFACT_ID=hippy-tv
MIN_SDK_VERSION=17
ARCHIVES_BASE_NAME=hippy-tv
#打debug版本时,将此行注释掉
V8_RELEASE=x5-lite
V8_TAG=recommend
PUBLISH_VERSION_DESC=Hippy library for Android TV
VERSION_CODE=1
android.enableD8=true
TARGET_SDK_VERSION=29
SKIP_CMAKE_AND_NINJA=false
VERSION_NAME=0.2.0
PUBLISH_GIT_URL=https\://github.com/Tencent/Hippy
#maven groupId
PUBLISH_GROUP_ID=com.quicktvui
#版本提交号
COMMIT=""
#hippy-tv核心版本号,vue会在程序中读取判断部分api是否兼容
CORE_VERSION=0.2.0
INPUT_PREFERENCE=focus

⚠️ debugV8_RELEASE注释掉,将ENABLE_SO_DOWNLOAD改为false,然后按需将各个SO架构的开关打开。 例如:

EXT_JS_ENGINE_LIB=false
NDK_VERSION=21.4.7075529
INCLUDE_SUPPORT_UI=true
INCLUDE_ABI_X86=true
android.useAndroidX=false
#是否动态加载so,如果为true,则不会打包到aar中
ENABLE_SO_DOWNLOAD=false
##需要的so架构,ENABLE_SO_DOWNLOAD为false时生效
INCLUDE_ABI_ARM64_V8A=true
INCLUDE_ABI_ARMEABI=true
INCLUDE_ABI_ARMEABI_V7A=true
INCLUDE_ABI_X86_64=true
COMPILE_SDK_VERSION=29
PUBLISH_ARTIFACT_ID=hippy-tv-debug
MIN_SDK_VERSION=17
ARCHIVES_BASE_NAME=hippy-tv-debug
#打debug版本时,将此行注释掉
#V8_RELEASE=x5-lite
V8_TAG=recommend
PUBLISH_VERSION_DESC=Hippy library for Android TV
VERSION_CODE=1
android.enableD8=true
TARGET_SDK_VERSION=29
SKIP_CMAKE_AND_NINJA=false
VERSION_NAME=0.2.0
PUBLISH_GIT_URL=https\://github.com/Tencent/Hippy
#maven groupId
PUBLISH_GROUP_ID=com.quicktvui
#版本提交号
COMMIT=""
#hippy-tv核心版本号,vue会在程序中读取判断部分api是否兼容
CORE_VERSION=0.2.0
INPUT_PREFERENCE=focus

第三步:执行发布命令

在项目根目录下执行以下 Gradle 命令:

./gradlew android-sdk:publish

或者通过 Android Studio 的 Gradle 面板:

  1. 打开右侧 Gradle 面板
  2. 导航到 hippy-tv → android-sdk → Tasks → publishing
  3. 双击 publish 任务

TODO

高优先级 (High Priority)

  • ✅ 列表组件重构,更方便使用 (即将release)
  • ◻️ 鸿蒙平台适配(HarmonyOS)进行中
  • ◻️ 列表滚动体验优化
  • 🚧 ul组件支持Grid布局
  • ◻️ 更多css样式支持
  • ◻️ 支持svg图片
  • ◻️ 焦点相关API优化
  • ◻️ 组件扩展文档

中优先级 (Medium Priority)

  • ◻️ 合并 Hippy 最新版本

版本说明

本项目采用三段式版本命名规范(即 主版本号.次版本号.修订号),遵循语义化版本原则:

  • 主版本号 (MAJOR):重大变更或不兼容的API修改
  • 次版本号 (MINOR):新增功能且向下兼容
  • 修订号 (PATCH):问题修复或微小改进,完全兼容

版本兼容性指南

版本范围 兼容性说明
1.x.x 同一主版本内保证API兼容性
x.2.xx.3.x 可安全升级,包含新功能
x.x.1x.x.2 强烈建议升级,仅含错误修复

Q&A(常见问题解答)

Q1:Hippy 相对于传统安卓开发有哪些优势?

A:
传统安卓开发存在以下问题:

  • 开发效率低:XML + Java/Kotlin 开发周期长,调试复杂。
  • 无法动态更新:原生代码无法实时修复线上问题。
  • 升级部署慢:需要将APK提交各大应用商店审核后上线,部署周期长。

Hippy 的优势:
前端技术栈:基于 JavaScript/TypeScript,复用 Web 生态(React/Vue),提升开发效率。
动态化能力:js动态语言特性,天然支持动态化,相较于插件化等native更新方式,无论开发还是部署、加载体验都很顺畅。


Q2:Hippy 的性能相较于安卓原生如何?

A:

  • 渲染性能:Hippy 采用 Native 渲染(与 Flutter/React Native 类似),UI 组件最终映射为原生控件,性能接近原生。
  • 瓶颈分析
    • JS 层:Vue/React 的虚拟 DOM 管理可能成为性能瓶颈(尤其在复杂页面)。
    • 通信开销:JS 与 Native 的桥接通信(Bridge)在频繁交互时可能有延迟。
    • 启动速度:相较于原生hippy增加了js引擎启动的时间成本(大部分电视在1S左右),引擎启动之后时间主要与js程序本身,dom少的情况下,与原生相差不大。
  • 优化建议
    • 减少不必要的 DOM 节点(如扁平化组件结构)。
    • 性能敏感模块(如动画、复杂且数量庞大的UI组件)可通过原生实现。
    • 减少频繁的 JS-Native 通信,复杂的通信场景考虑整体用原生实现。

结论:在 DOM 较少的场景下,Hippy 性能与原生基本持平;复杂场景需针对性优化,或者将复杂逻辑用原生实现,性能也能追平原生。


Q3:Hippy 是否支持热更新?

A:
支持!Hippy 的 JS Bundle 可通过 CDN 或服务端动态下发,实现热更新(无需应用商店审核)。


Q4:Hippy 适合哪些业务场景?

A:

  • 高频迭代功能:如活动页、运营弹窗。
  • 动态化要求高:需快速修复线上问题的核心模块。
  • 原生开发增加动态化能力:使原生增加动态化能力,减少发版频率。

Q5:可否原生和hippy结合的方式开发?

A: 可以,这是目前推荐的开发方式。例如将复杂、对性能要求较高的页面、组件利用原生实现,通过js去组织加载,这样既能保证性能,又有了动态化的能力。 目前常见俩种结合的开发方式:

  1. JS为入口: js做为主入口,将复杂的ui组件、模块利用Native实现并提供给hippy调用。
  2. Native为入口:可以将需要动态化的ui模块做为一个jsView当做一个标准View嵌入到Activity当中。

如需更多问题解答,请参考 Hippy 官方文档 或提交 Issue。

贡献

ℹ️ 本项目已成功应用于多个实际 TV 应用中,但整体仍处于快速演进阶段,使用时请注意版本变化。

⚠️ 欢迎你 Fork 本项目,自由修改并根据自身需求进行定制开发。

如你有问题或建议,欢迎通过 Issue 与我们沟通反馈。


开源协议

本项目基于 Apache License 2.0 开源发布。

About

QuickTVUI底层核心库,基于Hippy

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published