- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我们的本地 Crashlytics 崩溃报告最近缺少所有符号信息。我曾希望最新的 Crashlytics NDK 能够解决这个问题,但事实并非如此。
我看到那里有一个类似的查询,但在这种情况下,我没有使用 Firebase,只使用了 Crashlytics,并且已经成功使用了很长一段时间。
我们的 build.gradle(使用 CMake 和 Gradle 3.0.0 或 3.1.0 Android 插件——同样的问题)包含:
buildscript {
...
dependencies {
...
classpath 'io.fabric.tools:gradle:1.+'
}
}
...
dependencies {
...
implementation('com.crashlytics.sdk.android:crashlytics:2.9.1@aar') {
transitive = true
}
implementation 'com.crashlytics.sdk.android:crashlytics-ndk:2.0.2'
}
这似乎是正确的,并且使用所有最新的 Fabric 组件,除非我遗漏了什么。
然后我补充说:
crashlytics {
enableNdk true
manifestPath 'AndroidManifest.xml'
}
tasks.whenTaskAdded { task ->
if (task.name.startsWith('assemble')) {
task.finalizedBy "crashlyticsUploadSymbols" + task.name.substring('assemble'.length())
}
}
前段时间当它工作时我不需要这些。 (而且,不,仅仅添加 crashlytics block 是不够的。)
这为我在该项目中实际构建的 .cpp 文件提供了符号。它仍然没有我链接的 .a 文件的符号,甚至没有 libc++_shared.so 的符号!
最佳答案
https://docs.fabric.io/android/crashlytics/dex-and-proguard.html
我们已经简化了在您的应用中设置 ProGuard 或 DexGuard 并接收去混淆的崩溃报告的过程。首先,Fabric 内部使用注解,所以在你的配置文件中添加下面一行:
-keepattributes *Annotation*
接下来,为了提供最有意义的崩溃报告,将以下行添加到您的配置文件中:
-keepattributes SourceFile,LineNumberTable
Crashlytics 在没有此规则的情况下仍然可以运行,但您的崩溃报告将不会包含正确的文件名或行号。
https://docs.fabric.io/android/crashlytics/ndk.html
为了正确地符号化和处理 native 崩溃,我们需要来自您的 native 二进制文件的符号。通常,Android 的 native 二进制构建过程会生成两组二进制文件:一组带有调试符号,另一组将打包到您的最终 APK 中。 Fabric 插件使用两组二进制文件在您的机器上生成一个符号文件。符号生成和上传过程假定您的项目将有两个目录 - 一个用于调试二进制文件(下面称为 obj),另一个用于发布二进制文件(下面称为 libs)- 按特定于体系结构的文件夹分割。
当使用适用于 Gradle 版本 2.2.0+ 的 Android 插件和 externalNativeBuild DSL 构建项目时,Fabric 插件能够自动检测每个原生构建变体的必要目录,以便生成适当的符号文件。
obj/
— armeabi
+ lib1.so
+ lib2.so
— x86
+ lib1.so
+ lib2.so
libs/
— armeabi
+ lib1.so
+ lib2.so
— x86
+ lib1.so
+ lib2.so
可以通过 androidNdkOut(默认值:src/main/obj)和 androidNdkLibsOut(默认值:src/main/libs)属性手动控制调试和发布二进制文件的路径。 Ant 用户可以在 fabric.properties 文件中修改这些。 Gradle 用户可以通过他们的 build.gradle 中的 crashlytics {} block 来控制这些。
Ant :ant crashlytics-upload-symbols
Gradle :./gradlew crashlyticsUploadSymbols{Variant}
例如:./gradlew crashlyticsUploadSymbolsRelease
您还应该阅读适用于您的代码的“为外部依赖项上传符号”。
关于android - Crashlytics 安卓 NDK : missing all symbols in crash reports,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49511783/
我是 Arduino 世界的新手。编写了以下代码 - 使用 DHT22 传感器。 12 小时后,当温度低于所需温度时,我的温室的加热器没有打开。 关闭电源并重新打开后,一切恢复正常。我知道这段代码很乱
我正在使用 CENTOS6 和 REDHAWK2.0 (RH2.0)。基于“VirtualBox 5.0.16 for Windows host”和“VirtualBox 5.0.17 r106140
在无渲染模式下使用 VMR-9 时如何解决 SelectAtPosition() 崩溃? 最佳答案 使用无渲染模式时的 SelectAtPosition() 崩溃问题可以通过在自定义分配器中实现 IV
这是我从 logcat 复制的错误。我不知道为什么在应用设置屏幕中清除数据后应用程序崩溃。 02-20 17:22:29.980 839-1094/? I/InputReader: Apps
我收到了来自 Apple 的应用提交反馈: Thank you for your resubmission. We were unable to review your app as it crash
我有一个 iPad 应用程序。使用 Fabric 收集崩溃信息。最近出现了一些像 webthread EXC_BREAKPOINT 这样的崩溃。跟踪堆栈上没有我的代码。所以我不知道为什么会发生崩溃。
我有一个在 ubuntu(EC2 实例,t2.small)上运行的简单 python web-scraper,到目前为止它只打印出一个 url 列表: from bs4 import Beautifu
注意:我的问题之前已关闭,我尝试了此处提到的解决方案 - unknown error: session deleted because of page crash from unknown error
我正在尝试从一个场景过渡到另一个场景,但是当我调用 presentScene 时发生崩溃!场景未存储在类中或被引用,它们直接加载到 presentScene 调用中。 Xcode 崩溃截图: 我的简单
我有点困惑,我的应用程序几乎没有崩溃,崩溃日志也有以下信息。 崩溃:com.twitter.crashlytics.ios.exception 这是否意味着它是 Fabric 库的崩溃还是有效的崩溃?
我尝试在我的 ubuntu 16.04 远程服务器上使用 selenium webdriver 和 python 3.5.2 连接到网页 from pyvirtualdisplay import Di
我正在使用使用 Python 和 Selenium 的 InstaPy。我按 Cron 启动脚本,有时它会崩溃。所以它真的很不规则,有时它会很好地贯穿始终。我也已经在 GitHub Repo 上发帖,
最近我换了电脑,从那以后我无法使用 selenium 启动 chrome。我也尝试过 Firefox,但浏览器实例无法启动。 from selenium import webdriver d = we
我正在使用 InstaPy,它使用 Python 和 Selenium。我按照 Cron 启动脚本,但有时它会崩溃。所以它确实不规则,有时它贯穿得很好。我已经在 GitHub Repo 上发布了,但没
我正在使用 InstaPy,它使用 Python 和 Selenium。我按照 Cron 启动脚本,但有时它会崩溃。所以它确实不规则,有时它贯穿得很好。我已经在 GitHub Repo 上发布了,但没
我正在使用使用 Python 和 Selenium 的 InstaPy。我按 Cron 启动脚本,有时它会崩溃。所以它真的很不规则,有时它会很好地贯穿始终。我也已经在 GitHub Repo 上发帖,
我正在尝试使用rook在kubernetes集群上配置ceph,我已经运行了以下命令: kubectl apply -f common.yaml kubectl apply -f operator.y
我有一个屏幕A,在执行了一些POST API任务后,我启用了一个按钮,然后单击按钮导航到屏幕B。当Reaction Native应用程序冻结并崩溃时,崩溃会随机发生。从其他屏幕导航到屏幕B也不是问题,
我想知道操作系统是否可能导致崩溃,例如我是否有代码,它是否有可能在Windows环境下崩溃而在Linux上却没有崩溃?还是这不可能? 最佳答案 最简单的示例是代码,您的意图是使其与平台兼容,但是您的代
Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。 想改善这个问题吗?更新问题,以便将其作为on-topic
我是一名优秀的程序员,十分优秀!