debug包在模拟器上正常运行,但是release包在模拟器上运行报错,用的是模拟器,模拟器的cpu/abi是x86。
异常信息:
2021-06-03 18:56:57.005 32225-32225/org.coming.securesms E/SignalUncaughtException: java.lang.RuntimeException: Unable to resume activity {org.coming.securesms/org.thoughtcrime.securesms.registration.RegistrationNavigationActivity}: java.lang.RuntimeException: java.util.concurrent.ExecutionException: java.lang.UnsatisfiedLinkError: dlopen failed: library "libflutter.so" not found
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:4444)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:4476)
at android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:52)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:176)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
Caused by: java.lang.RuntimeException: java.util.concurrent.ExecutionException: java.lang.UnsatisfiedLinkError: dlopen failed: library "libflutter.so" not found
at io.flutter.embedding.engine.loader.FlutterLoader.ensureInitializationComplete(FlutterLoader.java:283)
at io.flutter.embedding.engine.FlutterEngine.<init>(FlutterEngine.java:317)
at io.flutter.embedding.engine.FlutterEngine.<init>(FlutterEngine.java:260)
at io.flutter.embedding.engine.FlutterEngine.<init>(FlutterEngine.java:240)
at io.flutter.embedding.engine.FlutterEngine.<init>(FlutterEngine.java:160)
at io.flutter.embedding.engine.FlutterEngine.<init>(FlutterEngine.java:151)
at org.securesms.wallet.FlutterManager.getEngine(FlutterManager.java:48)
at org.securesms.wallet.FlutterManager.getFlutterWalletChannel(FlutterManager.java:96)
at org.securesms.wallet.WalletManager.initApi(WalletManager.java:256)
at org.securesms.wallet.WalletManager.init(WalletManager.java:201)
at org.thoughtcrime.securesms.registration.RegistrationNavigationActivity.onResume(RegistrationNavigationActivity.java:80)
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1456)
at android.app.Activity.performResume(Activity.java:8135)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:4434)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:4476)
at android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:52)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:176)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
Caused by: java.util.concurrent.ExecutionException: java.lang.UnsatisfiedLinkError: dlopen failed: library "libflutter.so" not found
at java.util.concurrent.FutureTask.report(FutureTask.java:123)
at java.util.concurrent.FutureTask.get(FutureTask.java:193)
at io.flutter.embedding.engine.loader.FlutterLoader.ensureInitializationComplete(FlutterLoader.java:200)
at io.flutter.embedding.engine.FlutterEngine.<init>(FlutterEngine.java:317)
at io.flutter.embedding.engine.FlutterEngine.<init>(FlutterEngine.java:260)
at io.flutter.embedding.engine.FlutterEngine.<init>(FlutterEngine.java:240)
at io.flutter.embedding.engine.FlutterEngine.<init>(FlutterEngine.java:160)
at io.flutter.embedding.engine.FlutterEngine.<init>(FlutterEngine.java:151)
at org.securesms.wallet.FlutterManager.getEngine(FlutterManager.java:48)
at org.securesms.wallet.FlutterManager.getFlutterWalletChannel(FlutterManager.java:96)
at org.securesms.wallet.WalletManager.initApi(WalletManager.java:256)
at org.securesms.wallet.WalletManager.init(WalletManager.java:201)
at org.thoughtcrime.securesms.registration.RegistrationNavigationActivity.onResume(RegistrationNavigationActivity.java:80)
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1456)
at android.app.Activity.performResume(Activity.java:8135)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:4434)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:4476)
at android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:52)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:176)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
Caused by: java.lang.UnsatisfiedLinkError: dlopen failed: library "libflutter.so" not found
at java.lang.Runtime.loadLibrary0(Runtime.java:1087)
at java.lang.Runtime.loadLibrary0(Runtime.java:1008)
at java.lang.System.loadLibrary(System.java:1664)
at io.flutter.embedding.engine.FlutterJNI.loadLibrary(FlutterJNI.java:116)
at io.flutter.embedding.engine.loader.FlutterLoader$1.call(FlutterLoader.java:152)
at io.flutter.embedding.engine.loader.FlutterLoader$1.call(FlutterLoader.java:147)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:923)
2021-06-03 18:56:57.010 32225-32225/org.coming.securesms I/JobManager: Successfully flushed.
2021-06-03 18:56:57.037 32225-32225/org.coming.securesms I/Process: Sending signal. PID: 32225 SIG: 9
为什么release包就报错?
查看debug包:
Coming-play-universal-debug-0.0.2.apk的lib目录下的arm64-v8a、armeabi-v7a、x86、x86_64下面都有libflutter.so,
查看release包:
Coming-play-universal-release-0.0.2.apk的lib目录下的arm64-v8a、armeabi-v7a、x86_64下面都有libflutter.so,就是x86目录下没有libflutter.so,真是神奇!
debug包是用./gradlew assemblePlayDebug命令打的,release包是用./gradlew assemblePlayRelease命令打的,为什么打出的debug包的x86目录下没有libflutter.so?实在费解。
网上看到有人说: “ flutter在打包Apk时不能同时引入arm32和arm64的libflutter.so ”,但是我这里测试是arm64-v8a、armeabi-v7a目录下面都可以打进去libflutter.so。
参考:
Flutter couldn’t find “libflutter.so”找不到libflutter库
关于最新版本的flutter在安卓打包的问题解决方法