当前位置: 首页 > article >正文

Tubular部署与配置教程:从源码编译到F-Droid发布的完整流程

Tubular部署与配置教程从源码编译到F-Droid发布的完整流程【免费下载链接】TubularA fork of NewPipe that implements SponsorBlock and ReturnYouTubeDislike.项目地址: https://gitcode.com/gh_mirrors/tu/TubularTubular是一款基于NewPipe开发的增强型开源YouTube客户端它集成了SponsorBlock和ReturnYouTubeDislike两大实用功能为用户提供更纯净的观看体验。本教程将详细介绍如何从源码编译Tubular应用并完成F-Droid发布的完整流程帮助开发者快速上手这个强大的Android视频应用。 Tubular项目概述Tubular是NewPipe的一个分支版本继承了NewPipe的所有隐私保护特性同时增加了SponsorBlock自动跳过赞助片段和ReturnYouTubeDislike恢复YouTube点踩数据功能。与NewPipe一样Tubular不使用任何Google框架库或YouTube API仅通过解析网站获取所需信息因此可以在没有Google服务的设备上运行。核心优势✅ 完全开源GPLv3许可证✅ 无需YouTube账户✅ 无Google服务依赖✅ 内置广告拦截✅ 支持后台播放️ 环境准备与依赖安装系统要求操作系统Windows 10/11、macOS 10.15 或 LinuxUbuntu 20.04推荐内存至少8GB RAM存储空间至少10GB可用空间Java版本JDK 17或更高版本Android SDKAPI 21-35必备工具安装安装Git# Ubuntu/Debian sudo apt install git # macOS brew install git # Windows # 从 https://git-scm.com/ 下载安装安装Android Studio从Android Studio官网下载安装安装时选择Standard安装类型确保安装Android SDK Platform 35和Build Tools配置Java开发环境# 检查Java版本 java -version # 如果未安装JDK 17安装OpenJDK # Ubuntu/Debian sudo apt install openjdk-17-jdk # macOS brew install openjdk17 获取源码与项目结构克隆Tubular仓库git clone https://gitcode.com/gh_mirrors/tu/Tubular.git cd Tubular项目目录结构解析Tubular/ ├── app/ # 主应用模块 │ ├── src/main/java/ # Java/Kotlin源代码 │ ├── src/main/res/ # 资源文件 │ └── build.gradle.kts # 模块构建配置 ├── gradle/ # Gradle配置 ├── fastlane/ # 自动化发布配置 └── settings.gradle.kts # 项目设置关键源码位置SponsorBlock相关代码app/src/main/java/org/schabi/newpipe/fragments/list/sponsorblock/ReturnYouTubeDislike设置app/src/main/java/org/schabi/newpipe/settings/ReturnYouTubeDislikeSettingsFragment.java应用主配置app/src/main/AndroidManifest.xml 编译与构建流程1. 配置构建环境# 设置Java环境变量如果需要 export JAVA_HOME/path/to/jdk-17 export PATH$JAVA_HOME/bin:$PATH # 检查Gradle版本 ./gradlew --version2. 同步项目依赖# 同步Gradle依赖首次运行需要较长时间 ./gradlew build --refresh-dependencies3. 编译调试版本APK# 编译调试版本 ./gradlew assembleDebug # 编译结果位于 # app/build/outputs/apk/debug/app-debug.apk4. 编译发布版本APK# 生成签名密钥首次需要 keytool -genkey -v -keystore my-release-key.jks \ -keyalg RSA -keysize 2048 -validity 10000 \ -alias my-alias # 编译发布版本 ./gradlew assembleRelease # 编译结果位于 # app/build/outputs/apk/release/app-release.apk构建配置详解查看app/build.gradle.kts文件了解关键配置android { compileSdk 36 namespace org.schabi.newpipe defaultConfig { applicationId org.polymorphicshade.tubular minSdk 21 targetSdk 35 versionCode 1009 versionName 0.28.4 } } 应用功能配置与定制SponsorBlock配置Tubular内置了SponsorBlock功能支持以下赞助片段类型赞助内容广告和推广内容自我介绍YouTuber自我介绍部分互动提醒点赞、订阅提醒片尾视频结尾部分预览视频预览片段配置位置app/src/main/res/xml/sponsor_block_settings.xmlReturnYouTubeDislike集成通过ReturnYouTubeDislikeSettingsFragment.java文件配置API端点恢复YouTube的点踩数据展示功能。多语言支持Tubular支持超过100种语言语言文件位于app/src/main/res/values-zh-rCN/strings.xml简体中文app/src/main/res/values-zh-rTW/strings.xml繁体中文app/src/main/res/values-ja/strings.xml日语 F-Droid发布流程1. 准备发布材料应用截图存储在fastlane/metadata/android/en-US/images/phoneScreenshots/00.png - 主界面01.png - 视频播放界面02.png - 订阅管理03.png - 设置界面04.png - SponsorBlock配置应用描述fastlane/metadata/android/en-US/full_description.txt- 完整描述fastlane/metadata/android/en-US/short_description.txt- 简短描述版本变更日志fastlane/metadata/android/en-US/changelogs/- 各版本变更记录2. 生成F-Droid元数据# 使用fastlane生成元数据 fastlane supply init # 上传元数据到F-Droid fastlane supply --apk app/build/outputs/apk/release/app-release.apk \ --track production \ --json_key /path/to/service-account-key.json3. 版本号管理在app/build.gradle.kts中更新版本信息defaultConfig { versionCode 1010 # 递增版本代码 versionName 0.28.5 # 更新版本名称 }4. 签名配置为F-Droid发布配置签名# 在gradle.properties中添加 RELEASE_STORE_FILEmy-release-key.jks RELEASE_STORE_PASSWORDyour_store_password RELEASE_KEY_ALIASyour_key_alias RELEASE_KEY_PASSWORDyour_key_password 调试与测试单元测试# 运行所有测试 ./gradlew test # 运行特定测试 ./gradlew test --tests *SponsorBlock*代码质量检查# 运行Checkstyle代码规范检查 ./gradlew checkstyleMain # 运行Lint检查 ./gradlew lintDebug调试技巧启用调试日志在Android Studio中设置断点查看数据库使用Android Device Monitor查看SQLite数据库网络请求调试使用Charles或Fiddler捕获网络请求 性能优化建议构建优化# 启用构建缓存 ./gradlew build --build-cache # 并行构建 ./gradlew build --parallel # 配置守护进程 org.gradle.daemontrue org.gradle.paralleltrue org.gradle.cachingtrue应用优化图片资源优化使用WebP格式替代PNG代码混淆启用ProGuard或R8优化资源压缩使用Android Bundle减少APK大小️ 安全注意事项签名安全妥善保管签名密钥文件.jks不要在版本控制中提交密钥文件使用环境变量存储密码权限管理Tubular仅请求必要权限INTERNET- 网络访问WRITE_EXTERNAL_STORAGE- 下载视频FOREGROUND_SERVICE- 后台播放隐私保护不收集用户数据不连接Google服务器本地存储所有数据 持续集成与自动化GitHub Actions配置示例name: Build and Test on: [push, pull_request] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkoutv3 - name: Set up JDK 17 uses: actions/setup-javav3 with: java-version: 17 - name: Build with Gradle run: ./gradlew build自动化发布流程版本发布自动递增版本号APK构建自动编译发布版本测试运行自动运行所有测试F-Droid提交自动提交到F-Droid仓库 常见问题解决构建失败问题Gradle同步失败删除.gradle目录重新同步依赖下载超时配置国内镜像源内存不足增加Gradle堆内存org.gradle.jvmargs-Xmx4096M运行时问题SponsorBlock不工作检查网络连接和API配置视频无法播放更新NewPipe Extractor依赖应用崩溃查看Logcat日志定位问题发布问题F-Droid审核失败确保所有开源许可证正确签名验证失败检查签名配置和密钥文件版本冲突确保versionCode唯一递增 总结与进阶Tubular作为一个功能丰富的NewPipe分支为Android用户提供了无广告、隐私友好的YouTube观看体验。通过本教程您已经掌握了✅环境配置- 搭建完整的开发环境✅源码编译- 从源码构建APK文件✅功能定制- 配置SponsorBlock和ReturnYouTubeDislike✅发布流程- 准备F-Droid发布材料✅调试技巧- 解决常见开发问题进阶学习方向贡献代码参与Tubular开源项目开发功能扩展添加新的视频平台支持性能优化改进应用启动速度和内存使用UI改进设计更美观的用户界面通过掌握Tubular的完整开发流程您不仅可以为自己的设备定制专属的YouTube客户端还可以为开源社区贡献力量让更多人享受到无广告、隐私保护的视频观看体验。资源链接项目文档查看doc/目录中的多语言README构建配置参考gradle/目录下的配置文件界面设计查看app/src/main/res/layout/中的布局文件多语言支持参考app/src/main/res/values-*/中的字符串资源现在就开始您的Tubular开发之旅打造属于自己的完美视频播放器吧【免费下载链接】TubularA fork of NewPipe that implements SponsorBlock and ReturnYouTubeDislike.项目地址: https://gitcode.com/gh_mirrors/tu/Tubular创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关文章:

