BTTV安卓版开发者指南:从源码编译到自定义构建全攻略
BTTV安卓版开发者指南:从源码编译到自定义构建全攻略
【免费下载链接】bttvA mod of the Twitch Android Mobile App adding BetterTTV, FrankerFaceZ and 7TV emotes项目地址: https://gitcode.com/gh_mirrors/bt/bttv
BTTV安卓版是一个为Twitch安卓移动应用添加BetterTTV、FrankerFaceZ和7TV表情的修改版本。这个开源项目让开发者可以自定义构建自己的Twitch客户端,添加更多有趣的功能和表情支持。本文将为你提供完整的开发者指南,帮助你从零开始编译和自定义构建BTTV安卓版应用。
🚀 项目架构与工作原理
BTTV安卓版的构建过程基于对官方Twitch应用的修改。整个项目采用模块化设计,主要分为两个核心部分:
核心架构解析
项目包含三个主要模块:
- app模块- 包含修改的核心逻辑,位于
mod/app目录 - twitch模块- 包含Twitch类的存根,位于
mod/twitch目录 - consumer模块- 用于恢复某些混淆方法,位于
mod/consumer目录
构建流程详解
构建过程遵循以下步骤:
- 提取官方Twitch应用的APK文件
- 将.dex文件转换为可编辑的.smali代码
- 编译自定义Java类并添加到包中
- 修改现有的smali文件(通过patch文件)
- 重新构建并签名APK文件
🛠️ 环境准备与快速开始
必备工具清单
| 工具 | 环境变量 | 默认路径 |
|---|---|---|
| Bash | 必须在/bin目录 | - |
| Git | 必须在PATH中 | - |
| Java JDK | JAVA_PATH和JAVAC_PATH | java和javac |
| jq | 必须在PATH中 | - |
| Android SDK | BUILDTOOLS_PATH | ~/Android/Sdk |
| ApkTool | APKTOOL_PATH | /opt/apktool/apktool.jar |
| Uber APK Signer | UBER_APK_SIGNER_PATH | /opt/uber-apk-signer/uber-apk-signer-1.2.1.jar |
| Baksmali | BAKSMALI_PATH | /opt/baksmali/baksmali-2.4.0.jar |
| build-companion | BUILD_COMPANION | /opt/build-companion |
Docker快速构建方法(推荐新手)
如果你不熟悉Android逆向工程,推荐使用Docker方式进行构建:
克隆项目仓库
git clone https://gitcode.com/gh_mirrors/bt/bttv cd bttv获取官方Twitch应用APK
- 从可靠来源下载Twitch 19.0.1版本的APK文件
- 如果是单个
.apk文件,重命名为twitch.apk - 如果是多个APK文件,放入ZIP压缩包并重命名为
twitch.zip
运行Docker构建器
docker run --rm -ti \ -v $(pwd)/twitch.apk:/usr/build/twitch.apk \ -v $(pwd)/.bttv-cache:/usr/build/.bttv-cache \ -v $(pwd)/dist:/usr/build/dist \ -v $(pwd)/patches:/usr/build/patches \ -v $(pwd)/mod:/usr/build/mod \ -v $(pwd)/.all-contributorsrc:/usr/build/.all-contributorsrc \ -v $(pwd)/bttv.manifest.json:/usr/build/bttv.manifest.json \ ghcr.io/bttv-android/builder获取构建结果构建完成后,
dist目录将包含修补后的APK文件,可以直接安装到Android设备上。
🔧 手动构建详细步骤
步骤1:初始化工作空间
- 下载并安装所有必备工具
- 获取Twitch应用的APK文件(建议使用adb方式)
- 运行初始化脚本:
./initworkspace
这个脚本会自动解压APK文件,反编译为smali代码,构建源码并应用monkey patches。
步骤2:构建Java源代码
使用以下命令构建Java源代码:
./buildsource disass该命令会自动将类文件dex化并进行baksmali处理。建议先浏览脚本内容,以便设置正确的环境变量。
步骤3:构建修改后的应用
构建你的修改:
./build disass步骤4:安装到设备
打开模拟器或连接Android设备,然后运行:
./install📁 项目目录结构解析
了解项目结构对于开发者至关重要:
bttv/ ├─ initworkspace - 初始化工作空间 ├─ buildsource - 构建Java源代码 ├─ build - 重新组装disass目录 ├─ decompile - 使用JADX进行反编译 ├─ install - 在设备上安装构建结果 ├─ patches/ - 包含monkey patches ├─ genmonke - 基于disass生成patch的脚本 ├─ disass/ - 反编译目录 │ ├─ AndroidManifest.xml │ ├─ res/ - 资源文件 │ ├─ smali_classes0-10/ - 反编译的app + bttv代码 │ ├─ dist/ │ │ ├─ twitch.apk - 最终的应用 ├─ mod/ - patch的Java源代码 │ ├─ app/ - 修改的核心逻辑 │ ├─ twitch/ - Twitch类的存根🔄 修改与贡献指南
仅修改源代码
如果你只需要修改Java源代码:
- 在
mod/app目录下进行修改 - 提交你的代码
- 发起Pull Request
重要提示:请仅在bttv包内修改或添加Java文件!其他位置的修改不会被编译。
修改Monkey Patches
如果需要修改smali文件(不在bttv包中):
- 在
extracted目录中直接编辑smali文件 - 运行以下命令生成patch:
./genmonke disass - 提交修改前运行上述命令
Patch系统工作原理
初始化时,disass目录会初始化为一个空的git仓库。反编译完成后会创建第一个commit并标记为"base"。patch文件就是master和base之间的diff结果。
🎯 核心功能开发
表情系统集成
BTTV安卓版支持三种主要表情系统:
- BetterTTV表情- 通过
patches/emotes/目录下的patch文件实现 - FrankerFaceZ表情- 集成在聊天消息处理逻辑中
- 7TV表情- 通过自定义的Emote API实现
自动功能开发
项目包含多个实用功能:
- 自动领取频道点数- 位于
patches/autoredeem/目录 - 睡眠定时器- 位于
patches/sleeptimer/目录 - 关键字高亮- 通过聊天消息处理逻辑实现
- 匿名聊天- 位于
patches/anonchat/目录
🐛 调试与问题排查
常见问题解决
- 构建失败:检查所有必备工具是否正确安装
- APK签名问题:确保Uber APK Signer配置正确
- 反编译错误:确认使用的是Twitch 19.0.1版本APK
- 运行时崩溃:检查日志中的具体错误信息
调试技巧
- 使用
adb logcat查看实时日志 - 在
mod/app/src/中添加调试日志 - 使用Android Studio连接调试器
📈 最佳实践与贡献规范
代码组织建议
- 保持模块化:将相关功能组织在同一个包中
- 错误处理:所有API调用都应包含try-catch块
- 日志记录:重要操作添加适当的日志输出
- 代码复用:避免重复代码,创建工具类
贡献流程
- Fork项目仓库
- 创建功能分支
- 进行修改和测试
- 提交Pull Request
- 等待代码审查
法律与合规注意事项
⚠️重要提醒:
- 本项目与Twitch Interactive Inc、NightBot LLC、Dan Salvato LLC或SevenTV项目无关
- 软件按"原样"提供,不提供任何担保
- 请勿将disass目录提交到git仓库中(出于法律原因)
🔮 未来发展方向
BTTV安卓版项目持续发展,未来可能的方向包括:
- 支持更多第三方表情平台
- 增强自定义主题功能
- 改进性能优化
- 添加更多实用工具功能
🤝 加入社区
项目拥有活跃的开发者社区,你可以在Crowdin上贡献翻译,或在GitHub上提交Issue和Pull Request。
通过本文的指南,你应该已经掌握了BTTV安卓版的完整构建流程和开发方法。无论是想要自定义自己的Twitch客户端,还是为项目贡献代码,现在都可以自信地开始你的开发之旅了!记住,开源项目的成功离不开社区的贡献,期待看到你的创意和代码!🚀
【免费下载链接】bttvA mod of the Twitch Android Mobile App adding BetterTTV, FrankerFaceZ and 7TV emotes项目地址: https://gitcode.com/gh_mirrors/bt/bttv
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
