有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java不满意的链接错误libcrypto。所以1.0.0

在较新的Android版本中,应用程序启动时出现了不满意的LinkError异常。 看起来org.qtproject.qt5.安卓.QtNative.loadBundledLibraries正在尝试加载版本库,但无法加载

由于我的app.shell.ShellActivity.onCreate()没有直接加载lib(如下所示,没有{}),我不知道如何处理这个lib加载失败

public class ShellActivity extends QtActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

    if (running) {
        Log.e(TAG, "An instance of this activity is already running!");
        setResult(-2);
        finish();
        System.exit(-2);
        return;
    }
    running = true;
}
}

lib是在中配置的。如下图所示

app_安卓: contains(ANDROID_TARGET_ARCH,armeabi-v7a) {
LIBS += -L$$PWD/lib/安卓/ -lcrypto -lssl
ANDROID_EXTRA_LIBS = 
$$PWD/lib/安卓/libcrypto.so 
$$PWD/lib/安卓/libssl.so
}

CONFIG += app_安卓

请注意,该应用程序在其他较低的安卓版本(在4.4和5.1上测试)中运行良好,但在安卓 9.0(Pie)上失败

objdump output

libcrypto.so

file format elf32-little
NEEDED libdl.so
NEEDED libc.so
SONAME libcrypto.so

libapp.so

file format elf32-little

  NEEDED               libz.so
  NEEDED               libcrypto.so
  NEEDED               libssl.so
  NEEDED               libQt5Quick.so
  NEEDED               libQt5Multimedia.so
  NEEDED               libQt5Svg.so
  NEEDED               libQt5Widgets.so
  NEEDED               libQt5Gui.so
  NEEDED               libQt5Qml.so
  NEEDED               libQt5Network.so
  NEEDED               libQt5Sql.so
  NEEDED               libQt5SerialPort.so
  NEEDED               libQt5AndroidExtras.so
  NEEDED               libQt5Core.so
  NEEDED               libGLESv2.so
  NEEDED               libgnustl_shared.so
  NEEDED               liblog.so
  NEEDED               libdl.so
  NEEDED               libstdc++.so
  NEEDED               libm.so
  NEEDED               libc.so
  SONAME               libshell.so

stacktrace如下所示。知道怎么解决吗

05-08 14:29:26.513 26065-26065/app.shell W/System: ClassLoader referenced unknown path:
05-08 14:29:26.704 26065-26065/app.shell W/System.err: java.lang.reflect.InvocationTargetException
05-08 14:29:26.705 26065-26065/app.shell W/System.err: at java.lang.reflect.Method.invoke(Native Method)
at org.qtproject.qt5.安卓.bindings.QtLoader.loadApplication(QtLoader.java:241)
at org.qtproject.qt5.安卓.bindings.QtLoader.startApp(QtLoader.java:676)
at org.qtproject.qt5.安卓.bindings.QtActivityLoader.onCreate(QtActivityLoader.java:183)
at org.qtproject.qt5.安卓.bindings.QtActivity.onCreateHook(QtActivity.java:266)
at org.qtproject.qt5.安卓.bindings.QtActivity.onCreate(QtActivity.java:273)
at app.shell.ShellActivity.onCreate(ShellActivity.java:41)
at 安卓.app.Activity.performCreate(Activity.java:7326)
at 安卓.app.Activity.performCreate(Activity.java:7317)
at 安卓.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
05-08 14:29:26.706 26065-26065/app.shell W/System.err: at 安卓.app.ActivityThread.performLaunchActivity(ActivityThread.java:3066)
at 安卓.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3229)
at 安卓.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at 安卓.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at 安卓.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at 安卓.app.ActivityThread$H.handleMessage(ActivityThread.java:1926)
at 安卓.os.Handler.dispatchMessage(Handler.java:106)
at 安卓.os.Looper.loop(Looper.java:214)
at 安卓.app.ActivityThread.main(ActivityThread.java:6981)
at java.lang.reflect.Method.invoke(Native Method)
at com.安卓.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.安卓.internal.os.ZygoteInit.main(ZygoteInit.java:1445)
Caused by: java.lang.UnsatisfiedLinkError: dlopen failed: library "libcrypto.so.1.0.0" not found
at java.lang.Runtime.load0(Runtime.java:928)
at java.lang.System.load(System.java:1633)
at org.qtproject.qt5.安卓.QtNative.loadBundledLibraries(QtNative.java:209)
at org.qtproject.qt5.安卓.QtActivityDelegate.loadApplication(QtActivityDelegate.java:599)
... 22 more

SO会议上提出了一些解决方案,但那就是修补问题。所以,向新索纳姆提交文件。在这种情况下,我在精灵中的奏鸣曲是未版本的。如果我对其进行十六进制编辑并添加版本,我想它要么会破坏已经在较旧的安卓版本上运行的应用程序,要么会完全破坏应用程序。所以加载/重新加载

你知道为什么没有版本更新的安卓会尝试加载版本更新的安卓吗


共 (0) 个答案