集成阿里热修复找不到so的问题
来源:互联网 发布:vba编程 编辑:程序博客网 时间:2024/06/06 21:19
集成阿里AndFix热修复的过程很简单,但是其中可能会遇到一些错误,比如so库的问题:
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/-2/base.apk"],nativeLibraryDirectories=[/data/app/-2/lib/arm64, /data/app/com.ccipa.wlw-2/base.apk!/lib/arm64-v8a, /vendor/lib64, /system/lib64]]] couldn't find "libutility.so"
原因是我们的项目集成了别人的库而且使用到了so库,一般情况下只需要armeabi-v7a的so或者armeabi、arm64-v8a就可以了。我的项目是只用了v7a的so,其他的都没有使用,然后在初始化AndFix时遇到上面的错误,很明显是找不到arm64-v8a下面的so。所以我就在jniLibs下创建了arm64-v8a文件夹,然后把v7a包下的so拷贝了一份放在了里面,然后接着运行,这时发现又出现了如下的问题:
java.lang.UnsatisfiedLinkError: dlopen failed: "/data/app/-1/lib/arm64/libutility.so" is 32-bit instead of 64-bit发现是abi架构64bit的问题,那就过滤掉64bit的文件,全部使用32bit的,把新建的arm64-v8a的文件以及so再删除掉,在gradle中添加:
android { defaultConfig { ndk { abiFilters "armeabi-v7a" } }
再次运行,发现不在出现问题,饶了一小圈,文件没有任何变化,只是在gradle添加了过滤。这里说明一下,如果你的项目中依赖了别人的库,并且添加了so文件,比如只添加了v7a的so,则在gradle中添加过滤时只能是
android { defaultConfig { ndk { abiFilters "armeabi-v7a" } }}
如果还有其他处理架构,如写成:defaultConfig { ndk { abiFilters "armeabi-v7a", "armebi", "arm86-v8a", "x86" } }则必须要添加对应架构下的so,否则仍然会出现找不到so的问题。
阅读全文
0 0
- 集成阿里热修复找不到so的问题
- 阿里Sophix热修复的简单集成和使用
- 热修复tinker 更新.so出现的问题
- 阿里最新热修复框架Sophix集成详解
- 阿里热修复Andfix的Java实现
- 阿里HotFix热修复的简单使用
- 阿里热修复
- Android热修复之 - 阿里开源的热补丁
- 集成热修复
- Android热修复之—阿里热修集成和使用指南
- Android热修复框架Tinker的集成和遇到的问题
- 关于微信Tinker热修复自己的集成方式以及问题
- Android热修复—阿里的新一代热修复技术Sophix
- Android热修复—阿里的新一代热修复技术Sophix
- Android热修复—阿里的新一代热修复技术Sophix
- AndHotFix 阿里HotFix(热修复)
- 阿里热修复方案Sophix
- 阿里热修复框架Sophix
- FTP内部常用命令
- 经常用到的字符串截取
- thymeleaf快速入门教程
- 多线程编程之二——MFC中的多线程开发
- mysql sum 统计字段数值类型是double出现精度失真问题
- 集成阿里热修复找不到so的问题
- Python机器学习库scikit-learn实践
- 如何在linux下 查看设备 型号,属性
- CAN 总线入门教程(1)
- java(md5) 加密解密简单实现
- TCP-IP学习笔记(五)——链路层
- ios画虚线的方法
- lintcode--最大子数组差
- git制作包含新文件的补丁patch方法