Android集成Crashlytics遇任务超时及Activity实例化失败求助
问题分析与解决方案
咱们先拆解下你遇到的两个错误:
- 第一个
CrashlyticsCore: Failed to execute task. java.util.concurrent.TimeoutException是连锁反应——因为应用启动时直接崩溃,导致Crashlytics无法完成后台提交任务; - 真正的崩溃根源是第二个错误:
java.lang.IllegalAccessException: com.example.example.MainActivity() is not accessible from class android.app.Instrumentation
核心问题:MainActivity的构造函数不可访问
Android系统需要通过反射实例化Activity,硬性要求Activity类本身和它的无参构造函数必须是public访问权限。你大概率是在MainActivity的代码定义上出了问题:
解决方案1:修正MainActivity的访问修饰符
检查你的MainActivity代码,确保:
- 类本身是
public的 - 无参构造函数是
public的(如果没手动写构造函数,编译器会自动生成默认的public无参构造;但如果写了带参数的构造函数,必须手动补充public无参构造)
正确的代码示例:
public class MainActivity extends AppCompatActivity { // 手动声明public无参构造(如果有带参构造的话必须加) public MainActivity() { super(); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 其他业务代码 } }
解决方案2:检查ProGuard配置(若开启混淆)
虽然你的build.gradle里minifyEnabled false,但如果debug模式下开启了混淆,或者ProGuard规则有误,可能会意外修改Activity构造函数的权限。如果后续开启混淆,务必在proguard-rules.pro中添加以下规则:
-keep public class * extends android.app.Activity -keepclassmembers class * extends android.app.Activity { public <init>(); }
关于Crashlytics的TimeoutException
这个错误会在你解决MainActivity的构造问题后自动消失——因为应用可以正常启动,Crashlytics的后台任务就能顺利执行了。
核对你的Gradle配置
你的项目级和应用级build.gradle配置是正常的:
- 正确添加了Google和Fabric仓库
- Crashlytics、Firebase依赖版本与Gradle插件版本兼容
- 已完成AndroidX迁移
所以重点还是放在MainActivity的代码修改上。
内容的提问来源于stack exchange,提问作者Shree
相关产品推荐
相关产品推荐

