我正在尝试为使用NDK / JNI的项目实施Crashlytics。但是,JNI部分位于settings.gradle
中的外部加载项目中:
include ':app', ':core'
project (':core').projectDir = new File(rootDir, '../core')
我读了一段时间Crashlytics应该自动找到符号而无需指定androidNdkOut
和androidNdkLibsOut
。当我调用./gradlew crashlyticsUploadSymbols{flavor}Debug
抱怨错误的androidNdkOut时,它对我的场景没有用。
所以我在应用的build.gradle
中明确添加了这些路径:
crashlytics {
enableNdk true
androidNdkOut '../../core/build/intermediates/cmake/debug/obj'
androidNdkLibsOut '../../core/build/intermediates/cmake/release/obj'
manifestPath 'src/main/AndroidManifest.xml'
}
Crashlytics现在确实找到了它们,crashlyticsUploadSymbols{flavor}Debug
返回成功。但它没有正常工作。在Crashlytics控制台中根本没有报告某些错误,其余错误未被反混淆。此外,Crashlytics在logcat中显示了类似的内容:
W/CrashlyticsCore: No minidump data found in directory /data/data/com.example.app/files/.Fabric/com.crashlytics.sdk.android.crashlytics-ndk/native/1513601249792
如何在Crashlytics控制台中正确记录NDK例外配置?
答案 0 :(得分:2)
您在build.gradle
中指定的配置不正确。
androidNdkOut 应指向对象文件,例如'../../core/build/intermediates/cmake/release/obj'
androidNdkLibsOut 应该指向实际的库。在您的情况下,很可能是'../../core/build/intermediates/transforms/mergeJniLibs/release/folders/2000/3/main/lib'