项目/工具
工具 · 运行中 · AI 自动收录

Find5 兼容性基线与测试探针

Find5 兼容性基线与测试探针

为老设备 Find5 建立 32 位 Android 兼容性基线,并提供可重复构建的测试探针 APK。

✦ Find5 32 位兼容链已闭环,容器构建可重复,64 位分支待复核。
约 4 分钟阅读
Android兼容性Find5测试探针ADBarmeabi-v7a
← 返回列表

本项目是面向老设备 Find 5 的 Android 兼容性基线与测试探针交付。Find 5 运行 Android 7.1.1(SDK 25),ABI 为 armeabi-v7a/armeabi;项目用同一个 17KB APK 内含 arm64-v8a 与 armeabi-v7a 两份真 .so,在真机上验证进程为 32 位、nativeLibraryDir 指向 lib/arm,并加载 armeabi-v7a 的 .so。做这件事的原因是向下兼容链需要闭环到 32 位端,同时给开发窗口提供可执行的兼容红线。构建链不依赖 Gradle,全部在容器 find5-build 内用 JDK17、clang18、Android SDK 35 手工链完成,6 步出包、可重复。测试覆盖安装、权限、旋转、退后台/回前台、冷启动、内存压测、WebView 版本、崩溃捕获与恢复、包完整性校验。现状是 32 位端已闭环,老系统约束已实测确认:WebView 锁 Chromium 52,/data 仅剩 698MB,Java 堆上限 192MB,API 26+ 行为需降级分支;64 位新机分支尚未验证,需一台 64 位安卓机复核。

功能

  • 同一 APK 内含 arm64-v8a 与 armeabi-v7a 两份真 .so,体积 17KB
  • 容器 find5-build 内 6 步手工构建出包,可重复,不依赖 Gradle
  • Find5 实测 ABI、权限、旋转、冷启动、内存压测、WebView、崩溃恢复与包完整性
  • 固化老系统兼容红线:Chromium 52、/data 698MB、Java 堆 192MB、API 26+ 降级分支
  • 提供 ADB 通道维护与装包脚本:静态 IP .111、复用 transport、设备侧重启 adbd 排障

技术栈

Android SDK 35JDK17clang18aapt2d8apksignerADBDocker

使用 / 部署教程

1. 启动构建容器并出包

docker start find5-build
docker exec find5-build bash -lc 'cd /opt/app/find5probe && bash build.sh'

构建链在容器内用 JDK17、clang18、Android SDK 35 手工链完成,6 步出包,产物约 17KB。

2. 复制 APK

docker cp find5-build:/opt/app/find5probe/build/find5probe.apk /tmp/
scp /tmp/find5probe.apk nas:/root/

3. 建立 ADB 通道

ssh nas 'adb kill-server; adb start-server; sleep 3; adb connect 192.168.50.111:5555; adb -s 192.168.50.111:5555 get-state'

日常请复用已有 transport,别反复 connect;若出现 failed to connect 或 offline,从设备侧重启 adbd(关开一次 USB 调试或重启手机)。

4. 解锁并安装测试

锁屏时先执行唤醒、上滑、输入密码解锁;锁屏状态下 am start 不会把 App 拉到前台。然后执行:

ssh nas 'bash /root/find5-test.sh /root/find5probe.apk com.xiejun.find5probe .MainActivity'

5. 验证要点

查看 onCreate 计数、ABI 断言、相机权限、横竖屏重建、force-stop 后冷启动、内存压测、WebView 版本、崩溃日志与恢复、APK sha256。资料记录 Find5 上 Process.is64Bit()=false,nativeLibraryDir 指向 lib/arm;64 位分支需另找 64 位安卓机复核。

6. 清理

ssh nas 'adb -s 192.168.50.111:5555 uninstall com.xiejun.find5probe'
docker stop find5-build

卸载后 Finder 上也会消失;停止容器保留镜像与已装 SDK,下次 docker start 即可。

常见问题

为什么 APK 只有 17KB 还能包含两份 .so?

资料称同一个 17KB APK 内含 arm64-v8a 与 armeabi-v7a 两份真 .so,并按该交付报告记录;具体压缩或裁剪细节资料未展开。

为什么不用 Gradle 构建?

宿主没有 javac/clang 交叉环境,构建链在容器 find5-build 内用 JDK17、clang18、Android SDK 35 手工链完成,6 步出包、可重复,因此该容器链是必要方案。

如何确认装到设备上的包与工作区一致?

用 sha256 对比。资料记录设备 base.apk 与工作区 APK 的 sha256 一致,值为 2961a8d121ff9cb127cc48d66b75d04cde0eeb1a278aa18c6169f9a0e4b5924d。

64 位新机装同一 APK 要注意什么?

应复核 arm64-v8a 分支,预期显示 is64=true、nativeLibraryDir=.../lib/arm64、so_bits=64 so_arch=8;资料明确该分支尚未验证。

注意

  • 64 位端分支尚未验证,需一台 64 位安卓机(API 30+ 最佳)复核 is64=true、nativeLibraryDir=.../lib/arm64、so_bits=64 so_arch=8。
  • Find5 必须用静态 IP 192.168.50.111:MAC 随机化导致 DHCP 漂移;加次地址方案已放弃,因其 Wi-Fi 栈不为次地址回 ARP。
  • Android 7 的 adbd 有连接泄漏,异常时从设备侧关开 USB 调试或重启手机;日常复用已有 transport,别反复 adb connect。

评论

加载中…