首页 > 解决方案 > c++ 库的崩溃报告显示丢失

问题描述

我已配置 build.gradle 和 Application 以使 Crashlytics 工作。但无法弄清楚为什么 c++ 代码显示“丢失”并且没有任何详细信息(行号、调用堆栈)。“./gradlew crashlyticsUploadSymbolsdevelopmentRelease”成功,没有任何错误。java代码崩溃报告的堆栈跟踪有效。只有 c++ 代码的崩溃报告显示“丢失”。

在此处输入图像描述 Java 代码通过 JNI 使用“libengine”。

build by:
externalNativeBuild {
   cmake {
      path "CMakeLists.txt"
   }
}


my build.gradle:
crashlytics {
    enableNdk true
    androidNdkOut 'build/intermediates/cmake/development/debug/obj'
    androidNdkLibsOut 'build/intermediates/cmake/development/release/obj'
    manifestPath 'src/main/AndroidManifest.xml'
}

标签: androidgoogle-fabriccrashlytics-android

解决方案


问题是 build.gradle 中 obj 和 lib 的路径错误。就我而言,c++ 库是由 cmake 构建的,我应该配置如下以上传符号以进行发布构建。

    crashlytics {
        enableNdk true
        androidNdkOut 'build/intermediates/cmake/development/release/obj'
        androidNdkLibsOut 'build/intermediates/transforms/stripDebugSymbol/development/release/0/lib'
        manifestPath 'src/main/AndroidManifest.xml'
    }

    #in order to avoid manually run crashlyticsUploadsSymbols
    android.applicationVariants.all { variant ->
        def variantName = variant.name.capitalize()
        if(variant.buildType.name=="release")
        variant.assemble.finalizedBy(project.("crashlyticsUploadSymbols${variantName}"))
    }

我学会了通过检查来检查上传是否成功:

~/Library/Caches/com.crashlytics/com.crashlytics.tools/crashlytics.log

推荐阅读