Tubular部署与配置教程:从源码编译到F-Droid发布的完整流程

Tubular部署与配置教程:从源码编译到F-Droid发布的完整流程 【免费下载链接】Tubular A fork of NewPipe that implements SponsorBlock and ReturnYouTubeDislike. 项目地址: https://gitcode.com/gh_mirrors/tu/Tubular Tubular是一款基于NewPipe开发的增强…...

React Adaptive Hooks终极性能指南:如何实现智能自适应加载优化

React Adaptive Hooks终极性能指南:如何实现智能自适应加载优化 【免费下载链接】react-adaptive-hooks Deliver experiences best suited to a users device and network constraints 项目地址: https://gitcode.com/gh_mirrors/re/react-adaptive-hooks Re…...

OpenClaw技能市场挖掘:10个适配Kimi-VL-A3B-Thinking的多模态自动化

OpenClaw技能市场挖掘:10个适配Kimi-VL-A3B-Thinking的多模态自动化 1. 为什么需要为多模态模型定制技能? 当我第一次把Kimi-VL-A3B-Thinking模型接入OpenClaw时,发现一个有趣现象:这个擅长图文理解的多模态模型,在执…...

告别系统臃肿与隐私泄露:Win11Debloat让Windows效率提升80%

告别系统臃肿与隐私泄露:Win11Debloat让Windows效率提升80% 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter a…...

