【问题标题】:Flutter app drops java.lang.UnsatisfiedLinkError (couldn't find "libflutter.so")Flutter 应用程序丢弃 java.lang.UnsatisfiedLinkError(找不到“libflutter.so”)
【发布时间】:2018-10-13 17:17:21
【问题描述】:

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

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

当连接到 ADB 时,我们得到了这个日志:

 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

【问题讨论】:

    标签: android flutter


    【解决方案1】:

    android\app\build.gradle

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

    【讨论】:

      【解决方案2】:

      以防万一,外面的人可能会觉得这很有用,如果他们像我一样偶然发现这个线程,同时几乎失去理智 2 天!

      背景:我升级到AndroidX 并尝试集成Braze 依赖于firebase 的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 的依赖关系可能会有所帮助。

      【讨论】:

        【解决方案3】:

        应在应用级 build.gradle 中添加以下行

            defaultConfig {
        
                ...
        
            ndk { abiFilters "armeabi", "x86", "armeabi-v7a","x86_64", "mips", 
                 "mips64", "arm64-v8a" }
        
        }
        

        【讨论】:

        • 这个对我有用。
        【解决方案4】:

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

        TL;DR;

        在 app 的 build.gradle 中应该添加这行:

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

        应该使用flutter build apk进行构建

        【讨论】:

        【解决方案5】:

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

        不过,Flutter 团队最近解决了这个问题。升级/切换到颤振主通道(如果您不使用它)。现在,单个命令flutter build apk 将生成兼容 32 位和 64 位架构的 apk。切换到主通道使用命令flutter channel master。和flutter upgrade 升级flutter sdk。

        【讨论】:

        • 哪个flutter版本解决了这个问题?可以参考 GitHub 问题吗?
        • 该帖子已有 6 个多月的历史。我不记得版本号。我一定已经升级了 SDK 4-5 次,并且在 2019 年 6 月之后从未观察到此问题。
        • 我在 v1.12.13+hotfix.9 上仍然存在问题,并想确保它不是由于运行旧版本造成的。
        • 看起来这个问题仍然是开放的> github.com/flutter/flutter/issues/37566
        猜你喜欢
        • 2020-08-23
        • 2020-11-30
        • 2021-03-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-01
        • 2011-09-07
        • 1970-01-01
        相关资源
        最近更新 更多