Repository navigation
Releases
AnythingMobile v1.0.0-alpha30
alpha30 —— MD3 回归原生观感 + 索引收尾提速
针对 alpha29 后的三条反馈:MD3 到底该长什么样(参照
ImageToolbox / KernelSU 的 Material 实现)、每个设置项应该分隔开、
速度仍未达到原版闭源 Anything。另按"好好看看模拟器截图"的提示,
查出并修正了 CI 冒烟截图的乌龙。
Material Design 3 · 回归原生语言
以 KernelSU Material 与 ImageToolbox 的设置页为参照重排 MD3 风格:
- 大标题顶栏:设置/目录/教程/日志页改用 M3 LargeTopAppBar,
大标题随内容滚动折叠为小标题(KSU Material 同款交互);
Miuix 风格保持 HyperOS 小标题顶栏; - 每个设置项分隔开:MD3 分组不再是"一张连块大卡 + 细分割线",
改为每项一张独立 16dp 圆角卡(surfaceContainerLow),项与项
4dp 间距、无分割线(ImageToolbox 设置页同款语言);目录页的
索引范围/目录清单同步; - 设置项图标改 onSurfaceVariant(M3 设置惯例 / KSU Material 同款);
- 修复搜索页空态文案被「∞ 所有」筛选钮遮挡(模拟器截图实证);
- Miuix 风格保持 HyperOS 原生语言不变(连块卡 + 0.5dp 分割线 +
主色圆角图标底盒),两风格的差异进一步拉开。
索引速度 · 对标原版
- 新增引擎基准(12,000 文件合成树):全量建索引 178ms、
增量零变化 44ms、引擎重启恢复 31ms、搜索 0.5~4ms ——
引擎核心本就亚秒级; - 零变化增量轮跳过快照落盘:无新增/更新/删除/补解析时不再重写
上万条目的快照文件(对标原版"更新不写盘"),省掉每次打开应用的
整段 flash 写入与功耗;有变更的扫描照常落盘; - 若你的设备仍有可感知的慢场景(首次建索引/特定目录),欢迎反馈
文件规模与"慢"出现的具体时机,可针对性下钻。
CI 冒烟截图 · 乌龙修正
此前工作流号称的"设置页截图"实际截的是主界面(点击坐标靠比例猜,
从未真正导航到设置页)——这也解释了为什么 alpha29 的设置页问题
没被截图发现。现改用 uiautomator 语义树精确点按真实控件,
依次截取:主界面 / 设置页(Material Design 3)/ 设置页(Miuix),
UI 回归不再靠猜坐标。
安装
- arm64-v8a:2016 年后的绝大多数手机(推荐,不确定选这个)
- armeabi-v7a:老旧 32 位设备
- x86_64:模拟器 / ChromeBook
- universal:全架构通吃(体积大,仅在分不清架构时使用)
- 带
_offline后缀 = 离线版(不联网不检查更新),同名不带后缀 = 标准版
直接覆盖安装即可升级,签名一致无需卸载。
Full Changelog: v1.0.0-alpha29...v1.0.0-alpha30
AnythingMobile v1.0.0-alpha29
alpha29 —— 图标空白根因修复 + 设计风格差异化
上一版(alpha28)反馈的两个问题全部修复:图标空白(根因比预想
深得多)与 MD3/Miuix 观感无差别。
图标空白 · 根因修复
- 根因:alpha25 图标迁移时直接照抄了 Google Material Symbols 的
SVG pathData,未做坐标变换——其 viewBox 是「0 -960 960 960」,而
Android vector 写死 24×24 视口,绝对坐标全部画在视口之外。
也就是说:自 alpha25 起,这批图标从未真正渲染过; - 修复:56 枚图标 pathData 按状态机变换回 24 视口
(x/40、y/40+24),全量解析校验 + 模拟器像素矩阵实证恢复; - 新增 IconDiagTest 回归门禁:受控渲染逐格像素断言,图标
空白即测试红——此类"看不见的回归"从此必被 CI 拦下; - 防御性修复:miuix-ui 传递依赖曾把
androidx.compose.material3
静默仲裁到 1.5.0-alpha22(alpha 线),已强制钉回 BOM 锁定的
1.4.0(此后 material3 版本完全由 BOM 决定); - CI 模拟器冒烟升级:改装 release 包(R8+正式签名)+ 自动跳过
欢迎页截图主界面/设置页 + debug 对照截图。
设计风格差异化
- Miuix 风格改用 HyperOS 2 取色规格(Spec2025):alpha28 曾对齐
Spec2021 导致两风格色板几乎一样,现回归 HyperOS 原生色感; - MD3 还原标准 Material Design 3 观感(此前为模仿 NPatch 已被
魔改成类 Miuix):- 设置分组卡圆角 20dp → 12dp(M3 卡片标准);
- 分割线从 0.5dp 缩进细线 → 1dp 标准分割线;
- Miuix 风格下设置项图标改为主色圆角底盒 + 反色图标
(HyperOS 设置观感),MD3 保持裸主色图标。
安装
- arm64-v8a:2016 年后的绝大多数手机(推荐,不确定选这个)
- armeabi-v7a:老旧 32 位设备
- x86_64:模拟器 / ChromeBook
- universal:全架构通吃(体积大,仅在分不清架构时使用)
- 带
_offline后缀 = 离线版(不联网不检查更新),同名不带后缀 = 标准版
直接覆盖安装即可升级,签名一致无需卸载。
Full Changelog: v1.0.0-alpha28...v1.0.0-alpha29
AnythingMobile v1.0.0-alpha28
alpha28 —— Miuix 设计风格(HyperOS 观感)
参照 KernelSU 管理器的双设计机制,新增 Miuix(HyperOS)设计风格,与
Material Design 3 并列可一键切换;液态玻璃底栏两风格通用——在
Material Design 3 主题下也能继续使用 Miuix 的液态玻璃底栏。
设计风格切换
- 设置 → 外观 → 新增「设计风格」:Material 3 / Miuix 二选一,即时生效;
- 默认 Material 3,老用户升级后观感零变化;
- Miuix 风格由 miuix ThemeController 生成 HyperOS 色板:随系统深浅色 ×
动态取色映射六态色板,主色取自你选定的种子色,且与 MD3 共用同一取色
规格(两风格切换色相不漂移),自定义配色完整保留; - 切换后设置页、顶栏、开关、单选弹窗全部跟随所选风格重绘:Miuix 下开关
为 HyperOS 触感、分组标题为 SmallTitle、弹窗为 HyperOS 观感单选层。
液态玻璃底栏 · 两风格通用
- 液态玻璃底栏(悬浮胶囊 / 通栏两种形态)配色随设计风格切换,
MD3 与 Miuix 下均可用(设置项副标题已明示); - 玻璃折射取样底色同步跟随风格,切换后无需重启。
细节
- 搜索 / 目录 / 日志 / 语法教程页顶栏与页级横幅统一走双风格取色;
- M3 几何容器继续可用,调色板编辑器等未迁移组件不破相;
- 依赖新增
top.yukonga.miuix.kmp:miuix-ui:0.9.4(与 miuix-blur 同版本
同发布线,KernelSU 同款版本)。
安装
- arm64-v8a:2016 年后的绝大多数手机(推荐,不确定选这个)
- armeabi-v7a:老旧 32 位设备
- x86_64:模拟器 / ChromeBook
- universal:全架构通吃(体积大,仅在分不清架构时使用)
- 带
_offline后缀 = 离线版(不联网不检查更新),同名不带后缀 = 标准版
直接覆盖安装即可升级,签名一致无需卸载。
Full Changelog: v1.0.0-alpha27...v1.0.0-alpha28
AnythingMobile v1.0.0-alpha27
alpha27 —— 安全审计加固版
本版来源于一份覆盖全仓库的外部安全审计(源码逐行审查 + 独立沙盒编译 +
对抗性测试)。未发现高危问题,核心承诺(本地索引、数据不出设备、
离线版零联网)经代码审计全部属实;本版修复了审计找到的全部可修项。
解析器加固(防恶意文档)
- SAF 直连通道补解析超时:目录页「同步索引」此前无单文档超时,
一个精心构造的压缩炸弹文档可让前台满核卡顿分钟级;现与扫描流水线
同语义(辅助线程 + 45s 超时),超时放弃全文、文件名照常收录。 - zip 解压字节上限 128MB:单条目解压读取封顶 —— 实测
「2.2MB 压缩 → ~1GB 无文本 XML」的 docx 炸弹,修复前 5.9s 满核 CPU
(20MB 文件上限等比放大后为分钟级),修复后亚秒返回。
引擎与壳层修复
- 旧版 .doc 解析器(Kotlin 侧 CFB 容器)加固:拒绝负数扇区号
(此前可触发数组越界异常,被下游兜住)、DIFAT 链防环 + 物理上限
(此前自环构造可无界增长致 OOM)—— 与 Rust 侧防御水位拉齐; - 外部路径校验补边界:
/Android/data_evil/...这类前缀兄弟目录
不再被误收; - 宽泛查询(如
type:video)命中数万条时不再全量物化数十 MB 内存
(低端机后台被杀风险消除),总数显示在超限时为近似值; - FileProvider 分享范围收窄(cache 仅暴露 Shizuku 导出子目录);
- 检查更新跳转 URL 白名单(只跳本仓库);崩溃分享文案如实列明
报告内容(含运行日志); - 开发期构建恢复整数溢出检查(release 保持关闭,不影响体积与速度)。
CI 修复
- 模拟器仪器化测试任务名修正(alpha26 flavor 化后旧名失效导致
红测,本版转绿); - CI 接入 Gradle Wrapper 校验(防 wrapper 供应链投毒);
- 审计报告称 CI 触发器存在笔误 —— 经字节级复核为误报
(审计工具的输出层吞了[m字符),文件实际内容正确,未改动。
文档
- 新增
CHANGELOG.md与CONTRIBUTING.md; - README 新增「哪些文件能搜正文」FAQ:
.docx/.xlsx/.pptx/.pdf+
.doc/.xls/.ppt/.wps参与全文索引,纯文本/代码文件暂只搜文件名。
安装
- arm64-v8a:2016 年后的绝大多数手机(推荐,不确定选这个)
- armeabi-v7a:老旧 32 位设备
- x86_64:模拟器 / ChromeBook
- universal:全架构通吃(体积大,仅在分不清架构时使用)
- 带
_offline后缀 = 离线版(不联网不检查更新),同名不带后缀 = 标准版
直接覆盖安装即可升级,签名一致无需卸载。
Full Changelog: v1.0.0-alpha26...v1.0.0-alpha27
AnythingMobile v1.0.0-alpha26
alpha26 —— 索引范围三模式 + 离线版 + 增量扫描提速
索引范围三模式
此前只有「是否全盘」一个布尔开关,不够用。现在目录页顶部可以三选一:
- 全盘 + 目录(默认):全盘扫描为主,同时支持把 DocumentsProvider
虚拟目录(部分软件的文件提供器)以 SAF 方式注入索引——适合既想全盘
又想收录特定应用目录的场景; - 仅目录:只扫描手动添加的目录,最省电最克制;
- 仅全盘:老行为,全盘扫描、忽略附加目录。
旧设置会自动迁移,无需重新配置。
「扫描 Android/data」挪进目录列表
这个开关从设置页移到了目录列表里,变成和「添加目录」并列的一个条目,
带独立的开关和已收录计数;未授权时条目内直接引导去授权。设置页原区块
改为「特权通道」,只留系统级能力说明。
离线版(_offline.apk)—— 本次新增发行渠道
应大家要求:每个架构现在都有两个包——标准版和 _offline.apk 后缀的
离线版。离线版专为不放心的用户准备:
- 编译期剪除全部检查更新代码(不是运行时开关,R8 直接裁掉);
- AndroidManifest 裁除 INTERNET 权限——系统层面就不具备联网能力,
装上之后可以直接在系统设置里验证:应用权限列表里没有「网络」; - applicationId 与标准版一致,两者可互相覆盖安装、签名一致。
标准版功能不变,仍可在设置页手动/自动检查更新。两个版本二选一安装即可。
增量扫描提速(对标原版 <1s)
- 变更文档的旧全文删除由逐条 commit 改为攒批单次 commit:
N 个变更文件从 N 次 commit + 索引重载降到 1 次,增量更新明显变快; - 快照导出(上万条全表克隆)移入落盘线程,不再阻塞查询主路径。
文档审查修正
- README:修正「未声明 INTERNET 权限」的不实陈述(诚实化),补充离线版
说明与「索引无条目上限」FAQ(此前 UI 文案让部分朋友误以为有 12000 上限,
实际没有——那是统计显示值,不是代码上限); - architecture.md / engine/README.md:同步三模式、CI 双渠道、引擎模块地图。
安装
- arm64-v8a:2016 年后的绝大多数手机(推荐,不确定选这个)
- armeabi-v7a:老旧 32 位设备
- x86_64:模拟器 / ChromeBook
- universal:全架构通吃(体积大,仅在分不清架构时使用)
- 带
_offline后缀 = 离线版(不联网不检查更新),同名不带后缀 = 标准版
直接覆盖安装即可升级,签名一致无需卸载。
Full Changelog: v1.0.0-alpha25...v1.0.0-alpha26
AnythingMobile v1.0.0-alpha25
alpha25 —— 中文 PDF 全文检索修复 + Material Symbols 图标体系
中文 PDF 全文检索修复(本次重点)
上一版之前存在一个盲区:国内办公软件(WPS / Word 的中文导出)生成的 PDF
大量使用 UniGB-UCS2-H 预定义 CID 编码,上游解析库 pdf-extract 遇到它会
内部 panic——此前版本靠引擎护罩拦住不崩溃,但这类文档只能搜文件名,
全文搜不到。本次已彻底修复:
- 引擎内嵌补丁版 pdf-extract(MIT,4 处最小改动),支持 UniGB / UniJIS /
UniKS / UniCNS 全部 UCS-2 家族 CMap 编码,中文 PDF 全文正确抽出; - 实测:WPS 风格中文合同、多页文档样张 100% 提取成功,英文文档无回归;
- 已有索引的朋友:重建一次索引即可把历史 PDF 补进全文。
图标体系现代化
- 全部界面图标从已停止维护的
material-icons库迁移到官方推荐的
Material Symbols(矢量 drawable,按需打包); - 移除 20-34MB 的 material-icons-extended 依赖:release 构建显著提速,
debug 包大幅缩小;界面观感不变(同为 Rounded 圆角风格)。
其他
- 上一版(alpha24)的「应用内检查更新」如遇问题,本版可直接在设置页
点「版本」手动检查更新来升级到 alpha25(自举生效)。
安装
- arm64-v8a:2016 年后的绝大多数手机(推荐,不确定选这个)
- armeabi-v7a:老旧 32 位设备
- x86_64:模拟器 / ChromeBook
- universal:全架构通吃(体积大,仅在分不清架构时使用)
直接覆盖安装即可升级,签名一致无需卸载。
Full Changelog: v1.0.0-alpha24...v1.0.0-alpha25
AnythingMobile v1.0.0-alpha24
alpha24 —— 应用内检查更新 + 关于页直达 GitHub 仓库
新功能
应用内检查更新(设计同构 T8RIN/ImageToolbox 的 UpdateSheet):
- 设置页「版本」项现在可以点击:手动向 GitHub Releases 查询新版本;
检查中有转圈反馈、无更新显示「已是最新版本」、失败显示原因并可点击重试; - 「启动时检查更新」开关(默认开):进入应用几秒后静默查询,发现新版本时
弹出更新日志底部弹窗;无更新/网络失败不打扰。关闭开关后仍可随时手动检查; - 更新弹窗:新版本号 + 完整更新日志(支持 markdown 渲染)+「前往下载」跳转
对应 Release 页 +「下次再说」。不做应用内下载安装——下载与安装交给您信任的
浏览器/安装器(与 ImageToolbox FOSS 渠道一致);关过弹窗后本次运行不再自动弹。
关于页直达 GitHub 仓库:新增「GitHub 仓库」按钮,一键在浏览器打开
github.com/masgzy/AnythingMobile;版本号也直接显示在关于页。
一处诚实的说明:新增了 INTERNET 权限
此前版本承诺「无网络权限」。alpha24 起应用新增 INTERNET 权限,仅用于一项
功能:检查更新(GitHub Releases API)。请放心,纯离线承诺不变——
- 索引、搜索、文档解析依然零网络请求,数据不出设备;
- 没有任何遥测/统计/上报代码;
- 网络访问只发生在您点击「检查更新」或开启「启动时检查更新」时。
如果您连这个权限也不想给:可以在系统设置里对该应用撤销 INTERNET 权限
(Android 13+ 部分 ROM 支持),其余功能不受任何影响。
技术细节
- 更新检查走
api.github.com/repos/masgzy/AnythingMobile/releases(因本仓库
所有发布均为 prerelease,/latest端点会 404,故取列表首条); - 版本比较没有照搬 ImageToolbox 的「拍平成整数」法——那在 alpha9→alpha10
进位时会误判;这里用结构化元组逐段比较,对任意位数与未来 beta/rc/正式版都正确; - 零新增依赖:
HttpsURLConnection+org.json(Android 自带),更新日志渲染
为内置轻量 markdown(标题/列表/粗体/行内代码)。
安装
- arm64-v8a:2016 年后的绝大多数手机(推荐,不确定选这个)
- armeabi-v7a:老旧 32 位设备
- x86_64:模拟器 / ChromeBook
- universal:全架构通吃(体积大,仅在分不清架构时使用)
直接覆盖安装即可升级,签名一致无需卸载。
Full Changelog: v1.0.0-alpha23...v1.0.0-alpha24
AnythingMobile v1.0.0-alpha23
v1.0.0-alpha23
「正在更新中」状态卡死的最终根因修复。本次定位直接得益于 alpha22 新增的日志导出功能 —— 感谢反馈的日志,一次锁定真凶。
根因:R8 混淆吞掉了引擎回调
- 症状回放:应用一切可用,但「正在更新中」永不消失;导出日志显示扫描 8 秒内实际完成(已收录 11878 条)、引擎进入空闲,随后看门狗反复触发强制恢复,却始终没有完成回调到达 Kotlin 层
- 真凶:alpha20 迁移 Rust 引擎后,回调契约类已从 gomobile 时代的
go.**/core.**搬到com.masgzy.anything.rust,而 ProGuard keep 规则没有跟着搬 —— R8 把回调方法onProgress/onFinished/onError混淆改名,Rust 侧按方法名反射回调找不到目标,静默失败 - 于是:扫描实际完成(索引条目正常增长)但 Kotlin 零回调 → 状态机永远停在「更新中」,看门狗每 8 秒兜底恢复一次 = 体感「一直正在更新中」
- 一并解释了 alpha21 的「扫描数恒 0」:同一根因的另一种表现
- 为什么「虽然能使用」:搜索等 Kotlin→Rust 方向走 native 方法声明,被通用规则保住,不受影响
修复
- ProGuard 补 keep
com.masgzy.anything.rust.**(3 个契约类,体积代价极小) - 回调投递不再完全静默:Rust 侧记录投递失败计数,随
stats.host_cb_errors暴露(向后兼容),看门狗恢复日志携带该诊断值 —— 今后同类问题一眼可查 - 修复两次恢复摘要可能因内容相同被界面判等跳过的遗漏
验证
- 引擎 Rust 侧 121 项测试全绿(fmt / clippy 严格 / test 三道门禁)
- 本条目发布前已在 CI 完整走通 Rust 交叉编译 + 签名构建
安装
- arm64-v8a:主流现代手机
- armeabi-v7a:老旧设备
- x86_64:模拟器
- universal:全兼容(体积较大,无需挑选 ABI 时使用)
Full Changelog: v1.0.0-alpha22...v1.0.0-alpha23
AnythingMobile v1.0.0-alpha22
v1.0.0-alpha22
修复版:解决「正在索引中」提示永不消失的问题;新增可切换等级的调试日志;吸收 KernelSU / SukiSU 管理器的两处设计。
修复:索引状态条卡死(alpha21 真机反馈)
- 症状:应用可正常使用,但「更新索引中...」横条一直显示、永不收起
- 根因:完成回调丢失时,看门狗恢复逻辑只复位扫描状态、不发布完成摘要,而横条恰好只在收到摘要时才收起 —— 两条路径之间出现断层
- 修复:所有恢复路径现在都会补发完成摘要(横条显示「索引流程已自动恢复」后自动收起);另加第二道保险,扫描结束 1.2 秒后横条若仍残留会强制收起
新增:调试日志(反馈问题更好用)
- 设置 → 其他 →「日志等级」:Verbose / Debug / Info / Warn / Error 五档可切,重启后保留
- 设置 → 其他 →「查看与分享日志」:按等级筛选、彩色标记,一键导出为文本文件经系统分享面板发送
- 记录范围:引擎初始化耗时、扫描启动参数、进度回调、完成统计、看门狗事件、搜索耗时与命中数、Android/data 特权枚举
- 默认 Info 档即可定位大部分问题;反馈索引类问题时建议先切到 Debug 再复现一次
借鉴 KernelSU / SukiSU 管理器的两处设计
- 索引状态卡:目录页顶部新增主色调大卡(KSU 状态卡同款语言),一眼看到已收录条目数、可全文检索的文档篇数、扩展收录数与最近更新时间
- 按压弹性:搜索结果行按下时轻微缩小、松手回弹(KSU 卡片手感)
其他
- README 功能表补充调试日志说明
- Kotlin 全量编译通过;引擎(Rust)零改动,体积与 alpha21 持平
安装
- arm64-v8a:主流现代手机
- armeabi-v7a:老旧设备
- x86_64:模拟器
- universal:全兼容(体积较大,无需挑选 ABI 时使用)
Full Changelog: v1.0.0-alpha21...v1.0.0-alpha22
AnythingMobile v1.0.0-alpha21
v1.0.0-alpha21
修复版:解决 alpha20 首次建索引可能永久卡住的故障,并为索引链路加上四层兜底。
首建索引卡死修复(alpha20 真机反馈)
- 症状:首次启动显示「正在为您建立文件索引」后进度条不动、文件数一直为 0,永不结束
- 根因:扫描线程缺少 panic 保护(内部异常会静默死亡,宿主永远等不到完成回调)+ 单个畸形文档解析死循环会卡住整条流水线 + 进度上报存在计数盲区
- 修复:扫描线程全程 panic 隔离,任何异常强制收尾并通知界面恢复;单文档解析 45 秒超时,超时跳过该文档且不再拖垮整轮索引;引擎层与界面层双重看门狗兜底
索引进度全面可见
- 首建遮罩改为双计数实时回显:「已扫描 N 个文件 · 已解析 M 篇文档」——文档全文解析阶段的进度从此可见
- 小文件集合(累计不足 200 个)也至少每秒推送一次计数推进,不再出现长时间停在 0 的观感
- 回调丢失时界面自动恢复,极端挂死(超 30 分钟)主动中止并提示重试
其他
- 引擎回归测试新增扫描异常恢复、进度闸门等用例(全套 121 项通过)
- 体积与 alpha20 持平(arm64 8.73 MB / universal 21.50 MB),16KB 页对齐保持
安装
- arm64-v8a:主流现代手机
- armeabi-v7a:老旧设备
- x86_64:模拟器
- universal:全兼容(体积较大,无需挑选 ABI 时使用)
Full Changelog: v1.0.0-alpha20...v1.0.0-alpha21