我目前在我的项目中遇到了这个问题。该问题的根本原因是特定API级别下某些类不可用。
对于我的情况,我使用了RoleManager
,它仅在API 29及以上版本中可用。即使我添加了运行时检查:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
// Use `RoleManager` ...
}
import android.app.role.RoleManager
尽管我目前无法找到有关这种现象的官方RN文档,但我相信在运行开发者代码之前,RN会检查所有导入是否有效!因此,这与本地Android编程流程完全不同!
解决方案可能是将您正在使用的所有内容移动到Util.java / Util.kt中,并在另一个类中完成逻辑!
我遇到了同样的问题,但我无法重现,但在模拟器中出现了以下错误:Android 4.4
我不确定是 Android Vitals 只返回了部分错误还是实际上不是同一个错误。
java.lang.RuntimeException:
Unable to get provider com.google.firebase.provider.FirebaseInitProvider: java.lang.ClassNotFoundException
E/AndroidRuntime( 3446): at android.app.ActivityThread.installProvider(ActivityThread.java:4793)
E/AndroidRuntime( 3446): at android.app.ActivityThread.installContentProviders(ActivityThread.java:4385)
E/AndroidRuntime( 3446): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4325)
E/AndroidRuntime( 3446): at android.app.ActivityThread.access$1500(ActivityThread.java:135)
E/AndroidRuntime( 3446): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
E/AndroidRuntime( 3446): at android.os.Handler.dispatchMessage(Handler.java:102)
E/AndroidRuntime( 3446): at android.os.Looper.loop(Looper.java:136)
E/AndroidRuntime( 3446): at android.app.ActivityThread.main(ActivityThread.java:5017)
E/AndroidRuntime( 3446): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 3446): at java.lang.reflect.Method.invoke(Method.java:515)
E/AndroidRuntime( 3446): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
E/AndroidRuntime( 3446): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
E/AndroidRuntime( 3446): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime( 3446): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.firebase.provider.FirebaseInitProvider"
E/AndroidRuntime( 3446): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
E/AndroidRuntime( 3446): at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
E/AndroidRuntime( 3446): at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
E/AndroidRuntime( 3446): at android.app.ActivityThread.installProvider(ActivityThread.java:4778)
E/AndroidRuntime( 3446): ... 12 more
这个错误导致应用程序在启动时崩溃。我通过这个答案https://dev59.com/mVoU5IYBdhLWcg3wk3p2#37317943修复了它。
使用Multidex。
在你的app/build.gradle文件中进行设置。
android {
...
defaultConfig {
....
multiDexEnabled true
}
...
}
dependencies {
implementation 'com.android.support:multidex:1.0.3'
...
}
在你的 app/src/main/java/.../MainApplication.java 文件中
...
import android.support.multidex.MultiDex;
import android.content.Context;
public class MyApplication extends ... {
...
@Override
protected void attachBaseContext(Context context) {
super.attachBaseContext(context);
MultiDex.install(this);
}
}