gpt4 book ai didi

android - 使用 cmake : dlopen failed: library "libavutil.so.56" not found 集成 FFMPEG

转载 作者:行者123 更新时间:2023-11-29 18:39:08 35 4
gpt4 key购买 nike

此问题是此 other question of mine 之后的后续话题.

在最终设法使用 gradle 和 cmake 成功构建 apk 文件以将 FFMPEG 集成到 Android 项目之后,我遇到了调用 System.loadLibrary 时抛出的新异常。

java.lang.UnsatisfiedLinkError: dlopen failed: library "libavutil.so.56" not found
at java.lang.Runtime.loadLibrary0(Runtime.java:1016)
at java.lang.System.loadLibrary(System.java:1657)
at com.hmomeni.canto.activities.EditActivity.<init>(EditActivity.kt:26)
at java.lang.Class.newInstance(Native Method)
at android.app.Instrumentation.newActivity(Instrumentation.java:1174)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2669)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

这是导致错误的代码部分:

class EditActivity : AppCompatActivity(), View.OnClickListener {

init {
System.loadLibrary("Canto")
}
...
}

我尝试将 .so 文件移动到 PROJECT/app/jniLibs 中,然后将以下行添加到 build.gradle 文件中没有用。

sourceSets.main.jniLibs.srcDirs = ['./jniLibs/']

最佳答案

如果您按如下方式配置您的jniLibs.srcDirs:

sourceSets.main.jniLibs.srcDirs = ['./jniLibs/']

那么你的路径 app/jniLibs/ffmpeg/{ANDROID_ABI}/lib 不正确,你的 .so 文件将不会被你的构建系统找到和打包.

尝试让你的jniLibs结构如下:

jniLibs
│   ├── x86
│   ├── x86_64
│   ├── arm64-v8a
│   ├── armeabi-v7a

不要在{ANDROID_ABI}/后面添加lib


---编辑---

And after manually loading the libraries using System.loadLibrary I encountered a new error which indicates that libavutil has text relocations and it seems that for API-23 and above it is not permitted.

也许您应该尝试使用选项 --disable-asm-fPIC 构建您的 ffmpeg 以获得没有文本重定位的二进制文件。看这里https://stackoverflow.com/a/39965908/8034839 ,但看起来 NEON 仍然存在一些问题。

供您引用的另一个讨论: https://stackoverflow.com/a/50207091/8034839

关于android - 使用 cmake : dlopen failed: library "libavutil.so.56" not found 集成 FFMPEG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53419416/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com