Google Play 商店“未找到库 libflutter.so”错误

Vah*_*ouz 7 android google-play google-play-services android-studio flutter

在此输入图像描述我在 Wear OS 设备上进行 Google Play 商店测试时报告了此稳定性问题:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.alsat/com.alsat.MainActivity}: java.lang.RuntimeException: java.util.concurrent.ExecutionException: java.lang.UnsatisfiedLinkError: dlopen failed: library "libflutter.so" not found
Run Code Online (Sandbox Code Playgroud)
Exception java.lang.RuntimeException: Unable to start activity ComponentInfo{com.alsat/com.alsat.MainActivity}: java.lang.RuntimeException: java.util.concurrent.ExecutionException: java.lang.UnsatisfiedLinkError: dlopen failed: library "libflutter.so" not found
  at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:3449)
  at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:3601)
  at android.app.servertransaction.LaunchActivityItem.execute (LaunchActivityItem.java:85)
  at android.app.servertransaction.TransactionExecutor.executeCallbacks (TransactionExecutor.java:135)
  at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:95)
  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:7651)
  at java.lang.reflect.Method.invoke
  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:345)
  at io.flutter.embedding.engine.FlutterEngine.<init> (FlutterEngine.java:327)
  at io.flutter.embedding.engine.FlutterEngine.<init> (FlutterEngine.java:207)
  at io.flutter.embedding.android.FlutterActivityAndFragmentDelegate.setupFlutterEngine (FlutterActivityAndFragmentDelegate.java:272)
  at io.flutter.embedding.android.FlutterActivityAndFragmentDelegate.onAttach (FlutterActivityAndFragmentDelegate.java:181)
  at io.flutter.embedding.android.FlutterActivity.onCreate (FlutterActivity.java:495)
  at android.app.Activity.performCreate (Activity.java:7998)
  at android.app.Activity.performCreate (Activity.java:7978)
  at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1309)
  at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:3422)
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:239)
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:141)
  at io.flutter.embedding.engine.loader.FlutterLoader$1.call (FlutterLoader.java:189)
  at io.flutter.embedding.engine.loader.FlutterLoader$1.call (FlutterLoader.java:182)
  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)
Run Code Online (Sandbox Code Playgroud)

Swi*_*ing 9

考虑使用abiFiltersAndroid Gradle 插件 API 来限制 APK 中支持的架构。这样做可以避免丢失libflutter.so运行时崩溃,例如:

android {
  //...
  defaultConfig {
    ndk {
      // Filter for architectures supported by Flutter.
      abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86_64'
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

Flutter 引擎有x86和x86_64版本。在调试 Just-In-Time (JIT) 模式下使用模拟器时,Flutter 模块仍然可以正常运行。

参考: https: //docs.flutter.dev/add-to-app/android/project-setup


Fir*_* AT 5

我通过将以下 abiFilters 添加到 android/app/build.gradle 来修复此问题,如下所示:

 defaultConfig {
    applicationId "com.your-project-name"
    minSdkVersion 24
    targetSdkVersion 33        
    ndk {
        abiFilters 'arm64-v8a', 'armeabi-v7a'
    }
}
Run Code Online (Sandbox Code Playgroud)

以及以下内容:

 buildTypes {
   release {
       signingConfig signingConfigs.release
        ndk {
            abiFilters 'arm64-v8a', 'armeabi-v7a'
        }
   }
Run Code Online (Sandbox Code Playgroud)

}

它还有助于在为 Playstore 进行发布构建之前运行 flutter Upgrade 和 flutter clean。