【发布时间】:2021-04-04 17:32:31
【问题描述】:
我遵循了此处列出的所有步骤:crashlytics NDK Android
我将此文件复制粘贴到我的项目中:crashlytics.h
我是这样称呼它的:
#include "Crashlytics.h"
void NDKCrashlytics::logToCrashlytics(char *result) {
firebase::crashlytics::Initialize();
firebase::crashlytics::Log(result);
}
只要我调用该方法,我的应用就会崩溃,这是我得到的日志:
E/AndroidRuntime(20818):致命异常:Thread-10 E/AndroidRuntime(20818):进程:com.insync.loopad,PID:20818 E/AndroidRuntime(20818): java.lang.ClassNotFoundException: 没找到 路径上的类“com.google.firebase.crashlytics.FirebaseCrashlytics”: DexPathList[[目录“.”],nativeLibraryDirectories=[/system/lib64, /system/lib64]] E/AndroidRuntime(20818): 在 dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:196) E/AndroidRuntime(20818):在 java.lang.ClassLoader.loadClass(ClassLoader.java:379) E/AndroidRuntime(20818):在 java.lang.ClassLoader.loadClass(ClassLoader.java:312) 2(灰名单, 链接,允许) D/libcrashlytics(20818):初始化 libcrashlytics 3.0.0版
我也看到了这个问题here,但没有解决。我做错了什么?
【问题讨论】:
-
查看您的 APK。 你能找到
com.google.firebase.crashlytics.FirebaseCrashlytics的班级吗?如果它不存在,例如如果它被 ProGuard 重命名或优化,这将导致您抱怨的崩溃。 -
谢谢,我决定不使用它,因为在 github 问题中它说
the native API mechanism uses reflection to find certain classes; this fails if those classes are obfuscated in any way.我会混淆我的应用程序,如果我没记错的话,我认为这会破坏这个假设,所以在任何一个万一它不适用于我的应用程序 -
这仅与 crashlititycs 提供的少数类有关;无论如何,混淆
com.google.firebase.crashlytics包没有什么价值。因此,如果您在proguard-rules.pro中排除它,您仍然可以使用 NDKCrashlytics,同时混淆您应用的敏感类。 -
感谢您分享智慧。你说的很对。
标签: android android-ndk