Crashlytics NDK用于外部子项目依赖

时间:2018-01-14 09:59:38

标签: android android-ndk java-native-interface crashlytics crashlytics-android

我正在尝试为使用NDK / JNI的项目实施Crashlytics。但是,JNI部分位于settings.gradle中的外部加载项目中:

include ':app', ':core'
project (':core').projectDir = new File(rootDir, '../core')

我读了一段时间Crashlytics应该自动找到符号而无需指定androidNdkOutandroidNdkLibsOut。当我调用./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例外配置?

1 个答案:

答案 0 :(得分:2)

您在build.gradle中指定的配置不正确。

androidNdkOut 应指向对象文件,例如'../../core/build/intermediates/cmake/release/obj'

androidNdkLibsOut 应该指向实际的库。在您的情况下,很可能是'../../core/build/intermediates/transforms/mergeJniLibs/release/folders/2000/3/main/lib'