【问题标题】:Crash when using NDK in android but Firebase doesn't show detail log在 android 中使用 NDK 时崩溃,但 Firebase 不显示详细日志
【发布时间】:2019-09-10 04:43:04
【问题描述】:

我已将easyexifembedIICProfile 作为 C++ 代码添加到我的 android 项目中。

所有这些都在我的设备上运行良好,但是当我分发到 Google Play 上时。我的用户捕获并反馈了一些崩溃,但是当我检查 FireBase Crashlytics 时,它没有显示详细信息。

这是我的 Firebase 日志

Crashed: Thread #1
SIGABRT 0x0000000000003423
0 libc.so (Missing)
1 split_config.armeabi_v7a.apk (Missing)
2 libc.so (Missing)
3 split_config.armeabi_v7a.apk (Missing)
4 split_config.armeabi_v7a.apk (Missing)
5 libc.so (Missing)
6 split_config.armeabi_v7a.apk (Missing)
7 split_config.armeabi_v7a.apk (Missing)
8 split_config.armeabi_v7a.apk (Missing)
....

这不显示回溯。

这里是 gradle 配置。

defaultConfig {
        minSdkVersion rootProject.ext.minSdkVersion
        targetSdkVersion compileSdkVersion
        versionCode 1
        versionName "1.0"
        externalNativeBuild {
            cmake {
                targets "easyexif"
                abiFilters = rootProject.ext.chosenAbiFilters
                arguments "-DANDROID_STL=c++_shared", "-DNO_TESTS=true"
                cppFlags "-std=c++11"
            }
        }
        ndk {
            abiFilters = rootProject.ext.chosenAbiFilters
        }
    }
chosenAbiFilters = ["armeabi-v7a", "arm64-v8a", "x86"]

如果有人遇到同样的问题,请帮助我。 提前感谢您的帮助。

【问题讨论】:

  • 您能否发布从 Firebase Crashlytics 上的问题获得的完整堆栈跟踪?您是否确保遵循此处的所有基本设置说明? firebase.google.com/docs/crashlytics/ndk-reports
  • 我已将所有基本说明设置为此链接。这是我的配置,因为我的应用程序有多个本机库,所以我分别构建了 .so 文件和 .o 文件,然后将所有文件放入 temp 文件夹。所以,我的配置在这里
  • 感谢您添加额外信息。从您发布的信息来看,您的基本设置看起来不错,但似乎有一些东西阻止我们的插件正确拾取您的剥离和未剥离的库并生成符号信息。您是否介意与 support@fabric.io 联系并提供问题描述和此帖子的链接,以便我们更深入地了解您的项目?找到解决方案后,我们会回过头来更新这篇文章。
  • 好的,我会先发请求给fabric的支持,谢谢你的建议

标签: android android-ndk crash crashlytics firebase-crash-reporting


【解决方案1】:

我的配置 Firebase Crashlytics

临时文件夹,我已经构建了所有的原生库,并获取了.so 文件和.o 文件并将它们全部放入下面的文件夹中

Project/
 /app
   /ndkout
     /libs
       /arm64-v8a
       /armeabi
       /armeabi-v7a
       /x86
       /x86-64
     /obj
       /arm64-v8a
       /armeabi
       /armeabi-v7a
       /x86
       /x86-64

这是我的 Firebase crashlytics 配置

    crashlytics {
        enableNdk true
        androidNdkOut 'ndkout/obj'
        androidNdkLibsOut 'ndkout/libs'
    }

    // Crashlytics
    implementation 'com.crashlytics.sdk.android:crashlytics:2.10.1'
    implementation 'com.crashlytics.sdk.android:crashlytics-ndk:2.1.0'

我已成功运行命令./gradlew crashlyticsUploadSymbolsRelease 并成功响应。

