|
| 1 | +# BetterHeybox |
| 2 | + |
| 3 | +小黑盒(Heybox)增强的 LSPosed 模块(libxposed Modern API 102)。 |
| 4 | + |
| 5 | +## Note |
| 6 | +本应用基于小黑盒1.3.393上完成,低于此版本出现的问题不会进行处理 |
| 7 | + |
| 8 | +## 功能 |
| 9 | + |
| 10 | +所有功能开关均可在模块自带设置界面(`SettingsActivity`)独立控制; |
| 11 | +开关经 LSPosed **RemotePreferences** 跨进程同步,**广告过滤类开关即时生效**。 |
| 12 | + |
| 13 | +### 广告过滤 |
| 14 | + |
| 15 | +| 类型 | |
| 16 | +|------| |
| 17 | +| 开屏广告 | |
| 18 | +| 信息流广告| |
| 19 | +| 气泡广告 | |
| 20 | +| 角标广告 | |
| 21 | +| 推广贴 | |
| 22 | + |
| 23 | +### 界面增强 |
| 24 | + |
| 25 | +- **底部导航栏优化**(需重启小黑盒生效):隐藏「首页 / 热点 / 游戏库 / 加号」; |
| 26 | + 隐藏加号时联动隐藏「推荐」占位,剩余 tab 完全等分、无空白 |
| 27 | +- **设置页入口注入**:小黑盒「我的 → 设置」页顶部自动插入 "BetterHeybox 设置" 入口, |
| 28 | + 优先复用小黑盒 `SettingItemView` 样式(失败回退纯代码构建,深浅色均清晰) |
| 29 | + |
| 30 | +### 帖子增强 |
| 31 | + |
| 32 | +- **解除复制**:Hook 掉小黑盒自定义 `TextSelectHandler` 的长按拦截, |
| 33 | + 恢复安卓系统标准文本选择(长按正文弹「复制/全选」菜单,采用系统复制) |
| 34 | +- **拖动跨行选择修复**:文本选择激活时放行滚动容器的触摸拦截,选择手柄可跨行拖动 |
| 35 | + |
| 36 | +### 通用 |
| 37 | + |
| 38 | +- **不显示桌面图标**:组件级禁用 `LaunchActivity`(立即生效), |
| 39 | + 隐藏后仍可从小黑盒设置页注入的入口进入模块设置 |
| 40 | + |
| 41 | +## 技术栈 |
| 42 | + |
| 43 | +| 项 | 值 | |
| 44 | +|----|----| |
| 45 | +| 语言 | Java 17 | |
| 46 | +| Hook API | `io.github.libxposed:api:102.0.0` | |
| 47 | +| Service | `io.github.libxposed:service:102.0.0` | |
| 48 | +| compileSdk / targetSdk | 37 | |
| 49 | +| minSdk | 26 | |
| 50 | +| AGP / Gradle | 9.2.1 / 9.5.1 | |
| 51 | +| JDK | 17+ | |
| 52 | + |
| 53 | +## 工程结构 |
| 54 | + |
| 55 | +``` |
| 56 | +app/src/main/ |
| 57 | +├── AndroidManifest.xml # 模块名/描述 = android:label / android:description |
| 58 | +├── java/com/better/heybox/ |
| 59 | +│ ├── MainModule.java # 模块入口 |
| 60 | +│ ├── App.java # Application:连接框架服务、RemotePreferences 存取 |
| 61 | +│ ├── SettingsActivity.java # 模块设置界面 |
| 62 | +│ └── LaunchActivity.java # 桌面图标入口 |
| 63 | +├── res/ # 设置页布局 / 字符串 / drawable |
| 64 | +└── resources/META-INF/xposed/ # 模块声明 |
| 65 | +``` |
| 66 | + |
| 67 | +另有 `docs/`(开发前置准备文档)与 `analysis/`(逆向分析工作区,不入库)。 |
| 68 | + |
| 69 | +## 模块声明 |
| 70 | + |
| 71 | +不再使用 Manifest meta-data 与 `assets/xposed_init`,全部声明在 `META-INF/xposed/`: |
| 72 | + |
| 73 | +``` |
| 74 | +app/src/main/resources/META-INF/xposed/ |
| 75 | +├── java_init.list # 入口类 |
| 76 | +├── module.prop # minApiVersion=101 |
| 77 | +└── scope.list # 作用域 |
| 78 | +``` |
| 79 | + |
| 80 | +- 模块名称 / 描述:`android:label` / `android:description`(见 `res/values/strings.xml`) |
| 81 | + |
| 82 | +## 构建与使用 |
| 83 | + |
| 84 | +1. **环境**:Android Studio 打开本目录(首次自动下载 Gradle 9.5.1 + 依赖,需网络; |
| 85 | + 若提示缺 wrapper 让 AS 自动补全;SDK Manager 需装有 **Platform 37**) |
| 86 | +2. **编译**: |
| 87 | + - Windows:`gradlew.bat assembleDebug` |
| 88 | + - 命令行/CI:`./gradlew assembleDebug` |
| 89 | + - 或 Android Studio `Build > Make Project` |
| 90 | + - 产物:`app/build/outputs/apk/debug/app-debug.apk` |
| 91 | +3. **刷入**: |
| 92 | + - 模拟器/真机需 root + **支持 API 102 的 LSPosed** |
| 93 | + - 安装 APK → LSPosed Manager 启用模块。 |
| 94 | + `staticScope=true` 时作用域固定为 scope.list 中的小黑盒,无需(也无法)手动勾选其它应用 |
| 95 | + - 重启小黑盒进程 |
| 96 | +4. **看日志**:`adb logcat -s BetterHeybox`(每个 Hook 安装成功/失败均有 ✔/✘ 日志) |
| 97 | + |
| 98 | +# 免责声明 |
| 99 | +本应用与清枫(北京)科技有限公司无关,仅学习研究小黑盒APP原理,请在下载后24h内删除 |
0 commit comments