web-dev-qa-db-ja.com

Android appのネイティブコードシンボルの除去を回避する方法

sigsegv 11ネイティブコードでは、何が間違っているのかを理解するためにストリッピングを避ける必要があります。アプリはライブラリ(aar)を使用し、 'cmd-strip' hack でaarのストリッピングを回避できました。しかし、apkで削除された.soはとにかく使用されるので、おそらくtransformNative_libsWithStripDebugSymbolForDebug gradleタスク。それを避けるための変更はありますか?

PS。見つかった 同様の質問 on SOしかし、それは少し異なります(私の場合は、シンボルを剥がさないでaarを使用します)。

18
4ntoine

PackagingOptionsには文書化されていないメソッド「doNotStrip」があり、build.gradleに次の行を追加するだけです。

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

幸いなことに、実際にアプリにシンボルを保持する必要はありません。 NDKにはndk-stack(NDKのルートにあります)というツールが付属しており、スタックトレースをシンボル化できます。 https://developer.Android.com/ndk/guides/ndk-stack .html

8
Dan Albert