移植 C/C++ 代码至 Android 平台经验总结

本文总结了将C/C++代码及依赖Tensorflowlite、OpenCV库移植到Android平台的经验。移植分为构建针对Android ABI的native代码和创建JNI Wrapper两步。需确保预构建库与目标CPU架构兼容,设置Shared Library的SONAME信息,并注意NDK不支持Shared Library依赖Static Library。此外,提供了一些实用的检查和构建命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  算法同学提供了一个图像分析能力,使用 C/C++ 实现,依赖了 Tensorflowlite、 OpenCV 等库。要在 Android 上使用这个能力,需要进行移植。移植可分为两步,第一步是面向 Android 设备的指令集构建 C/C++ 代码以及其依赖的库,第二步是编写一个 Wrapper 封装第一步生成的库并供 JNI 调用。

  针对第一步,我们首先要知道我们要部署的 Android 设备用的是什么型号的 CPU,它支持的指令集有哪些,存储是大端还是小端,我们要构建的是 native code,没有中间解释或适配,必须是 CPU 能直接理解的,Android 把指令集有哪些,存储是大端还是小端等特性组合抽象为了 ABI(Android Binary Interface),即 arm64-v8a, armeabi-v7a。我们把 Wrapper 作为主体,算法同学的 C/C++ 代码是我们依赖,Tensorflowlite、OpenCV 是我们的间接依赖。我们要确保 prebuilt 的间接依赖的构建架构和我们要部署的 CPU 的架构(ABI)是一致的,否则无法兼容。另外注意 Android Dynamic Linker 的特性,为 Shared Library 提供 SONAME 信息,否则无法加载成功。具体的请参见问答以及

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值