可能是因为DexClassLoader加载的dex文件的so依赖路径没有正确配置,导致无法找到so文件。而使用System.loadLibrary直接加载so文件时,系统会按照默认的so库搜索路径去查找so文件,所以不会报错。

你可以尝试在DexClassLoader加载dex文件之前,通过设置DexClassLoader的父ClassLoader为当前线程的上下文ClassLoader,以确保so文件的依赖路径正确。

示例代码如下:

ClassLoader parentClassLoader = Thread.currentThread().getContextClassLoader();
DexClassLoader dexClassLoader = new DexClassLoader("your_dex_path", "your_optimized_dex_path", "your_lib_dir", parentClassLoader);

其中,"your_dex_path"是dex文件的路径,"your_optimized_dex_path"是优化后的dex文件的输出路径,"your_lib_dir"是so文件所在的目录。

注意:在使用DexClassLoader加载dex文件时,需要确保dex文件和so文件的路径正确,并且so文件的依赖库也已经正确配置

android开发:我用DexClassLoader加载dex进来后dex里面有一段逻辑是加载一个so执行后报错找不到so但是我不加载这个dex文件直接SystemloadLibrary加载这个so不会报错这是怎么回事?

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

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