交付形态
本页只解释 Android 手机影像项目中两类原生(native)产物的职责,不提供 NDK、Gradle、JNI 实现或 APK 打包教程。
开发期产物
Android 手机影像算法通常用 C++ 编写,开发阶段先把核心算法编译成可执行文件,在 PC 或设备上读取 YUV、RAW、RGBA 等图像数据或图片序列,用于检查结果与回归测试。
设备端验证的方式:
- 用
adb push将程序和测试数据放进/data/local/tmp,再从 shell 运行; - 程序直接调用算法,不需要先接入 App,问题边界更清晰;
- 验证完成后算法才会封装成动态库 SDK,仿真程序通常不是最终上线交付物。
提示交付边界
可执行文件服务于开发期仿真和验证。它可以随测试包进入设备,但不等于面向用户发布的 App 组件。
交付动态库
在 Android 手机影像开发中,动态库是算法上线时的常见交付形式,算法团队把 C++ 核心按 ABI(应用二进制接口)编译成 .so:
- 这些
.so连同头文件、模型、配置、JNI(Java 与 C++ 的接口)封装和集成文档组成 SDK,App、相机或系统模块通过 JNI 调用,不直接接触算法源码; - 这种交付方式便于独立编译算法、复用模块、适配不同硬件,也能减少上层对源码和模型的直接依赖;
- 跨语言接口通常使用
extern "C"暴露稳定的 C 风格函数,并避免直接传递复杂 C++ 对象,以降低兼容风险; .so通常随 APK、AAB 或系统插件发布,仍受签名和应用商店政策限制,不是无条件热更新。
常见交付链路
C++ 核心 → 可执行程序仿真 → 按 ABI 提供的 .so SDK → JNI 集成 → App/相机上线
本章回顾
可执行文件负责开发期的仿真和验证,动态库 SDK 负责上线集成。两者共用同一套 C++ 核心,但交付对象、运行方式和关注点不同。