gradle – How to avoid stripping for native code symbols for android app-ThrowExceptions

Exception or error:

I’m getting sigsegv 11 in native code and i need to avoid stripping to understand what’s wrong. The app uses library (aar) and i was able to avoid stripping for the aar with ‘cmd-strip’ hack. But in the apk stripped version of .so is used anyway so the app strips the symbols, probably while transformNative_libsWithStripDebugSymbolForDebug gradle task. Any change to avoid it?

PS. Found similar question on SO but it’s a bit different (using aar here with not stripped symbols in my case).

How to solve:

There’s an undocumented method ‘doNotStrip’ in packagingOptions, just add following lines in your build.gradle

packagingOptions{
    doNotStrip "*/armeabi/*.so"
    doNotStrip "*/armeabi-v7a/*.so"
    doNotStrip "*/x86/*.so"
}

###

Fortunately you don’t actually need to keep the symbols in the app. The NDK ships a tool called ndk-stack (it’s in the root of the NDK) that can symbolize a stack trace for you: https://developer.android.com/ndk/guides/ndk-stack.html

Leave a Reply

Your email address will not be published. Required fields are marked *