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。
➡️