Jetson硬件SSD启动盘配置与CUDA环境搭建全攻略

1. 为什么需要SSD启动盘? Jetson系列开发板(如Nano、Xavier NX等)自带的eMMC存储容量通常只有16GB或32GB,安装完JetPack基础系统后,剩余空间往往不足10GB。对于需要运行深度学习模型、处理大量数据的开发者来说&#x…...

哈夫曼编码实战:从电文压缩到代码实现(附完整Python示例)

哈夫曼编码实战:从电文压缩到代码实现(附完整Python示例) 在数据存储和传输领域,压缩算法始终扮演着关键角色。想象一下,当你需要处理数百万条日志记录,或是传输高分辨率医学影像时,未经压缩的原…...

如何快速构建推荐系统:Learn-Data-Science-For-Free中的协同过滤算法终极指南

如何快速构建推荐系统:Learn-Data-Science-For-Free中的协同过滤算法终极指南 【免费下载链接】datascience This repositary is a combination of different resources lying scattered all over the internet. The reason for making such an repositary is to co…...

10个imaskjs性能优化技巧:大型表单与高频输入场景的终极实践指南

10个imaskjs性能优化技巧:大型表单与高频输入场景的终极实践指南 【免费下载链接】imaskjs vanilla javascript input mask 项目地址: https://gitcode.com/gh_mirrors/im/imaskjs imaskjs是一个功能强大的JavaScript输入掩码库,专为处理表单输入…...

Topeka Android应用终极部署指南:从源码编译到多渠道分发的完整教程

Topeka Android应用终极部署指南:从源码编译到多渠道分发的完整教程 【免费下载链接】topeka A fun to play quiz that showcases material design on Android 项目地址: https://gitcode.com/gh_mirrors/to/topeka Topeka是一款基于Material Design设计理念…...

