首页 > 编程知识 正文

androidx86加装arm库,so库官网请不要用

时间:2023-05-03 15:18:33 阅读:48503 作者:3518

使用so库的开采记录进行安卓开发的话会遇到各种各样的问题。 我不怕遇到问题。 如果能解决并知道理由,在下一次遭遇中马上解决就好了,今天就谈谈这个so库的使用开采场。

通常,在使用某些第三方SDK时,需要将一些so库放入项目中。 这里分为两个阶段,但实际上,放在第一阶段,用于第二阶段。 两个步骤都有孔。 幸运的是,我踩了,所以记录下来:

普通的so库是用c或c编写的。 Android只需要调用,但这些依存库通常有几个版本文件。 例如,如下图所示,看看百度的文字识别SDK。

上面有四个文件夹3358www.Sina.com/,arm64-v8aarmeabiarmeabi-v7a。 这四个文件代表不同的so库版本,基本上是可行的,所以怡宝虎在使用第三方SDK时,首先要做的就是使用真机。 请不要使用虚拟机。 作为人,请不要顽固。 出了问题痛苦的是你自己。

下面的jar包是常规的Java机架包,其中封装了几种方法。 怡园项目加载此机架软件包后,可以调用其中的方法。 你如何确定这个jar是否加载到你的项目中?

看看这个架子包能否展开。 如下图所示。

当然,有些人现在可以部署jar包,但无法在项目中调用方法。 这个时候,关掉安卓studio沏茶,看看窗外的风景,然后打开安卓studio就可以了。

再通俗一点说,去网吧玩游戏,玩得开心的时候电脑堵塞了。 这个时候,你切断电源重新启动就可以了。 一样的。 你现在先这么理解就好了。 刨根问底没有好下场吗? 反派话多! 只有浇了酱油的人才能活到大结局。

你可以看到我的jar放在libs下面。 什么事? 在你的项目中没有找到libs文件夹吗?

那你把你的项目切换到项目上就行了。 可以找到。 如果找不到,就会向谷歌投诉,欺骗消费者。 因为没用过钱,所以都是白色卖淫。

然后,将包含该so库的四个文件夹和jar包放在此libs下。

Android通常在缺省情况下读取jniLibs下的文件,但必须由开发人员手动创建,而不是在创建项目时创建。 但是你也可以省略这一步,放在libs上。 要执行此操作,必须在app下的build.gradle的android{}闭包下添加这样的代码。

//.so的路径为libs下的sourcesets { main { JNI libs.srcdirs=[ ' libs ' } }写了注释。 既然你默认读取jniLibs文件,我会将你的默认读取文件夹更改为libs下。 这样就好了。 意味着同步配置资源。

设置完成后,运行项目并调用so库中的代码时。

看到这样的误报,你问我会不会慌张? 不慌张就看不到我这篇文章,哥哥嘎! 其实上面的山是错的。 我最想要的只有一句话。

couldn’t find“libleveldb.so”别管这个libleveldb是什么,只要知道现在是so库就行了。 刚才指向libs文件夹,为什么找不到这个so库? 这不是开玩笑吗?

其实解决了很多。 so库是ndk开发的,不同的so库具有不同的配置,所以如果怡红虎的正常配置不能解决问题,可以尝试新的游戏。

在app模块下的build.gradle的defaultConfig{}闭包中添加以下代码:

ndk { ABI过滤器' arme ABI-v7a ',' x86' }这是ndk的过滤器。 然后,请再执行一次。 如果仍然说找不到的话,请再更改一次。

记得ndk { abiFilters 'armeabi '、' x86 '、' armeabi-v7a '和' arm64-v8a' }在更改后应为Sync或Sync Now。 否则,你的更改无效。

以上操作基本上可以解决我找不到第一个so库的问题。

然后我调用里面的方法,再执行一步。

重点也是一句话:

oimplementationfoundforbooleancom.ABC.level db.open (Java.lang.string (三向Java _ com _ ABC _ level db _ oper 在这个包下面的班级里。 这个错误很奇怪。 一般的第三方不会因为你的包名更改而引起问题,但巧妙就在这里。 如果你这个so库是个人创建的,那就有可能了。 那样的话,你就不能随便改那个班的包名了。 例如。

上图中有包名称和两个实现类,在实现类中调用了so库中的代码。 这是本来的样子,但是我觉得这个包名太长了,没什么意义,所以改如下。

然后,报告了错误的事情。 这表明,在编写此so库时,必须确定要使用哪个包名称,并且不能更改包名称。 更改后,找不到这个下面的类,里面的方法无法使用,程序崩溃。 就像钥匙和钥匙的关系一样,钥匙保持原样,钥匙变了就打不开了。

这样说来就可以理解了,怡景虎后面跟着一个叫做No implementation found for的开头,后面跟有下划线的包名类名,也和so库有关,就是这样的我正在写实际解决问题的过程。 但是项目的环境因人而异。 因此,有很多事情需要尝试。

如果你有不同的解决方法的话请告诉我。 我也添加到文章中。 高水长,稍后会有期~

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。