Android c+的Crashreport+;图书馆展览失踪
我已经配置build.gradle和应用程序使Crashlytics工作。 但无法找出为什么C++代码显示“丢失”和没有任何详细信息(行数,调用堆栈)。 “/gradlew Crashlytics上载SYMBOLS开发发行版”成功,无任何错误。 java代码崩溃报告的堆栈跟踪工作正常。只有C++代码的崩溃报告显示“丢失”。 Java代码通过JNI使用“libengine”Android c+的Crashreport+;图书馆展览失踪,android,google-fabric,crashlytics-android,Android,Google Fabric,Crashlytics Android,我已经配置build.gradle和应用程序使Crashlytics工作。 但无法找出为什么C++代码显示“丢失”和没有任何详细信息(行数,调用堆栈)。 “/gradlew Crashlytics上载SYMBOLS开发发行版”成功,无任何错误。 java代码崩溃报告的堆栈跟踪工作正常。只有C++代码的崩溃报告显示“丢失”。 Java代码通过JNI使用“libengine” build by: externalNativeBuild { cmake { path "CMakeL
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'
}
问题在于build.gradle中obj和lib的路径错误。 在我的例子中,C++库是由CGuy构建的,我应该配置如下,用于为发布版本上传符号。
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
你有权访问这些库的非压缩调试版本吗?@MikeBonnell是的,我有。调试版本位于“build/intermediates/cmake/development/debug/obj”目录中。我还运行了./gradlew crashlytics uploadsymbols developmentdebug来上传。好的,您使用的SDK和gradle插件的哪个版本?@MikeBonnell dependencies{implementation('com.crashlytics.SDK.android:crashlytics:2.9.5'){transitive=true}实现('com.crashlytics.SDK.android:crashlytics ndk:2.0.5')){transitive=true}}@MikeBonnell非常感谢你。现在它工作了,我可以看到C++文件行号和调用栈。