Flutter 專案 + OpenCV 與 Android 16KB Page Size 的那點事

💡 原文中文,约5000字,阅读约需12分钟。
📝

内容提要

本文探讨如何在 Flutter 项目中使用 OpenCV 4.5.2 进行图像处理,并满足 Google 2025 年的 16KB 页面大小规范。通过自定义插件直接调用 C++ API,避免使用过时的 Java 绑定。关键在于编译时启用 ANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES,以确保生成符合要求的动态库。

🎯

关键要点

  • 本文探讨如何在 Flutter 项目中使用 OpenCV 4.5.2 进行图像处理。
  • 自 2025 年起,Google Play 要求 target API 35 以上的应用支持 16KB 页面大小。
  • Flutter 应用通过自定义插件调用 C++ API,避免使用过时的 Java 绑定。
  • 编译时需启用 ANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES,以确保生成符合要求的动态库。
  • 使用 OpenCV 4.5.2 是为了与现有代码和模块兼容。
  • 编译环境包括 CMake、Ninja、Python、Java 和 Android SDK/NDK。
  • 下载 OpenCV 源代码并创建配置文件以支持 Flexible Page Sizes。
  • 编译完成后生成的动态库为 libopencv_world.so,而非 libopencv_java4.so。
  • 使用脚本检查生成的 APK/AAB 是否符合 16KB 页面大小的规定。
  • 放弃 libopencv_java4.so 是因为其在新环境下的兼容性问题,Flutter 插件只需连接 C++ 的 .so。
➡️

继续阅读