> Task :easyexif:externalNativeBuildRelease
Build easyexif_armeabi-v7a
[1/3] Building CXX object CMakeFiles/easyexif.dir/exif.cpp.o
[2/3] Building CXX object CMakeFiles/easyexif.dir/EasyExifJNI.cpp.o
[3/3] Linking CXX shared library /Users/mbp0015/Projects/AndroidProjects/TotalConverter/easyexif/build/intermediates/cmake/release/obj/armeabi-v7a/libeasyexif.so
Build easyexif_arm64-v8a
[1/3] Building CXX object CMakeFiles/easyexif.dir/exif.cpp.o
[2/3] Building CXX object CMakeFiles/easyexif.dir/EasyExifJNI.cpp.o
[3/3] Linking CXX shared library /Users/mbp0015/Projects/AndroidProjects/TotalConverter/easyexif/build/intermediates/cmake/release/obj/arm64-v8a/libeasyexif.so
Build easyexif_x86
[1/3] Building CXX object CMakeFiles/easyexif.dir/exif.cpp.o
[2/3] Building CXX object CMakeFiles/easyexif.dir/EasyExifJNI.cpp.o
[3/3] Linking CXX shared library /Users/mbp0015/Projects/AndroidProjects/TotalConverter/easyexif/build/intermediates/cmake/release/obj/x86/libeasyexif.so

> Task :embedIICProfile:externalNativeBuildRelease
Build embedICCProfile_armeabi-v7a
[1/2] Building CXX object CMakeFiles/embedICCProfile.dir/EmbedICCProfile.cpp.o
[2/2] Linking CXX shared library /Users/mbp0015/Projects/AndroidProjects/TotalConverter/embedIICProfile/build/intermediates/cmake/release/obj/armeabi-v7a/libembedICCProfile.so
Build embedICCProfile_arm64-v8a
[1/2] Building CXX object CMakeFiles/embedICCProfile.dir/EmbedICCProfile.cpp.o
[2/2] Linking CXX shared library /Users/mbp0015/Projects/AndroidProjects/TotalConverter/embedIICProfile/build/intermediates/cmake/release/obj/arm64-v8a/libembedICCProfile.so
Build embedICCProfile_x86
[1/2] Building CXX object CMakeFiles/embedICCProfile.dir/EmbedICCProfile.cpp.o
[2/2] Linking CXX shared library /Users/mbp0015/Projects/AndroidProjects/TotalConverter/embedIICProfile/build/intermediates/cmake/release/obj/x86/libembedICCProfile.so

BUILD SUCCESSFUL in 4m 18s
109 actionable tasks: 23 executed, 86 up-to-date

好的,所以我的 Firebase Crashltics 日志仍然没有显示。 不同的是,我使用 android app bundle 上传到 Google 控制台,而不是 apk 文件。

日志没有显示更多细节。

Crashed: Thread #1
SIGABRT 0x000027f700004b0c
0
libc.so
(Missing)
1
libc.so
(Missing)
2
split_config.arm64_v8a.apk
(Missing)
3
split_config.arm64_v8a.apk
(Missing)
4
split_config.arm64_v8a.apk
(Missing)
5
split_config.arm64_v8a.apk
(Missing)
6
split_config.arm64_v8a.apk
(Missing)
7
split_config.arm64_v8a.apk
(Missing)
8
split_config.arm64_v8a.apk
(Missing)
9
split_config.arm64_v8a.apk
(Missing)
10
split_config.arm64_v8a.apk
(Missing)
11
split_config.arm64_v8a.apk
(Missing)
12
split_config.arm64_v8a.apk
(Missing)
13
base.odex
(Missing)
14
libart.so
(Missing)
15
libc.so
(Missing)
16
libutils.so
(Missing)
17
libutils.so
(Missing)
18
libandroid_runtime.so
(Missing)
19
(Missing)
20
(Missing)
21
(Missing)
22
(Missing)
23
(Missing)
24
boot-framework.oat
(Missing)
25
(Missing)
26
(Missing)
27
(Missing)
28
(Missing)
29
(Missing)
30
(Missing)
31
boot-framework.oat
(Missing)
32
(Missing)
33
(Missing)
34
(Missing)
35
(Missing)
36
(Missing)
37
(Missing)
38
(Missing)
39
(Missing)
40
(Missing)
41
(Missing)
42
(Missing)
43
boot-framework.oat
(Missing)
44
(Missing)
45
(Missing)
46
(Missing)
47
libart.so
(Missing)
48
(Missing)
49
(Missing)
50
libart.so
(Missing)
51
(Missing)
52
(Missing)
53
(Missing)
54
(Missing)
55
(Missing)
56
(Missing)
57
(Missing)
58
(Missing)
59
(Missing)
60
libart.so
(Missing)
61
(Missing)
62
(Missing)
63
(Missing)
64
(Missing)

【讨论】:

    猜你喜欢
    • 2019-04-14
    • 2019-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-28
    • 1970-01-01
    • 2018-02-03
    • 2020-05-02
    相关资源
    最近更新 更多