Есть ли кто-нибудь, кто может остановиться с этой ошибкой Android?Ошибка dlopen: не удается найти символ "bsd_signal", на который ссылается - PullRequest
0 голосов
/ 09 июля 2019

Я начал разрабатывать свою первую игру с нереальным движком 4, 6 месяцев назад.Я тестировал свою игру на четырех устройствах.OnePlus 5T, Samsung S9 и два младших класса Huawei.Для каждого тестового приложения не вылетало.До сих пор.

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)

Я пробовал самые высокие ndk (r18b) и sdk (SDK - 25.2, инструменты платформы - 26, инструменты сборки - 26), которые обрабатывают нереальный движок 4.22.Также я попробовал NDK R15 до R18 ..

1 Ответ

0 голосов
/ 09 июля 2019

На каком устройстве это работает?У вас есть доступ к нему?Похоже, что устройство неисправно, поскольку этот символ всегда был доступен для 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 включает его: <NDK>/toolchains/arm-linux-androideabi-4.9/prebuilt/<host>/bin/arm-linux-androideabi-readelf)

Если bsd_signal не определено в библиотеке, которую вы вытащили из устройства, устройство сломалось.К сожалению, любые обходные пути нужно будет применить к libUE4.so, который, я полагаю, вы не сможете восстановить самостоятельно.

...