so没有打包进AKP导致java.lang.UnsatisfiedLinkError: dlopen failed: library “lib.so“ not found

Posted 柳鲲鹏

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了so没有打包进AKP导致java.lang.UnsatisfiedLinkError: dlopen failed: library “lib.so“ not found相关的知识,希望对你有一定的参考价值。

  • 具体错误
/androidRuntime: FATAL EXCEPTION: BaseActivity
    Process: com.serenegiant.usbcameratest, PID: 5494
    java.lang.UnsatisfiedLinkError: dlopen failed: library "libjpeg-turbo1500.so" not found
        at java.lang.Runtime.loadLibrary0(Runtime.java:1087)
        at java.lang.Runtime.loadLibrary0(Runtime.java:1008)
        at java.lang.System.loadLibrary(System.java:1664)
        at com.serenegiant.usb.UVCCamera.<clinit>(UVCCamera.java:119)
        at com.serenegiant.usbcameratest.MainActivity$2$1.run(MainActivity.java:143)
        at android.os.Handler.handleCallback(Handler.java:938)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:236)
        at android.os.HandlerThread.run(HandlerThread.java:67)
  • 原因分析

  这种情形一般出现于:app依赖于某个jni项目。你以为jni项目编译过了,app依赖也正确,就可以把so打包到apk?图样图森破。

  • 解决办法

首先在app目录中,搜索so的位置,一般应该是lib。

然后在build.gradle中配置:

android {
	......
	sourceSets {
		main {
			jniLibs.srcDirs = ['libs']
		}
	}

另有参考文章:

https://blog.csdn.net/quantum7/article/details/10850610

以上是关于so没有打包进AKP导致java.lang.UnsatisfiedLinkError: dlopen failed: library “lib.so“ not found的主要内容,如果未能解决你的问题,请参考以下文章

如何把ndk编译出来的可执行文件伪装成so打包到apk中

Android So加载的路径选择

C++学习(四三七)so打包到apk变小了

android studio 怎么将so打包成jar

Android apk打包有so,运行没有so

Android apk打包有so,运行没有so