You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Android中强制触发NDK崩溃以测试Firebase Crashlytics?

触发NDK崩溃以测试Crashlytics的方法

以下是几种可靠的触发NDK原生崩溃的方式,用于验证Crashlytics的NDK报告功能:

方法一:编写JNI代码触发原生崩溃

通过在C/C++层编写会导致崩溃的逻辑,再从Java层调用该方法:

  1. 在你的JNI源文件(如native-lib.cpp)中添加触发崩溃的函数:
#include <jni.h>

extern "C" JNIEXPORT void JNICALL
Java_com_yourpackage_YourActivity_triggerNativeCrash(JNIEnv* env, jobject thiz) {
    // 方式1:访问空指针触发崩溃
    int* nullPtr = nullptr;
    *nullPtr = 10;

    // 方式2:除以零触发崩溃(可替换上方代码)
    // int zero = 0;
    // int result = 10 / zero;
}
  1. 在对应的Android Activity中声明并调用该Native方法:
public class YourActivity extends AppCompatActivity {
    // 声明Native方法
    native void triggerNativeCrash();

    static {
        // 加载你的Native库,替换为实际库名
        System.loadLibrary("native-lib");
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 添加按钮点击事件触发崩溃
        findViewById(R.id.btn_trigger_crash).setOnClickListener(v -> triggerNativeCrash());
    }
}
  1. 编译运行应用,点击对应按钮即可触发NDK崩溃。

方法二:使用Crashlytics官方Native API触发崩溃

Crashlytics提供了原生API直接触发测试崩溃,步骤如下:

  1. 在JNI源文件中引入Crashlytics头文件并调用崩溃方法:
#include <jni.h>
#include "firebase/crashlytics.h"

extern "C" JNIEXPORT void JNICALL
Java_com_yourpackage_YourActivity_triggerCrashlyticsNativeCrash(JNIEnv* env, jobject thiz) {
    // 调用Crashlytics官方API触发崩溃
    firebase::crashlytics::Crash();
}
  1. 同样在Java层声明并通过点击事件调用该方法,运行后即可触发崩溃。

注意事项

  • 崩溃触发后,需要重启应用才能让Crashlytics上传崩溃报告
  • Crashlytics控制台可能需要1-5分钟才能显示新的崩溃记录
  • 若使用release包测试,需确保已将Native符号文件正确上传到Firebase

内容的提问来源于stack exchange,提问作者hrishikesh rajwade

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 16:45:32