首页 > 解决方案 > 在 android 中使用 NDK 时崩溃,但 Firebase 不显示详细日志

问题描述

我已将easyexif,embedIICProfile作为 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"]

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

标签: androidandroid-ndkcrashcrashlyticsfirebase-crash-reporting

解决方案


我的配置 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)

推荐阅读