【问题标题】:Is there anybody who can halp with this android error ? dlopen failed: cannot locate symbol "bsd_signal" referenced by有没有人可以解决这个android错误? dlopen 失败:找不到符号“bsd_signal”引用
【发布时间】:2019-07-09 10:19:34
【问题描述】:

我在 4、6 个月前开始使用虚幻引擎开发我的第一款游戏。 我在四台设备上测试了我的游戏。一加5T、三星S9和华为两款低端。对于每个测试应用程序都没有崩溃。到现在为止。

1.7 我在 google play (Cubereeno) 上发布了我的游戏。 Google 向我报告此崩溃:

java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "bsd_signal" referenced by "/data/app/com.ParsleyDEV.Cubereeno-1/lib/arm/libUE4.so"...
FATAL EXCEPTION: main
Process: com.ParsleyDEV.Cubereeno, PID: 9840
java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "bsd_signal" referenced by "/data/app/com.ParsleyDEV.Cubereeno-1/lib/arm/libUE4.so"...
  at java.lang.Runtime.loadLibrary0(Runtime.java:994)
  at java.lang.System.loadLibrary(System.java:1533)
  at com.epicgames.ue4.GameActivity.<clinit>(GameActivity.java:6056)
  at java.lang.Class.newInstance(Native Method)
  at android.app.Instrumentation.newActivity(Instrumentation.java:1083)
  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2682)
  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2864)
  at android.app.ActivityThread.-wrap12(ActivityThread.java)
  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1567)
  at android.os.Handler.dispatchMessage(Handler.java:105)
  at android.os.Looper.loop(Looper.java:156)
  at android.app.ActivityThread.main(ActivityThread.java:6524)
  at java.lang.reflect.Method.invoke(Native Method)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:941)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:831)

我尝试了处理虚幻引擎 4.22 的最高 ndk (r18b) 和 sdk(SDK - 25.2, Platform tools - 26, Build tools - 26)。 我也试过 NDK r15 到 r18 ..

【问题讨论】:

  • 不是您的问题的答案,但是您从哪里得知 r18b 是最新的 NDK?最新的是r20。这不太可能解决您的问题,但如果有过时的文档声称 r18 是最新的,我需要修复它们。
  • 我尝试了处理虚幻引擎4.22的最高ndk。因此,r15 到 r18 :)

标签: android android-ndk unreal-engine4 google-contacts-api


【解决方案1】:

这是在什么设备上运行的?你可以访问它吗?该设备似乎已损坏,因为该符号一直可用于 32 位 Android 应用程序。

如果您确实可以访问该设备,您应该尝试:

$ adb pull /system/lib/libc.so
$ readelf -sW libc.so | grep bsd_signal

如果您使用的是 Windows,我认为以下步骤适用于第二步:

readelf -sW libc.so | findstr "bsd_signal"

(如果你没有安装 readelf,NDK 包含它:&lt;NDK&gt;/toolchains/arm-linux-androideabi-4.9/prebuilt/&lt;host&gt;/bin/arm-linux-androideabi-readelf

如果bsd_signal 未在您拉出设备的库中定义,则设备已损坏。不幸的是,任何解决方法都需要应用于 libUE4.so,我假设您无法重建自己。

【讨论】:

  • Google 控制台报告此设备:Pixel - Android 7.1、Mate 9 - 7.0、Moto Z - 7.0、Nexus 5X - 6.0。没有关于 android 8.0 或更高版本的设备的报告。我想我无法重建 libEU4.so
  • 不是 OP,而是类似的应用崩溃。堆栈是相同的,除了包名。 libUE4.so 引用“bsd_signal”,但 dlopen 失败;找不到符号。我拉了 libc.so 并阅读了它。它包含 bsd_signal。我正在开发 Oculus Quest
  • 如果设备的 libc.so(确保你的应用程序使用的是 re lib vs lib64)有 bsd_signal 并且没有被发现,那么这听起来像是该设备上的链接器中的错误。 github.com/KeepSafe/ReLinker 非常适合解决许多此类问题,因此值得一试。
猜你喜欢
  • 2022-01-25
  • 1970-01-01
  • 1970-01-01
  • 2014-10-22
  • 2016-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多