安卓开发导入使用第三方 jar 提示找不到.so 文件,救救小子吧~

33 天前
 jinker

PDA ,型号 HC720S ,usb 连接后,内部文件里有找到文档和 lib 文件夹,里面有 jar 包,以及.so 文件。

项目是 kotlin 的,本人很少接触安卓开发,导入成功后,没有错误提示后就点击运行了,结果闪退,logcat 显示的信息关键部分:

java.lang.UnsatisfiedLinkError: dlopen failed: library "libIAL.so" not found
                                                                                                    	at java.lang.Runtime.loadLibrary0(Runtime.java:1077)
                                                                                                    	at java.lang.Runtime.loadLibrary0(Runtime.java:998)
                                                                                                    	at java.lang.System.loadLibrary(System.java:1656)
                                                                                                    	at com.atid.lib.dev.barcode.params.ATScanSE4710Parameter.<clinit>(ATScanSE4710Parameter.java:36)
                                                                                                    	at com.atid.lib.dev.ATScanner.<init>(ATScanner.java:106)
                                                                                                    	at com.atid.lib.dev.ATScanManager.checkDevice(ATScanManager.java:251)
                                                                                                    	at com.atid.lib.dev.ATScanManager.getInstance(ATScanManager.java:114)
                                                                                                    	at com.example.cpdac.MainActivity.onCreate$lambda$1$lambda$0(MainActivity.kt:60)

文件"libIAL.so"我已经跟着网上教程放到 jniLibs 下的 aremabi 了,还是不行。这是我的项目文件夹架构:

1444 次点击
所在节点    Android
6 条回复
cheng6563
33 天前
aremabi 一般指旧版 arm 架构。 现在的 32 位 arm 架构是 armeabi-v7a ,64 位是 arm64-v8a 。
shayebushi
33 天前
app/build.gradle, 只保留 armeabi 试试
ndk {
abiFilters "armeabi", "armeabi-v7a", "arm64-v8a"
}
daohanghao
33 天前
android {

sourceSets {
main {
jniLibs.srcDirs = ['src/main/jniLibs']
}
}
}
okakuyang
33 天前
大概率是因为 so 文件架构不对,aremabi 是比较老的架构了
mmrpeng
33 天前
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
然后 libs
├─arm64-v8a
└─armeabi-v7a
放对应 arch 的 so 库文件
jinker
33 天前
感谢各位帮助。

@shayebushi 感谢大佬,跟着做解决了这个问题。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1089910

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX