📦 Brix 启动器(
com.brix.brixlauncher)反编译恢复源码 —— 可编译工程版⬅️ 返回主仓库:wccch-wzz/Brix-Android
从 Brix 启器 APK 静态反编译(jadx)恢复出的 Java 源码工程,经整理后可以真正编译通过:
839 个源文件 → 2282 个 class → 0 error ✅
与原仓库的 Brix-Android/brix-src/ 相比,本仓库的源码树是重新整理过的、可编译的版本。
| Brix-Android | 本仓库 | |
|---|---|---|
| 定位 | Brix 手机版主项目 | 反编译源码(可编译工程) |
brix-src/ 内容 |
反编译源码,含第三方库源码 | — |
| 源码树 | — | 纯业务源码 839 文件 |
| 第三方依赖 | 混在源码里(com/google 等 531 个) |
以 jar 形式放在 libs/ |
| 能否编译 | ❌ 缺 Gradle 骨架、缺资源 | ✅ 克隆即可编译 |
| 体积 | — | 20 MB |
两者是同一 App 的不同视角:主仓库讲"这个 App 是什么",本仓库讲"它的代码长什么样、怎么编"。
git clone https://github.com/wccch-wzz/Brix-Android-Source.git
cd Brix-Android-Source
./build.sh # 编译 → out/(839 文件 / 2282 class / 0 error)
./build.sh clean # 清空 out/ 后重新编译
./build_dex.sh # 编译产物 → dex/classes.dex校验编译结果与原包 dex 的冲突情况:
python3 dex_check.py --base <原APK路径> --mine dex/classes.dex| 工具 | 版本 / 路径 |
|---|---|
| JDK | 需支持 -source 8 -target 8 |
| android.jar | android-35 |
| d8 / aapt2 / apksigner | build-tools 34.0.0 |
| Python 3 | 用于 dex_check.py |
build.sh默认按/opt/android-sdk/路径查找 SDK,如需修改请编辑脚本顶部的ANDROID_JAR变量。
编译通过 ≠ 能替换原包。"反编译源码重建 → 回填原 APK"这条路线已被验证走不通:
$ python3 dex_check.py --base brix-1.2.apk --mine dex/classes.dex
❌ 1558 个重复类 + 747 个孤儿内部类,真正独立类为 0
→ 原包已完整包含重建内容,【重建替换方案不成立】
原因很简单:重建出的每个类,原包里本来就有(因为我们本来就是从原包反编译的),塞回去只会制造同名类冲突。
本工程的正确用途:
- ✅ 阅读 / 检索 Brix 的实现逻辑
- ✅ 作为改 smali 时的对照(知道该动哪个方法)
- ✅ 版本间的源码 diff 对比
- ❌ 不要用来出替换包
要修改 Brix 的行为,正确路径是直接改 smali:
baksmali 拆 dex → 改 smali → smali 回汇编 → 替换 + 重签名
详见 docs/编译结论.md。
.
├── README.md
├── build.sh 编译(javac)
├── build_dex.sh 转 dex(d8)
├── dex_check.py 重复类 / 冲突校验工具
├── src/ 业务源码 839 文件
│ ├── com/brixcore 661 启动器内核(HMCL 血统)
│ │ ├── fakefx/ JavaFX 兼容层
│ │ ├── download/ 版本安装器
│ │ ├── mod/ 整合包 / 模组管理
│ │ ├── auth/ 账号体系
│ │ ├── game/ 游戏实例
│ │ └── task/ 异步任务
│ ├── com/github 134 junrar、steveice10 等
│ ├── com/brix 24 应用自研层(授权 / 好友 / 界面)
│ ├── com/sun 13 zipfs 移植
│ ├── com/mio 3
│ ├── net/burningtnt 2
│ └── fi/iki 2
├── libs/ 第三方依赖 jar 57 个
├── docs/
│ ├── 编译结论.md 为什么重建替换走不通
│ └── 环境依赖.md 工具链路径说明
└── tools/ 辅助脚本
整理过程中踩过的坑,写下来避免重蹈覆辙。
库代码进 src/ 会被 javac 当业务代码编译,引入数百个 jadx 缺陷。
实测:Material + Gson 源码进
src/→ 300 个编译错误(Material 226 + Gson 72)
库一律走 libs/ 的 jar。
jadx 生成的这类文件无法被 javac 正确链接:
- 引用不存在的合成字段
f$0 - 产生非法语法(如
final enum AnonymousClass1 extends LibraryType) - 有些被代码主动
new调用,删了也报错
实测:曾误加 63 个 → 37 个编译错误
让 javac 自己生成合成类,不要手工补。
| 项 | 值 |
|---|---|
| 包名 | com.brix.brixlauncher |
| 内核 versionName / Code | 1.1 / 11 |
| minSdk / targetSdk | 26 / 35 |
| 原包 dex 数 | 24 |
| 原包类总数 | 18280 |
| 源码基线 | 839 文件 / 2282 class / 0 error |
注:对外标注的 "1.2" 是服务端发布版本,APK 内核
versionName仍为1.1。
本仓库内容为 APK 静态反编译产物,仅供学习与研究使用。
重要:com/brixcore 源自 GPLv3 开源项目 HMCL,本仓库随主仓库一并履行相应许可证义务。详见 LICENSE。