背景
- 主工程是gradle4.8 jdk1.8 启用jetifier
- 要接入的usb摄像头的库是UVCAndroid gradle8.7 jdk17
接入过程
- 看了下setCallbackActivity非常适合我们的需求,而且回调后的数据是RGB888,看到demo中用到了xml若干于是想到用aar打包,整个过程也没什么问题
- 接着在主工程调用aar的包,发现报错说是要求把jetifier设为false
- 按照要求做了之后发现报错如下
咨询发现可能是涉及到移植到Androidx的问题,遂放弃
- 写了个简单的demo,在gradle8.7 jdk17的情况下可以调用成功aar。
- 但是有个问题,我们的主工程版本是gradle4.8,没办法只能升级我们的gradle版本,升级后发现native有个函数报错,升级之后要改的东西还是很多,sdk,api什么都要升级 要进行全面的测试 工期短 不能这么大动干戈 于是放弃
- 最后尝试在主工程的同级目录使用module模块加载native工程,效果还是不理想,native工程的版本gradle都是jdk17级别的,gradle至少8.7网上,折腾了很久于是放弃
- 不得以只能采取jar native的方式引入,写了一个lowgradle的工程和我们主工程的gradle版本一样都是4.8,运行发现还是报错,jdk8不能运行jdk17编译的jar,折腾了很久发现这个库居然可以用jdk1.8编译成功,于是接入成功,最起码可以跑了,但是运行崩溃,报错如下:
缺少xml,于是补上xml,还是崩溃,迫不得已,把xml中的数据以字符串的形式写死,然后用xml解析器解析,重新编译jar和so
最后运行报错说是没得权限,加上usb,backgroundservice之后一切都好了,也能获取到实时帧数据了,就是还有些gl渲染的报错,不过已经关系不大了。
上面每个过程都让人折腾了很久,做了5天终于成功了