Skip to content

Repository files navigation

Brix-Android-Source

📦 Brix 启动器(com.brix.brixlauncher)反编译恢复源码 —— 可编译工程版

⬅️ 返回主仓库:wccch-wzz/Brix-Android


这是什么

从 Brix 启器 APK 静态反编译(jadx)恢复出的 Java 源码工程,经整理后可以真正编译通过

839 个源文件  →  2282 个 class  →  0 error  ✅

与原仓库的 Brix-Android/brix-src/ 相比,本仓库的源码树是重新整理过的、可编译的版本


与 Brix-Android 的关系

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

编译通过 ≠ 能替换原包。"反编译源码重建 → 回填原 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/                辅助脚本

两条工程禁忌

整理过程中踩过的坑,写下来避免重蹈覆辙。

禁忌 1:不要把第三方库源码放进 src/

库代码进 src/ 会被 javac 当业务代码编译,引入数百个 jadx 缺陷。

实测:Material + Gson 源码进 src/ → 300 个编译错误(Material 226 + Gson 72)

库一律走 libs/ 的 jar。

禁忌 2:不要手工添加 $$ExternalSynthetic* 合成类

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

About

Brix 启动器(com.brix.brixlauncher)反编译恢复源码 · 可编译工程版 · 839 文件 0 error

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages