gpt4 book ai didi

android - 共享库 '/system/lib/libABC.so' 已被 CL 0x0 打开;无法在 0x429e5a50 中打开

转载 作者:行者123 更新时间:2023-11-30 03:07:28 25 4
gpt4 key购买 nike

在我的 Android 应用程序中,我遇到了崩溃。任何人都可以提供有关为什么会发生此崩溃的线索吗?

日志说:

Shared lib '/system/lib/libABC.so' already opened by CL 0x0; can't open in 0x429e5a50

这是否意味着该应用程序尝试在同一应用程序中多次加载 .so 使用System.loadLibrary("ABC")

可能是什么原因?

最佳答案

到目前为止,这是理解。

根据 Java 类加载器,相同的 .so 不能加载到不同的类中。在日志消息“Shared lib '/system/lib/libABC.so' already opened by CL 0x0; can't open in 0x429e5a50”中,CL 表示类加载器。

我们可以看到这部分android代码。这是android代码的路径

/android/dalvik/vm/Native.cpp

在此源文件中,如果我们从第 335 行到第 352 行观察这部分代码,我们可以看到导致我们找到此日志消息的代码路径。

   pEntry = findSharedLibEntry(pathName)
if (pEntry != NULL) {
if (pEntry->classLoader != classLoader) {
LOGW("Shared lib '%s' already opened by CL %p; can't open in %p",
pathName, pEntry->classLoader, classLoader);
return false;
}
if (verbose) {
LOGD("Shared lib '%s' already loaded in same CL %p",
pathName, classLoader);
}
if (!checkOnLoadResult(pEntry))
return false;
return true;
}

所以在这段代码中,如果你看到,如果两个不同的类试图加载同一个库,那么我们可以看到下面的代码部分正在执行。

   if (pEntry->classLoader != classLoader) {
LOGW("Shared lib '%s' already opened by CL %p; can't open in %p",
pathName, pEntry->classLoader, classLoader);
return false;
}

这就是我们遇到崩溃的地方。

感谢我的一位 friend 提供此信息。如果进行任何编辑以添加有值(value)的信息,我将不胜感激。

干杯!

关于android - 共享库 '/system/lib/libABC.so' 已被 CL 0x0 打开;无法在 0x429e5a50 中打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21569521/

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