先了解一下C++的符号表是什么?
可以简单的类比java的混淆,也就是混淆后的映射表。有了这个表,就可以把看不懂的调用栈,解析为人能看的调用栈。
Android的aar内的JNI,也就是SO,如何保留符号表呢
Android打包会默认去掉so的符号表,这导致C++的崩溃调用栈,需要用命令行手动的映射。
如果方自动化平台上搞自动的映射,倒是还好。
但如果你用的aar内的so,本身就是已经去掉符号表的,那就没办法了。因此,需要让aar保留符号表。
实现方案很简单,但是查的很费力:
android {
packagingOptions{
doNotStrip "**.so"
}
}