arm64-v8a 架构硬性门槛
一句话结论
ZenConverter 当前发布包只包含 arm64-v8a(64 位 ARM)原生库。如果你用的是 32 位 ARM 设备,这个应用装不上,也不会有兼容模式。这是有意的选择,不是技术限制。
哪些部分依赖 arm64-v8a
应用里的所有原生引擎都只编译了 arm64-v8a ABI:
| 原生库 | 功能 | arm64 only |
|---|---|---|
| FFmpegKitNext v7.1.0 AAR | 音视频编解码、GIF、字幕 | ✅ |
| libzen_office2pdf.so v0.8.1 | Office OOXML → PDF | ✅ |
| libzen_woff2.so | Google woff2 WOFF2 编解码 | ✅ |
| libzen_ncnn.so + libncnn.so | Tencent NCNN Vulkan(AI 超分/补帧) | ✅ |
Kotlin 纯 Kotlin 的部分(WOFF 1.0 编解码、LRC 歌词解析)理论上可以跑在 32 位上,但整个 APK 的 ABI 过滤是一把梭——只要有一个 native 库只打包了 arm64,整个 APK 就只能装在 arm64 设备上。
为什么不打包多架构
- APK 体积:每个架构增加一组 native .so 文件。当前 APK 约 38.8 MB,如果加 32 位 ARM、x86、x86_64,体积会翻倍。
- 维护成本:每个架构的原生库都要在 CI 里单独构建、单独测试、单独校验 SHA-256。打包多架构意味着测试矩阵指数级膨胀。
- 设备覆盖率:2024 年以后发布的几乎所有 Android 设备都是 64 位的。32 位 ARM 设备要么是非常老的机器(Android 7 以前),要么是低端入门机型。
- Vulkan GPU 加速:NCNN Vulkan 路线只在 arm64 上做了适配,32 位设备的 GPU 通常也不支持 Vulkan。
- 技术路线文档明确写了:"China mainland app stores are not a V1 target"——不需要为了覆盖低端设备而打包 32 位。
怎么判断你的设备
最简单的办法:在设置里搜索"关于手机" → 查看"处理器"或"CPU 架构"。如果看到 armv8、aarch64、arm64-v8a、x86_64,就是 64 位。如果看到 armv7、armeabi-v7a、armv7l,就是 32 位。
也可以装一个叫"Device Info HW"的免费开源应用,直接显示 ABI 列表。
如果我真的有 32 位设备
选项有三个:
1. 换 64 位设备(最省心)。任何 2019 年以后发布的主流手机都是 64 位的。
2. 用模拟器(调试用)。Android Studio 的模拟器可以选 x86_64 架构装这个 APK。但模拟器跑 FFmpeg 和 NCNN Vulkan 性能很差,不适合实际转换。
3. 自己编译 armv7 版本(硬核)。源码在 GitHub,原生库(FFmpeg、office2pdf、woff2)都可以自己编译成 armv7 ABI,然后改一下 app/build.gradle 的 abiFilters。技术上可行,但工作量不小,也不会得到任何官方支持。
未来会不会支持更多架构
技术路线文档 Phase 5 里关于分发只写了 GitHub Releases APK、Google Play 和 F-Droid。加架构不是当前优先级。
如果未来某个阶段团队决定覆盖更多设备,最可能先加的是 x86_64(给 ChromeOS 和桌面模拟器用),不太可能先加 armv7。因为 x86_64 设备虽然占比也不高,但 FFmpeg 和 NCNN 在 x86_64 上反而编译更简单。
安装本身没有其他门槛
除了 arm64,ZenConverter 对设备没有额外要求:
- Android 版本:v0.2.4 要求 Android 8.0(API 26)以上;
- 存储空间:装包需要约 40 MB 可用空间(不含下载的 AI 模型和字体包);
- Google Play 上的安装不需要 Google 账号——GitHub Releases 直接下 APK 装就行。