android cpu架构兼容 so文件找不到
2016-12-15 17:01
375 查看
目前安卓cpu架构一共有七种类型:
armeabi,armeabi-v7a,x86,mips,x86_64,mips64,arm64_v8a
在使用第三方接口时,例如高德导航,百度定位,往往他们并没有提供64位的so文件,这时你新建上述那些文件夹,把so文件都拷贝一份是没有用的。
即使单纯把文件夹删了也是不管用的。
第一个原因:高德提供的so文件是32位的,所以只有这
armeabi,armeabi-v7a,x86,mips4个cpu架构是兼容的,并不会报错,拷贝文件无效。
第二个原因:即使没有创建这
x86_64,mips64,arm64_v8a三个文件夹,但是遇到这三种架构的手机依然报错,因为在你打包时,系统会自动添加这些文件夹,所以当手机去文件夹下找时,会报错,找不到。
java.lang.UnsatisfiedLinkError: dlopen failed: is 32-bit instead of 64-bit(Unknown Source)
所以解决方案就是:
一:只保留32位的文件夹
二:配置gradle,只生成32位的文件夹
android { compileSdkVersion 19 buildToolsVersion '24.0.0' def c52e aultConfig { multiDexEnabled true ndk { abiFilters "armeabi", "armeabi-v7a", "x86", "mips" } } }
这样64位架构的手机会自动到32位的文件夹下进行匹配so文件
附上一段查询CPU架构信息:
public List getMeminfo() {List memInfoList = new ArrayList();try {BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("/proc/meminfo")), 1000);String load = null;while ((load = reader.readLine()) != null) {long size = 0l;String[] toks = load.split(":");String sizeBuf = toks[1].trim();String[] sizeBufToks = sizeBuf.split(" ");size = Long.parseLong(sizeBufToks[0]); // kbmemInfoList.add(size);}reader.close();return memInfoList;} catch (IOException ex) {ex.printStackTrace();return null;}}
相关文章推荐
- Android cpu架构 so文件相关
- ANDROID开发中注意不同手机CPU架构对SO文件的不同需求。
- Android studio so文件 配置问题 CPU架构不同 apk缩小
- 关于Android的.so文件 CPU架构
- Android项目打包时指定支持的CPU架构,防止多余so文件
- Android按需打包多种ABI(cpu)架构的so文件库
- android64位机子兼容32位.so库文件
- android64位机子兼容32位.so库文件
- 关于在android开发时图像识别so文件不兼容的问题
- Android 关于arm64-v8a、armeabi-v7a、armeabi、x86下的so文件兼容问题
- Xamarin.Android编译提示找不到mscorlib.dll.so文件
- Android的.so文件、ABI和CPU的对应关系
- Xamarin.Android编译提示找不到mscorlib.dll.so文件
- android 5.0 ,zbar扫描java.lang.UnsatisfiedLinkError,找不到so文件
- Android的.so文件、ABI和CPU的关系
- 我的Android进阶之旅------>Android 关于arm64-v8a、armeabi-v7a、armeabi、x86下的so文件兼容问题
- Android 5.0以上手机出现找不到so文件
- Android的.so文件、ABI和CPU的关系
- [bug记录]Android5+运行带有so文件的项目时候找不到so文件异常
- android lib下不同的cpu类型 不同的.so文件