OpenClaw自动化周报:Qwen3.5-9B-AWQ-4bit整合Git与日历数据

OpenClaw自动化周报:Qwen3.5-9B-AWQ-4bit整合Git与日历数据 1. 为什么需要自动化周报 每周五下午,我的日历总会准时弹出"写周报"的提醒。这个看似简单的任务却总让我头疼——需要翻遍Git提交记录、查日历会议纪要、整理零散的笔记&#xff0…...

C++信号量实战:如何用Semaphore解决多线程打印ABC问题(附完整代码)

C信号量实战:如何用Semaphore解决多线程打印ABC问题(附完整代码) 多线程编程中,同步机制的选择往往决定了程序的性能和可靠性。信号量(Semaphore)作为一种经典的同步原语,在解决特定类型的问题时…...

CRMEB小程序订阅消息配置避坑指南:从PHP环境搭建到消息同步全流程

CRMEB小程序订阅消息配置避坑指南:从PHP环境搭建到消息同步全流程 在当今的小程序生态中,订阅消息已经成为商家与用户互动的重要桥梁。CRMEB作为一款优秀的开源电商系统,与微信小程序订阅消息的集成却常常让开发者踩坑无数。本文将带你从零开…...

别再暴力求素数了!用C++实现埃氏筛和欧拉筛,性能提升百倍(附完整代码)

素数筛法性能优化实战:从暴力枚举到欧拉筛的百倍飞跃 在算法竞赛和工程开发中,素数筛选是一个经典问题。当数据规模达到百万级别时,传统的暴力枚举方法往往力不从心。本文将深入探讨三种素数筛选算法——暴力枚举、埃拉托斯特尼筛法&#xff…...

OpenClaw自动化测试实践:Qwen3.5-9B驱动日志分析与报告生成

OpenClaw自动化测试实践:Qwen3.5-9B驱动日志分析与报告生成 1. 为什么选择OpenClawQwen3.5做测试分析? 去年参与的一个物联网项目让我吃尽了测试日志的苦头——每天要手动分析近千条设备日志,从中筛选异常模式、统计错误类型、整理测试报告…...

视觉障碍辅助:OpenClaw+Phi-3-vision-128k-instruct实时描述周围环境

视觉障碍辅助:OpenClawPhi-3-vision-128k-instruct实时描述周围环境 1. 项目背景与核心需求 去年在帮助一位视障朋友调试智能家居时,我意识到现有环境感知工具存在明显断层——要么是功能单一的"拍照识物"APP,要么是昂贵的企业级…...

Goldpinger完全指南:如何实时可视化Kubernetes节点间网络连接

Goldpinger完全指南:如何实时可视化Kubernetes节点间网络连接 【免费下载链接】goldpinger Debugging tool for Kubernetes which tests and displays connectivity between nodes in the cluster. 项目地址: https://gitcode.com/gh_mirrors/go/goldpinger …...

Arthas实战:5分钟搞定MyBatis Mapper XML热更新(含完整脚本)

Arthas实战:5分钟搞定MyBatis Mapper XML热更新(含完整脚本) 在Java开发中,MyBatis作为一款优秀的持久层框架,其Mapper XML文件的修改往往需要重启应用才能生效。这种开发模式严重影响了开发效率,特别是在测…...

革命性无代码网站构建器Silex:10分钟创建专业静态网站的完整指南

革命性无代码网站构建器Silex:10分钟创建专业静态网站的完整指南 【免费下载链接】Silex Silex is an online tool for visually creating static sites with dynamic data. With the free/libre spirit of internet, together. 项目地址: https://gitcode.com/gh…...

uosc与其他MPV脚本对比:为什么uosc是极简MPV播放器UI的终极选择

uosc与其他MPV脚本对比:为什么uosc是极简MPV播放器UI的终极选择 【免费下载链接】uosc Feature-rich minimalist proximity-based UI for MPV player. 项目地址: https://gitcode.com/gh_mirrors/uo/uosc 在众多MPV播放器UI脚本中,uosc以其独特的…...

OpenClaw开发提效方案:Qwen3-14b_int4_awq辅助日志分析与告警

