android-jni 总结系列 -- so库打包给别的工程用

本文总结了如何将一个包含JNI的Android工程(CameraView)中生成的SO库(libyuv_shared.so)整合到另一个工程(skyview-s)中。通过创建一个新的接口Java类并定义native函数,将CameraView的libyuv_shared.so和picT.so导入到skyview-s的lib目录。由于picT.so依赖于CameraView的包名,需要同时引入CameraView的源码(打包为camera.jar)。经过此过程,SO库在skyview-s中成功运行。

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

我有一个工程,叫CameraView  里面用jni 首先把libyuv打包成so库。

然后在另一个mk文件里面引用这个so库 (libyuv_shared.so),生成一个新的so库(picT.so)。该库的主要功能为从java层传入两个surface 和yuv格式的画面(其实是摄像头的preview数据),然后直接显示 在这两个surface上。

这个工程是之前为了分屏显示摄像机拍到的画面,现在用于skyview-s 工程中。

在skyview-s中引入的时候我首先编写了一个新的传入两个surfaceview的java类作为接口。

然后在里面再次定义了native函数。接着把cameraview工程中生成的libyuv_shared.so 和 picT.so 都拷到了skyview-s工程的lib中(我估计libyuv_shared.so 不用再拷了)。如果这样直接build是不行的,一般会报错。我猜测是因为picT.so在生成的时候 关联的.h文件都是CameraView这个工程的包名为前缀的。因此我又将CameraView的src打包成camera.jar文件引入skyview-s 工程中。这样做后picT.so 就能工作了。引入jar跟别的sdk给的包的做法也是一致的。

后期可以再优化下camera.jar 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值