Android Studio运行项目时闪退(找不到so文件)
笔者在新电脑上运行之前做的项目时遇到了闪退问题。这个项目之前运行的一直很好,笔者找了很久才找到问题的原因。
笔者在新电脑上运行项目的时候,是运行在一个x86架构的模拟器上面的。笔者的项目中要生成一个so文件,而且笔者的项目中设置了so过滤,只留下了armeabi-v7a架构。然而Android Studio运行项目时只生成了x86架构的so文件,所以打包以后armeabi-v7a目录下就没有这个so文件。
解决方案也很简单,用Android Studio来Build一下APK就可以了,这样会生成所有支持的架构的so文件,然后再运行就不会报错了。
后记:后来经过反复测试发现Android Studio运行项目时只生成了x86架构的so文件的原因是Gradle版本太低。升级Gradle版本到5.4.1,Gradle插件版本到3.5.0就解决了这个问题。
查看CPU支持的ABIs优先级列表:
cat /system/build.prop | grep ro.product.cpu.abilist=
笔者的x86模拟器:
ro.product.cpu.abilist=x86,armeabi-v7a,armeabi
参考链接:
安卓项目中so库选择(ndk abiFilters设置armeabi-v7a)
指定ndk需要兼容的架构
defaultConfig { ndk { abiFilters "armeabi-v7a" // 只兼容armeabi-v7a架构 } }
各种CPU架构支持的ABIs优先级列表。
ARMv5 | armeabi(1) |
ARMv7 | armeabi(2)|armeabi-v7a(1) |
ARMv8 | armeabi(3)|armeabi-v7a(2)|arm64-v8a(1) |
x86 | armeabi(3)|armeabi-v7a(2)|x86(1) |
x86_64 | armeabi(4)|armeabi-v7a(3)|x86(2)|x86_64(1) |
MIPS | mips(1) |
MIPS64 | mips(2)|mips64(1) |
参考链接:
枫林的小窝额外CSS
pre { font-size: 0.8em; } code { background-color: rgba(0, 0, 0, 0.01); border: 1px solid rgba(51, 51, 51, 0.1); padding: 0.2em; } 注:/wp-content/themes/twentyfifteen/css/editor-style.css 也有改动
Google镜像站
Android EventBus
Android 开发之如何优雅地复制Assets文件到SD卡
字节数组(byte[])转16进制字符串(HexString)
public static String bytesToHexString(byte[] bytes) { StringBuffer stringBuffer = new StringBuffer(); String temp = null; for (int i = 0; i < bytes.length; i++) { temp = Integer.toHexString(bytes[i] & 0xFF); if (temp.length() == 1) { stringBuffer.append("0"); } stringBuffer.append(temp); } return stringBuffer.toString().toUpperCase(); }
参考链接: