flutter - 在 Android 4.4 (Kitkat) 上的小米设备 运行 上崩溃 - Firebase 错误
flutter - crash on Xiaomi Device running on Android 4.4 (Kitkat) - Firebase Error
我只在小米设备上遇到这个错误,尤其是在 Android 4.4 (KitKat) 上。
我的应用程序一开始突然崩溃,我有捕获错误日志:
E/AndroidRuntime(15685): FATAL EXCEPTION: main
E/AndroidRuntime(15685): Process: z.zapps, PID: 15685
E/AndroidRuntime(15685): java.lang.RuntimeException: Unable to get provider com.google.firebase.provider.FirebaseInitProvider: java.lang.ClassNotFoundException: Didn't find class "com.google.firebase.provider.FirebaseInitProvider" on path: DexPathList[[zip file "/data/app/z.zapps-1.apk"],nativeLibraryDirectories=[/data/app-lib/z.zapps-1, /vendor/lib, /system/lib]]
E/AndroidRuntime(15685): at android.app.ActivityThread.installProvider(ActivityThread.java:4828)
E/AndroidRuntime(15685): at android.app.ActivityThread.installContentProviders(ActivityThread.java:4420)
E/AndroidRuntime(15685): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4360)
E/AndroidRuntime(15685): at android.app.ActivityThread.access00(ActivityThread.java:141)
E/AndroidRuntime(15685): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1272)
E/AndroidRuntime(15685): at android.os.Handler.dispatchMessage(Handler.java:102)
E/AndroidRuntime(15685): at android.os.Looper.loop(Looper.java:136)
E/AndroidRuntime(15685): at android.app.ActivityThread.main(ActivityThread.java:5052)
E/AndroidRuntime(15685): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(15685): at java.lang.reflect.Method.invoke(Method.java:515)
E/AndroidRuntime(15685): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796)
E/AndroidRuntime(15685): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612)
E/AndroidRuntime(15685): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(15685): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.firebase.provider.FirebaseInitProvider" on path: DexPathList[[zip file "/data/app/z.zapps-1.apk"],nativeLibraryDirectories=[/data/app-lib/z.zapps-1, /vendor/lib, /system/lib]]
E/AndroidRuntime(15685): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
E/AndroidRuntime(15685): at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
E/AndroidRuntime(15685): at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
E/AndroidRuntime(15685): at android.app.ActivityThread.installProvider(ActivityThread.java:4813)
E/AndroidRuntime(15685): ... 12 more
W/ActivityManager( 1065): Force finishing activity z.zapps/.MainActivity
我在 pubspec.yaml
:
使用 firebase 库
firebase_auth: ^0.8.2
和
firebase_messaging: ^4.0.0+4
有解决这个问题的想法吗?
简答:
使用命令制作 APK 文件:flutter build apk --target-platform=android-arm
长答案:
问题出在设备的处理器类型上。在 Android 世界中,有 7 种不同的处理器类型(mips、mips64、X86、X86–64、armeabi、arm64-v8a、armeabi-v7a)。标准的 flutter build apk 命令不会生成通用文件。
我认为您对使用基于 ARM 架构的 armeabi 处理器有疑问。
要解决此问题,您必须制作特定的 APK 以支持该设备(系列)。为此,您可能需要使用以下命令:
flutter build apk --target-platform=android-arm
这是否意味着同一个应用会有两个不同版本的 APK?是的
我只在小米设备上遇到这个错误,尤其是在 Android 4.4 (KitKat) 上。
我的应用程序一开始突然崩溃,我有捕获错误日志:
E/AndroidRuntime(15685): FATAL EXCEPTION: main
E/AndroidRuntime(15685): Process: z.zapps, PID: 15685
E/AndroidRuntime(15685): java.lang.RuntimeException: Unable to get provider com.google.firebase.provider.FirebaseInitProvider: java.lang.ClassNotFoundException: Didn't find class "com.google.firebase.provider.FirebaseInitProvider" on path: DexPathList[[zip file "/data/app/z.zapps-1.apk"],nativeLibraryDirectories=[/data/app-lib/z.zapps-1, /vendor/lib, /system/lib]]
E/AndroidRuntime(15685): at android.app.ActivityThread.installProvider(ActivityThread.java:4828)
E/AndroidRuntime(15685): at android.app.ActivityThread.installContentProviders(ActivityThread.java:4420)
E/AndroidRuntime(15685): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4360)
E/AndroidRuntime(15685): at android.app.ActivityThread.access00(ActivityThread.java:141)
E/AndroidRuntime(15685): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1272)
E/AndroidRuntime(15685): at android.os.Handler.dispatchMessage(Handler.java:102)
E/AndroidRuntime(15685): at android.os.Looper.loop(Looper.java:136)
E/AndroidRuntime(15685): at android.app.ActivityThread.main(ActivityThread.java:5052)
E/AndroidRuntime(15685): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(15685): at java.lang.reflect.Method.invoke(Method.java:515)
E/AndroidRuntime(15685): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796)
E/AndroidRuntime(15685): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612)
E/AndroidRuntime(15685): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(15685): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.firebase.provider.FirebaseInitProvider" on path: DexPathList[[zip file "/data/app/z.zapps-1.apk"],nativeLibraryDirectories=[/data/app-lib/z.zapps-1, /vendor/lib, /system/lib]]
E/AndroidRuntime(15685): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
E/AndroidRuntime(15685): at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
E/AndroidRuntime(15685): at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
E/AndroidRuntime(15685): at android.app.ActivityThread.installProvider(ActivityThread.java:4813)
E/AndroidRuntime(15685): ... 12 more
W/ActivityManager( 1065): Force finishing activity z.zapps/.MainActivity
我在 pubspec.yaml
:
firebase_auth: ^0.8.2
和
firebase_messaging: ^4.0.0+4
有解决这个问题的想法吗?
简答:
使用命令制作 APK 文件:flutter build apk --target-platform=android-arm
长答案: 问题出在设备的处理器类型上。在 Android 世界中,有 7 种不同的处理器类型(mips、mips64、X86、X86–64、armeabi、arm64-v8a、armeabi-v7a)。标准的 flutter build apk 命令不会生成通用文件。
我认为您对使用基于 ARM 架构的 armeabi 处理器有疑问。
要解决此问题,您必须制作特定的 APK 以支持该设备(系列)。为此,您可能需要使用以下命令:
flutter build apk --target-platform=android-arm
这是否意味着同一个应用会有两个不同版本的 APK?是的