java.lang.UnsatifiedLinkError:未找到本机方法。解决与其他共享LIB的冲突

java.lang.UnsatifiedLinkError:未找到本机方法。解决与其他共享LIB的冲突,java,android,android-ndk,java-native-interface,shared-libraries,Java,Android,Android Ndk,Java Native Interface,Shared Libraries,结果表明,下面描述的地址问题是正常的。太沮丧了 ======================================================== 事实证明,这与下载v7无关。我还发现,当崩溃发生时,它在同一地址加载了另一个共享库。为什么会这样?如有任何建议,将不胜感激 08-26 21:10:24.640 D/dalvikvm(13686): Trying to load lib /data/data/com.xxx/mylib/libcodec_v7.so 0x41d3d748

结果表明,下面描述的地址问题是正常的。太沮丧了

========================================================

事实证明,这与下载v7无关。我还发现,当崩溃发生时,它在同一地址加载了另一个共享库。为什么会这样?如有任何建议,将不胜感激

08-26 21:10:24.640 D/dalvikvm(13686): Trying to load lib /data/data/com.xxx/mylib/libcodec_v7.so 0x41d3d748
08-26 21:10:24.875 D/dalvikvm(13686): Added shared lib /data/data/com.xxx/mylib/libcodec_v7.so 0x41d3d748
08-26 21:10:24.875 D/dalvikvm(13686): No JNI_OnLoad found in /data/data/com.xxx/mylib/libcodec_v7.so 0x41d3d748, skipping init
08-26 21:10:24.890 D/dalvikvm(13686): Trying to load lib /mnt/asec/com.xxx-1/lib/libfont.so 0x41d3d748
08-26 21:10:24.937 D/dalvikvm(13686): Added shared lib /mnt/asec/com.xxx-1/lib/libfont.so 0x41d3d748
08-26 21:10:24.937 W/dalvikvm(13686): No implementation found for native Lcom/xxx/xxxCodecWrapper;.decode:(I[B[BII)I
08-26 21:10:24.937 W/dalvikvm(13686): threadid=66: thread exiting with uncaught exception (group=0x41720700)
==============================以下是旧的描述============================

我的应用程序有一个内置的“a_v5.so”,并将在wifi下自动下载“a_v7.so”。使用System.load加载“a_v7.so”(如果存在)。 除了约0.1%的用户因“java.lang.UnsatifiedLinkError:Native method not found”而崩溃外,所有操作都正常。只坠毁过一次

以下是一些关键代码:

1. download finished thread
    String tempPath = getTempPath();
    if (null != tempPath && !tempPath.equals("")) {
        deleteDirectory(tempPath);
        File dir = new File(tempPath);
        if (dir.mkdir()) {
            FileUtils.uncompressZip(zipPath, tempPath);
            synchronized (SOME) {
                if (!alreadyUsingV7) {
                    deleteDirectory(dstPath);
                    FileUtils.rename(tempPath, dstPath);
                }
            }
        }
    }
2. loading thread
    synchronized(SOME) {
        boolean soFileExist = new File(libPath).exists();
        if (soFileExist) {
            try {
                // load v7
                System.load(libPath);
            } catch (UnsatisfiedLinkError e) {
                // load v5
                SoLoadUtil.loadSoByName(ctx, libName);
            }
        } else {
            // load v5
            SoLoadUtil.loadSoByName(ctx, libName);
        }
    }

忘了记住,只有cpu架构师armv7和armv8的手机才会下载并使用这个armv7 soI。我发现我错过了使用过的jobject和jclass,我想这就是原因。