Skip to content

feat(aab): 支持查看 Android App Bundle - #3

Merged
huanfeng merged 1 commit into
huanfeng:mainfrom
rochzp:main
Nov 7, 2026
Merged

huanfeng merged 1 commit into
huanfeng:mainfrom
rochzp:main

Conversation

@rochzp

@rochzp rochzp commented Nov 6, 2026

Copy link
Copy Markdown
  • 解析 AAB 清单、资源和功能模块,接入文件打开、关联和重命名
  • 修复文本信息页的多语言字形显示
  • 通过工作区测试和多模块 AAB 样本验证

- 解析 AAB 清单、资源和功能模块,接入文件打开、关联和重命名
- 修复文本信息页的多语言字形显示
- 通过工作区测试和多模块 AAB 样本验证
@huanfeng

huanfeng commented Nov 7, 2026

Copy link
Copy Markdown
Owner

感谢贡献!AAB 支持整体思路很好,这个 PR 会原样合入(提交 30fd1bb 保留你的署名),我在其后追加了两个修复提交来处理审查中发现的问题:

4c14983 fix(core)

  • density 列表混入了 anydpi/nodpi 的 0xFFFE/0xFFFF 哨兵值(APK 路径会过滤掉)
  • 默认应用名会被 values-night / values-v31 等变体覆盖(APK 取第一个默认配置);无默认配置时 label 停在 @res/0x…
  • 单条资源记录损坏会中止整张表解析,丢掉已收集的 locale/density
  • ?attr 引用被输出成 @res/…、浮点 1.0 输出成 1,与 AXML 路径格式不一致
  • bundle 资源索引在加载时被整表复制一次
  • 为 aab.rs 补了单元测试(自带最小 protobuf 编码器,不依赖二进制样本)

af9f685 fix(app)

  • 新增的「当前文档可安装」检查排在「安装进行中拉回窗口」之前,切到 AAB 标签页时按 Ctrl+I 无法拉回安装窗口
  • foo.apk 改名为 foo.aab 时提示「保留原有 AAB 文件类型」,语义相反,拆出单独的 rename.not_aab
  • pages.rs 未通过 cargo fmt --check(CI 会失败)

另:文本信息页的字形回退修复与 AAB 无关,且 is_ascii 判断会让整段文本因一个非 ASCII 字符失去等宽,后续我们会改在字体回退层统一处理。

huanfeng added a commit that referenced this pull request Nov 7, 2026
跟进 PR #3 的审查意见:
- density 列表排除 0xFFFE/0xFFFF(anydpi/nodpi)哨兵值,与 ResourceTable::densities 一致
- 应用名取第一个默认配置、无默认时退回任意配置,各语言取第一个,
  不再被 night / vNN 等变体覆盖(对齐 ResourceTable::string_value)
- 单条 package/type/entry/value 损坏只跳过该条,不再丢掉整张表已收集的 locale / density
- 编译属性的 ATTRIBUTE 引用输出 @attr/0x…,浮点用 dart_double,引用不补零,与 AXML 格式一致
- 新增 take_resources_with:AAB 资源索引直接移交,避免整表复制一次
- aab.rs 补 protobuf 解析、资源合并、XML 属性格式化等测试;ArchiveKind::from_path 补测试
huanfeng added a commit that referenced this pull request Nov 7, 2026
跟进 PR #3 的审查意见:
- 安装进行中按安装快捷键总能拉回窗口:installing 判断移到当前文档检查之前
  (当前文档是 AAB、解析中或已全部关闭时也生效),去掉不再使用的 AppState::current_info
- APK 改名为 .aab 使用单独的 rename.not_aab 提示(6 种语言),不再误报「保留原有 AAB 类型」
- readonly_text_block 注释去掉过时的「等宽」;pages.rs 修正 cargo fmt
@huanfeng
huanfeng merged commit 30fd1bb into huanfeng:main Nov 7, 2026
@huanfeng

huanfeng commented Nov 7, 2026

Copy link
Copy Markdown
Owner

想请教一下 PR 里「修复文本信息页的多语言字形显示」这项改动的具体情况。

我在 Linux 和 Windows 上用一个带 12 种语言应用名的测试包(中日韩、印地、泰、阿拉伯、希伯来、俄、希腊等)对比过:

  • 「文本信息」页强制用等宽字体时,所有文字都能正常回退显示。
  • 现在的 is_ascii 切换只在 Windows 上让字距稍微宽松一点,没能复现「字形错误」。

方便的话想确认几点:

  1. 你是在哪个系统上遇到的?PR 里改了 Info.plist,猜测是 macOS?系统版本是多少?
  2. 是哪些语言 / 文字显示不对,表现是方框、乱码,还是画成了别的字?
  3. 能否附一张截图,或者提供对应的 APK(或包名)?

确认之后我们打算在 windui 的文字后端里根治,而不是在应用层按 ASCII 切字体。谢谢!

@rochzp

rochzp commented Nov 10, 2026 •

Copy link
Copy Markdown
Author

想请教一下 PR 里「修复文本信息页的多语言字形显示」这项改动的具体情况。

我在 Linux 和 Windows 上用一个带 12 种语言应用名的测试包(中日韩、印地、泰、阿拉伯、希伯来、俄、希腊等)对比过:

  • 「文本信息」页强制用等宽字体时,所有文字都能正常回退显示。
  • 现在的 is_ascii 切换只在 Windows 上让字距稍微宽松一点,没能复现「字形错误」。

方便的话想确认几点:

  1. 你是在哪个系统上遇到的?PR 里改了 Info.plist,猜测是 macOS?系统版本是多少?
  2. 是哪些语言 / 文字显示不对,表现是方框、乱码,还是画成了别的字?
  3. 能否附一张截图,或者提供对应的 APK(或包名)?

确认之后我们打算在 windui 的文字后端里根治,而不是在应用层按 ASCII 切字体。谢谢!

macOS15.8.1(M4)
image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants