release包,flutter报错: library “libflutter.so“ not found

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在安卓打包的问题解决方法

直接本地的 .aar 文件依赖项不支持构建 AAR。由于任何本地 .aar 文件依赖项的类和 Android 资源不会打在生成的 AAR 中,因此生成的 AAR 将无法使用。在这种情况下,Android Gradle 插件的早期版本也会生成损坏的 AAR(尽管不会抛出此错误)。如果您的 Flutter 项目中使用了本地的 .aar 文件依赖项,那么您需要将其转换为 Maven 依赖项,或者将其打为本地 Maven 存储库中的库。您可以使用以下步骤解决此问题: 1. 将本地的 .aar 文件依赖项转换为 Maven 依赖项。您可以使用以下命令将其转换为 Maven 依赖项: ``` ./gradlew :<module-name>:uploadArchives ``` 然后,您可以在项目的 build.gradle 文件中添加以下 Maven 依赖项: ``` repositories { mavenLocal() // other repositories } dependencies { implementation '<group-id>:<artifact-id>:<version>' // other dependencies } ``` 2. 将本地的 .aar 文件依赖项打为本地 Maven 存储库中的库。您可以使用以下步骤将其打为本地 Maven 存储库中的库: a. 在项目的 build.gradle 文件中添加以下 Maven 存储库: ``` repositories { mavenLocal() // other repositories } ``` b. 在本地 Maven 存储库中创建一个新的目录,并将 .aar 文件复制到该目录中。 c. 在 .aar 文件所在的目录中创建一个新的 build.gradle 文件,并添加以下内容: ``` apply plugin: 'maven' group = '<group-id>' version = '<version>' artifactId = '<artifact-id>' repositories { mavenLocal() } uploadArchives { repositories { mavenDeployer { repository(url: "file://${System.properties['user.home']}/.m2/repository") } } } ``` d. 在 .aar 文件所在的目录中运行以下命令: ``` ./gradlew uploadArchives ``` 然后,您可以在项目的 build.gradle 文件中添加以下 Maven 依赖项: ``` repositories { mavenLocal() // other repositories } dependencies { implementation '<group-id>:<artifact-id>:<version>' // other dependencies } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值