AS中使用.SO库

错误提示部分代码:
java.lang.UnsatisfiedLinkError: Couldn’t load from loader dralvik.system.PathClassLoade[Dex

错误原因分析

可能原因1

自己项目中的.so库分配不全,例如项目中有armeabi,armeabi-v7a存放so文件的文件夹,如果armeabi中有a.so,那么armeabi-v7a也必须有a.so,CPU架构为armeabi-v7a才找得到a.so。

可能原因2

AndroidStudio使用jcenter或者maven关联第三方项目生成的.so时,由于自己项目存放的.so的路径和第三方的不一样,导致冲突。

本篇文章主要讲的是可能原因2

  AndroidStudio 2.0出来后,在这里吐槽下,有点卵用,那就是2.0的虚拟机。至于Instant Run,由于项目minSDKVersion是9,达不到15,基本用不上; Gradle 2.10编译速度尝试了,跟Gradle2.8没啥鸟差别,要不是自己怀有对以后会出更好的Gradle版本或者Android Gradle插件用在AndroidStudio2.0上,还是会选用AndroidStudio 1.5的,吐槽到此为止。
  
  最近在做Eclipse的Android项目迁移到AndroidStudio上的事。起初,项目中的一个主Android应用和3个依赖库项目的项目结构还是保留了ANT的结构。集成完之后,发现主Android应用的项目的libs中的.so库存储和使用jcenter动态加载的.so库不兼容,所以导致编译后,程序找不到对应.so文件的问题。
  

最后笔者解决问题的办法

  第一步:将Android项目结构改变成Gradle要求结构,其他依赖库项目可以保留ANT项目结构。然后在src/main下建立jniLibs文件夹,把自己项目原本libs中的.so包括各个cpu结构文件夹(例如:armeabi)拷贝到jniLibs下,如下图所示:
这里写图片描述
  这时编译项目运行并测试成功。(这一步一定要保证编译.so库测试成功,假如之前你集成了百度推送,关联百度推送库就有.so文件,这时测试推送是否正常)
  
  第二步:下载第三方库后(比如github上的master),其项目底下有类似libs的目录,或者其他存储.so文件的目录(你也可以将第三方demo的apk包解压获取里面的.so文件),将得到的.so文件拷贝到我们自己项目jniLibs中各个存储.so文件夹下。
  
  经过以上两步,第一种方案已完成。

扩展办法,笔者未尝试

  第一步:在module的Gradle中添加:

android {
sourceSets {
main {
jniLibs.srcDirs = [‘libs’]
}
}
}
  第二步:下载第三方库后(比如github上的master),其项目底下有类似libs的目录,或者其他存储.so文件的目录(你也可以将第三方demo的apk包解压获取里面的.so文件),将得到的.so文件拷贝到我们自己项目libs中各个存储.so文件夹下。
  
  经过以上两步,第二种方案已完成,这种方案未测试,不过原理和方案1类似,应该行得通。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于YOLOv8的各种瓶子识别检测系统源码(部署教程+训练好的模型+各项评估指标曲线).zip 平均准确率:0.95 类别:bottle 【资源介绍】 1、ultralytics-main ultralytics-main为YOLOv8源代码,里面涵盖基于yolov8分类、目标检测额、姿态估计、图像分割四部分代码,我们使用的是detect部分,也就是目标检测代码 2、搭建环境 安装anacondapycharm windows系统、mac系统、Linux系统都适配 在anaconda中新建一个新的envs虚拟空间(可以参考博客来),命令窗口执行:conda create -n YOLOv8 python==3.8 创建完YOLOv8-GUI虚拟空间后,命令窗口执行:source activate YOLOv8 激活虚拟空间 然后就在YOLOv8虚拟空间内安装requirements.txt中的所有安装包,命令窗口执行:pip install -r requirements.txt 使用清华源安装更快 3、训练模型过程 进入到\ultralytics-main\ultralytics\yolo\v8\detect\文件夹下,datasets即为我们需要准备好的数据集训练其他模型同理。 data文件夹下的bicycle.yaml文件为数据集配置文件,该文件为本人训练自行车检测模型时创建,训练其他模型,可自行创建。博文有介绍https://blog.csdn.net/DeepLearning_?spm=1011.2415.3001.5343 train.py中238行,修改为data = cfg.data or './bicycle.yaml' # or yolo.ClassificationDataset("mnist") 237行修改自己使用的预训练模型 若自己有显卡,修改239行,如我有四张显卡,即改成args = dict(model=model, data=data, device=”0,1,2,3“) 以上配置完成后运行train.py开始训练模型,训练完毕后会在runs/detect/文件夹下生成train*文件夹,里面包含模型和评估指标等 4、推理测试 训练好模型,打开predict.py,修改87行,model = cfg.model or 'yolov8n.pt',把yolov8n.pt换成我们刚才训练完生成的模型路径(在\ultralytics-main\ultralytics\yolo\v8\detect\runs\detect文件夹下),待测试的图片或者视频存放于ultralytics\ultralytics\assets文件夹, 运行predict.py即可,检测结果会在runs/detect/train文件夹下生成。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值