OpenClaw开发提效方案:Qwen3-14b_int4_awq辅助日志分析与告警 1. 为什么需要AI辅助日志分析 作为一名全栈开发者,我每天要面对数十个微服务的日志文件。最头疼的就是半夜被报警电话吵醒,然后花几个小时在一堆日志中寻找那个导致服务崩溃的关…...

从均值、方差到协方差:拆解SSIM公式,看懂它如何量化图像的亮度、对比度和结构相似性

从均值、方差到协方差:拆解SSIM公式,看懂它如何量化图像的亮度、对比度和结构相似性 当你看到两张几乎相同的照片时,大脑会瞬间判断它们的相似程度。但计算机如何量化这种"看起来像"的感觉?这就是结构相似性指数&#x…...

React-md-editor性能优化:如何提升大型文档编辑体验

React-md-editor性能优化:如何提升大型文档编辑体验 【免费下载链接】react-md-editor A simple markdown editor with preview, implemented with React.js and TypeScript. 项目地址: https://gitcode.com/gh_mirrors/re/react-md-editor React-md-editor…...

OpenClaw汽车保养助手:Qwen2.5-VL-7B解析故障灯照片生成检修指南

OpenClaw汽车保养助手:Qwen2.5-VL-7B解析故障灯照片生成检修指南 1. 为什么需要汽车故障灯智能助手 上周我的车突然亮起了发动机故障灯,黄色警示图标在仪表盘上闪烁。作为一个非专业车主,我面临两个选择:要么花半天时间排队去4S…...

别再死记硬背了!用这5个n8n核心节点,搞定你80%的自动化需求

别再死记硬背了!用这5个n8n核心节点,搞定你80%的自动化需求 每次打开n8n的节点库,就像走进一家琳琅满目的工具超市——HTTP、数据库、AI、邮件、表单...上百种节点让人既兴奋又迷茫。作为过来人,我完全理解那种"每个节点看起…...

Scalatra 异步编程完整指南:构建高性能 Web 服务

Scalatra 异步编程完整指南:构建高性能 Web 服务 【免费下载链接】scalatra Tiny Scala high-performance, async web framework, inspired by Sinatra 项目地址: https://gitcode.com/gh_mirrors/sc/scalatra Scalatra 是一个轻量级、高性能的 Scala Web 微…...

Claude Code 编程哲学正在改变一切:从“理解代码”到“跑通代码”

目录为什么传统 Coding Agent 开始失效向量化代码理解的瓶颈在哪里Claude Code 为什么选择“终端调试范式”CodeGraph:节省 Token,但解决不了核心问题真正的转变:从“看懂代码”到“跑通代码”这套范式对工程实践意味着什么一、为什么传统 Co…...

如何快速掌握Walt Explorer:在线WebAssembly代码编写与调试终极指南

如何快速掌握Walt Explorer:在线WebAssembly代码编写与调试终极指南 【免费下载链接】walt :zap: Walt is a JavaScript-like syntax for WebAssembly text format :zap: 项目地址: https://gitcode.com/gh_mirrors/wa/walt Walt Explorer是一款强大的在线工…...

有能力的已经在投了:这一批AI公司,正在悄悄招人

导读很多人还在盯着互联网大厂,反复刷岗位、反复改简历。但另一批人,已经把简历投向了另一条线——人工智能公司、机器人公司、智能制造公司。这些公司有一个共同点:岗位不多,但含金量极高要求更高,但成长速度更快很多…...

PipelineDB扩展开发指南:如何编写自定义聚合函数

PipelineDB扩展开发指南:如何编写自定义聚合函数 【免费下载链接】pipelinedb High-performance time-series aggregation for PostgreSQL 项目地址: https://gitcode.com/gh_mirrors/pi/pipelinedb PipelineDB作为PostgreSQL的高性能时序聚合扩展&#xff0…...

终极指南:如何利用HTTPS-PORTAL与Docker Gen实现自动HTTPS配置的魔法

终极指南:如何利用HTTPS-PORTAL与Docker Gen实现自动HTTPS配置的魔法 【免费下载链接】https-portal A fully automated HTTPS server powered by Nginx, Lets Encrypt and Docker. 项目地址: https://gitcode.com/gh_mirrors/ht/https-portal HTTPS-PORTAL是…...