31

我正在sigsegv 11使用本机代码,我需要避免剥离以了解问题所在。该应用程序使用库(aar),我能够避免使用 'cmd-strip' hack剥离 aar 。但是在 apk 剥离版本中.so无论如何都会使用,因此应用程序会剥离符号,可能是在transformNative_libsWithStripDebugSymbolForDebuggradle 任务时。有什么改变可以避免吗?

PS。在 SO 上找到了类似的问题,但它有点不同(在我的例子中使用 aar 而没有剥离符号)。

4

2 回答 2

54

PackagingOptions 中有一个未记录的方法“doNotStrip”,只需在 build.gradle 中添加以下行

packagingOptions{
    doNotStrip "*/armeabi/*.so"
    doNotStrip "*/armeabi-v7a/*.so"
    doNotStrip "*/x86/*.so"
}
于 2017-02-16T08:53:31.420 回答
9

幸运的是,您实际上不需要将符号保留在应用程序中。NDK 提供了一个名为ndk-stack(它位于 NDK 的根目录中)的工具,可以为您象征堆栈跟踪:https ://developer.android.com/ndk/guides/ndk-stack.html

于 2016-11-01T20:29:04.827 回答