Flutter应用会丢弃java.lang.UnsatisfiedLinkError(找不到“ libflutter.so”)

时间:2018-10-13 17:17:22

标签: android flutter

我已经构建了一个用Flutter编写的应用程序,并且在我的设备上运行良好。

但是,在客户端设备上,它在启动时崩溃(甚至在Centry启动之前)。

连接到亚行时,我们收到以下日志:

 AndroidRuntime: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.travel.exchange-1/base.apk"],nativeLibraryDirectories=[/data/app/com.travel.exchange-1/lib/arm, /data/app/com.travel.exchange-1/base.apk!/lib/armeabi-v7a, /vendor/lib, /system/lib]]] couldn't find "libflutter.so"

 at java.lang.Runtime.loadLibrary (Runtime.java:367)
  at java.lang.System.loadLibrary (System.java:1076)
  at io.flutter.view.FlutterMain.startInitialization (FlutterMain.java:172)
  at io.flutter.view.FlutterMain.startInitialization (FlutterMain.java:149)
  at io.flutter.app.FlutterApplication.onCreate (FlutterApplication.java:22)
  at android.app.Instrumentation.callApplicationOnCreate (Instrumentation.java:1037)
  at android.app.ActivityThread.handleBindApplication (ActivityThread.java:6496)
  at android.app.ActivityThread.access$1800 (ActivityThread.java:229)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1887)
  at android.os.Handler.dispatchMessage (Handler.java:102)
  at android.os.Looper.loop (Looper.java:148)
  at android.app.ActivityThread.main (ActivityThread.java:7406)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1230)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1120)

我正在专门使用arm64进行构建(如果我尝试在arm(32)上运行,即使在我的设备上,应用也会崩溃。

flutter build apk --release --target-platform=android-arm64

4 个答案:

答案 0 :(得分:1)

本文介绍了解决方案。 https://medium.com/flutterpub/flutter-app-couldnt-find-libflutter-so-c95ad81cbccd

TL; DR;

在应用程序的build.gradle中,应添加以下行:

android {
     ...
    defaultConfig {
       ....    
        ndk {
            abiFilters 'armeabi-v7a'
        }
    }

构建应使用flutter build apk

答案 1 :(得分:1)

android \ app \ build.gradle

中的 buildTypes 下添加了以下代码
buildTypes {
        release {
            ndk {
                abiFilters 'armeabi-v7a','arm64-v8a','x86_64'
            }
        }
    }

答案 2 :(得分:0)

这是因为Flutter曾经使APK与32位或64位兼容,但不能与两者兼容。

但是,该问题最近已由Flutter团队解决。 Upgarde /切换到抖动主频道(如果您不使用它)。现在,单个命令flutter build apk将产生与32位和64位体系结构兼容的apk。要切换到主频道,请使用命令flutter channel master。然后flutter upgrade升级fld sdk。

答案 3 :(得分:0)

以防万一,外面的某个人可能会发现这很有用,如果像我一样,他们偶然发现了这个话题,却几乎迷失了2天!

背景:我升级到AndroidX,并试图集成依赖于Firebase的Braze的flutter插件。

最终有效的方法:我从app / build.gradle中删除了以下依赖项

  

实现“ com.google.firebase:firebase-core:17.0.1”

     

实现“ com.google.firebase:firebase-messaging:19.0.1”

并将以下依赖项添加到pubspec.yaml

  

firebase_core:^ 0.4.0 + 8

     

firebase_messaging:^ 5.1.2

我怀疑其中有些东西会导致失败(不确定),但这对我来说可以解决此问题。如果遇到类似的问题,检查对Android的build.gradle和flutter的pubspec.yaml的依赖关系可能会有所帮助。