flutter v1.12.7基础功能差不多完善了,但是当你需要需要调用原生so库时 你就会发现非常蛋疼的事情,特别是自己公司的sdk 这时候你只能写插件 如果公司提供的so库很全,那么编写插件的过程将会很愉快,当时很不幸,当你自己的so库只有32位 或者只有64位时,你就大概率会遇到如下问题
- 找不到自己sdk的so
2019-12-04 17:58:08.007 8581-8715/demo.o.com.flutter_smart_classroom E/NMT: Failed to load native library.
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader
[DexPathList[[zip file "/data/app/demo.o.com.flutter_smart_classroom-IlK5XHJPVMuNFi7s6AUIjQ==/base.apk"]
,nativeLibraryDirectories=[/data/app/demo.o.com.flutter_smart_classroom-IlK5XHJPVMuNFi7s6AUIjQ==/lib/arm64, /data/app/demo.o.com.
flutter_smart_classroom-IlK5XHJPVMuNFi7s6AUIjQ==/base.apk!/lib/arm64-v8a, /system/lib64, /system/vendor/lib64]]]
couldn't find "libdmt_native_utils.so"
at java.lang.Runtime.loadLibrary0(Runtime.java:1012)
at java.lang.System.loadLibrary(System.java:1669)
at com.nuance.dragon.toolkit.util.internal.NativeUtils.<clinit>(Unknown Source:2)
at com.nuance.dragon.toolkit.util.internal.NativeUtils.isArmV7(Native Method)
at com.nuance.dragon.toolkit.vocon.NativeVoconImpl.<clinit>(Unknown Source:10)
at com.nuance.dragon.toolkit.vocon.VoconRecognizer.<clinit>(Unknown Source:0)
at com.nuance.dragon.toolkit.vocon.VoconRecognizer.createVoconRecognizer(Unknown Source:0)
at com.o.vui.asr.rec.wakeup.c$5.subscribe(Unknown Source:204)
at io.reactivex.internal.operators.observable.ObservableCreate.subscribeActual(ObservableCreate.java:40)
at io.reactivex.Observable.subscribe(Observable.java:10910)
at io.reactivex.internal.operators.observable.ObservableSubscribeOn$SubscribeTask.run(ObservableSubscribeOn.java:96)
at io.reactivex.android.schedulers.HandlerScheduler$ScheduledRunnable.run(HandlerScheduler.java:109)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:207)
at android.os.HandlerThread.run(HandlerThread.java:65)
2019-12-04 17:58:08.008 8581-8715/demo.o.com.flutter_smart_classroom E/smart_classroo: No implementation found for boolean
com.nuance.dragon.toolkit.util.internal.NativeUtils.isArmV7() (tried Java_com_nuance_dragon_toolkit_util_internal_NativeUtils_isArmV7 and
Java_com_nuance_dragon_toolkit_util_internal_NativeUtils_isArmV7__)
我插件里明明配置了过滤cpu架构了
为什么不行呢
难道是example没配,对哦应该把flutter项目目录下的android/app/build.gradle的android defaultConfig里面配上 ndk { abiFilters “armeabi-v7a” }
buildTypes也配上
机智如我。
哎等等。这是什么鬼?
couldn’t find “libflutter.so”
--------- beginning of crash
2019-12-04 17:54:01.633 8276-8276/demo.o.com.flutter_smart_classroom E/AndroidRuntime: FATAL EXCEPTION: main
Process: demo.o.com.flutter_smart_classroom, PID: 8276
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader
[DexPathList[[zip file "/data/app/demo.o.com.flutter_smart_classroom-cHecrrVmyy3Ane6F5QL8bA==/base.apk"],
nativeLibraryDirectories=[/data/app/demo.o.com.flutter_smart_classroom-cHecrrVmyy3Ane6F5QL8bA==/lib/arm,
/data/app/demo.o.com.flutter_smart_classroom-cHecrrVmyy3Ane6F5QL8bA==/base.apk!/lib/armeabi-v7a, /system/lib, /system/vendor/lib]]]
couldn't find "libflutter.so"
at java.lang.Runtime.loadLibrary0(Runtime.java:1012)
at java.lang.System.loadLibrary(System.java:1669)
at io.flutter.embedding.engine.loader.FlutterLoader.startInitialization(FlutterLoader.java:122)
at io.flutter.embedding.engine.loader.FlutterLoader.startInitialization(FlutterLoader.java:93)
at io.flutter.view.FlutterMain.startInitialization(FlutterMain.java:45)
at io.flutter.app.FlutterApplication.onCreate(FlutterApplication.java:22)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1155)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6006)
at android.app.ActivityThread.access$1200(ActivityThread.java:201)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1679)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:207)
at android.app.ActivityThread.main(ActivityThread.java:6867)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:876)
这5000+的issues google的大佬们应该头应该大成这样了GOOgle
从茫茫多的回复中找到了解决我的问题的答案 指定打包参数
打32的
flutter build apk --debug --target-platform android-arm
打64的
flutter build apk --debug --target-platform android-arm64
然后手动安装,
adb install build/app/outputs/apk/debug/app-debug.apk
当然hotload你就用不了嘞,时不时感觉回到了android gradle running?
不得不说flutter中还是有很多不如意的地方比如编写插件得在as里当android项目打开插件的android,xcode里当ios项目打开ios 不然依赖的地方都报红,编辑不来,运行参数问题感觉也是个bug 往android手机上运行时漏读了build.gradle的参数导致找不到libflutter.so,希望可以flutter图形工具越做越好 bug越来越少