web-dev-qa-db-fra.com

Comment éviter de supprimer les symboles de code natif pour l'application Android

Je suis en train sigsegv 11 en code natif et je dois éviter de supprimer pour comprendre ce qui ne va pas. L'application utilise la bibliothèque (aar) et j'ai pu éviter le dépouillement de l'aar avec 'cmd-strip' hack . Mais dans la version apk dépouillée de .so est utilisé de toute façon, donc l'application supprime les symboles, probablement pendant que transformNative_libsWithStripDebugSymbolForDebug tâche gradle. Un changement pour l'éviter?

PS. Trouvé question similaire sur SO mais c'est un peu différent (en utilisant aar ici avec des symboles non supprimés dans mon cas).

18
4ntoine

Il y a une méthode non documentée 'doNotStrip' dans packagingOptions, ajoutez simplement les lignes suivantes dans votre build.gradle

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

Heureusement, vous n'avez pas besoin de conserver les symboles dans l'application. Le NDK fournit un outil appelé ndk-stack (c'est à la racine du NDK) qui peut symboliser une trace de pile pour vous: https://developer.Android.com/ndk/guides/ndk-stack.html

8
Dan Albert