gpt4 book ai didi

android - 无效的崩溃堆栈跟踪或小型转储

转载 作者:搜寻专家 更新时间:2023-11-01 09:39:28 24 4
gpt4 key购买 nike

我为 Android Studio 构建了 Unity 项目(Google Android 项目)。我在 Android Studio 中打开了它。包括 Firebase 崩溃。进行测试以检查异常。在日志中:

Error sending crash report
bkz: Server did not receive report: Origin Error message: Invalid crash stacktrace or minidump.

我该如何解决?

最佳答案

最终我找到了这个问题的最初原因并解决了它。

在 logcat 中我们可以看到 Firebase 初始化先于 Unity。 Unity 将 Firebase 的 UncaughtExceptionHandler 实例替换为自己的实例。 Unity 通过添加有关 Unity 版本的信息来修改 Throwable。它以某种方式破坏了堆栈跟踪。在这个 Throwable 传递给之前注册的异常处理程序(Firebase)之后。您可以看到 invalid stacktrace 消息。

解决方法如下:

在您的第一个场景中使用以下代码添加脚本:

void Awake() {
#if UNITY_ANDROID && !UNITY_EDITOR
using (AndroidJavaClass helper = new AndroidJavaClass ("com.yourcompany.UncaughtExceptionHelper")) {
helper.CallStatic ("restore");
}
#endif
}

然后将这个类添加到您的 Android Studio 项目中:

UncaughtExceptionHelper.java

package com.yourcompany;

import android.util.Log;

import java.lang.reflect.Field;

public class UncaughtExceptionHelper {
private static final String LOG_TAG = UncaughtExceptionHelper.class.getSimpleName();

public static void restore() {
try {
Thread.UncaughtExceptionHandler defaultHandler = Thread.getDefaultUncaughtExceptionHandler();

if (defaultHandler.getClass().getName().startsWith("com.unity3d.")) {
for (Field f : defaultHandler.getClass().getDeclaredFields()) {
f.setAccessible(true);

Object possibleHandler = f.get(defaultHandler);
if (possibleHandler instanceof Thread.UncaughtExceptionHandler) {
Thread.setDefaultUncaughtExceptionHandler((Thread.UncaughtExceptionHandler) possibleHandler);

Log.i(LOG_TAG, "restore " + possibleHandler + " instead of " + defaultHandler);
return;
}
}
}
} catch (Throwable ex) {
Log.wtf(LOG_TAG, ex);
}
}
}

一起构建它,现在发现 logcat 输出:

I FirebaseCrash: FirebaseCrash reporting initialized com.google.android.gms.internal.zzbks@6f785ce
I FirebaseInitProvider: FirebaseApp initialization successful
....
D Unity : GL_AMD_compressed_ATC_texture GL_AMD_performance_monitor GL_AMD_program_binary_Z400 GL_EXT_debug_label GL_EXT_debug_marker GL_EXT_discard_framebuffer GL_EXT_robustness GL_EXT_texture_format_BGRA8888 GL_EXT_texture_type_2_10_10_10_REV GL_NV_fence GL_OES_compressed_ETC1_RGB8_texture GL_OES_depth_texture GL_OES_depth24 GL_OES_EGL_image GL_OES_EGL_sync GL_OES_EGL_image_external GL_OES_element_index_uint GL_OES_fbo_render_mipmap GL_OES_fragment_precision_high GL_OES_get_program_binary GL_OES_packed_depth_stencil GL_OES_depth_texture_cube_map GL_OES_rgb8_rgba8 GL_OES_standard_derivatives GL_OES_texture_3D GL_OES_texture_float GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_OES_texture_npot GL_OES_vertex_half_float GL_OES_vertex_type_10_10_10_2 GL_OES_vertex_array_object GL_QCOM_alpha_test GL_QCOM_binning_control GL_QCOM_driver_control GL_QCOM_perfmon_global_mode GL_QCOM_extended_get GL_QCOM_extended_get2 GL_QCOM_tiled_rendering GL_QCOM_writeonly_rendering GL_EXT_sRGB GL_EXT_sRGB_write_control GL_EXT
D Unity : _texture_sRGB_decode GL_EXT_texture_filter_anisotropic GL_EXT_multisampled_render_to_texture GL_EXT_color_buffer_float GL_EXT_color_buffer_half_float GL_EXT_disjoint_timer_query
....
I UncaughtExceptionHelper: restore com.google.android.gms.internal.zzbkt@8e448eb instead of com.unity3d.player.g@82cd648

关于android - 无效的崩溃堆栈跟踪或小型转储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40703285/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com