可能是因为 DexClassLoader 加载的 dex 文件的 so 依赖路径没有正确配置,导致无法找到 so 文件。而使用 System.loadLibrary 直接加载 so 文件时,系统会按照默认的 so 库搜索路径去查找 so 文件,所以不会报错。\n\n你可以尝试在 DexClassLoader 加载 dex 文件之前,通过设置 DexClassLoader 的父 ClassLoader 为当前线程的上下文 ClassLoader,以确保 so 文件的依赖路径正确。\n\n示例代码如下:\njava\nClassLoader parentClassLoader = Thread.currentThread().getContextClassLoader();\nDexClassLoader dexClassLoader = new DexClassLoader("your_dex_path", "your_optimized_dex_path", "your_lib_dir", parentClassLoader);\n\n\n其中,"your_dex_path" 是 dex 文件的路径,"your_optimized_dex_path" 是优化后的 dex 文件的输出路径,"your_lib_dir" 是 so 文件所在的目录。\n\n注意:在使用 DexClassLoader 加载 dex 文件时,需要确保 dex 文件和 so 文件的路径正确,并且 so 文件的依赖库也已经正确配置。

Android 开发:DexClassLoader 加载 dex 文件时 so 找不到解决方法

原文地址: https://www.cveoy.top/t/topic/qaEv 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录