Skip to content

Releases

AnythingMobile v1.0.0-alpha30

Pre-release

Choose a tag to compare

@github-actions github-actions released this 31 Oct 13:03

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

Pre-release

Choose a tag to compare

@github-actions github-actions released this 31 Oct 09:45

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

Pre-release

Choose a tag to compare

@github-actions github-actions released this 30 Oct 23:35

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

Pre-release

Choose a tag to compare

@github-actions github-actions released this 30 Oct 13:17

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

Pre-release

Choose a tag to compare

@github-actions github-actions released this 25 Oct 16:00

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

Pre-release

Choose a tag to compare

@github-actions github-actions released this 25 Oct 02:01

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

Pre-release

Choose a tag to compare

@github-actions github-actions released this 24 Oct 11:10

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

Pre-release

Choose a tag to compare

@github-actions github-actions released this 24 Oct 03:55

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

Pre-release

Choose a tag to compare

@github-actions github-actions released this 24 Oct 02:18

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

Pre-release

Choose a tag to compare

@github-actions github-actions released this 18 Oct 07:04

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