用fijkplayer开发Flutter视频软件的时候遇到闪退的问题
FlutterLoader: Flutter initialization failed.
java.util.concurrent.ExecutionException: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file “/data/app/com.example.playerapp-2/base.apk”],nativeLibraryDirectories=[/data/app/com.example.playerapp-2/lib/arm, /data/app/com.example.playerapp-2/base.apk!/lib/armeabi-v7a, /system/lib, /vendor/lib]]] couldn’t find “libflutter.so”
问题截图
其实最主要的问题是couldn’t find “libflutter.so”,出现这个问题主要是因为我们在集成融云的时候没有指明使用很多的so库,但实际和flutter一起打包编译的时候,flutter并没有每个平台都编译成flutter.so的库,所以实际运行的时候,就会出错。
解决办法:
- 打开android工程的主module(默认是app)下的build.gradle
- 修改 abiFilters 字段, 只指定单一架构. 针对手机的应用推荐使用 “armeabi-v7a”; 针对平板的应用推荐使用x86
更改配置:
buildTypes {
release {
ndk{
abiFilters "armeabi"
}
}
debug {
ndk {
//这里要加上,否则debug包会出问题,后面三个为可选,x86建议加上不然部分模拟器回报错
abiFilters "armeabi", "armeabi-v7a","arm64-v8a", "x86"
}
}
}
运行结果: