2016-11-01 7 views
8

Otrzymuję sigsegv 11 w kodzie macierzystym i muszę unikać rozbierania, aby zrozumieć, co jest nie tak. Aplikacja korzysta z biblioteki (aar) i udało mi się uniknąć rozbierania się do pliku z "cmd-strip" hack. Ale w wersji APK usunięto wersję .so, więc aplikacja usuwa symbole, prawdopodobnie podczas zadania gradle transformNative_libsWithStripDebugSymbolForDebug. Każda zmiana, aby tego uniknąć?Jak uniknąć usuwania symboli kodu natywnego dla aplikacji z systemem Android

PS. Znalazłem similar question na SO, ale jest nieco inny (używając tutaj aar z nie pozbawionymi symboli w moim przypadku).

+0

IMO, powinieneś pomyśleć dwa razy, jeśli naprawdę potrzebujesz wysyłać nieproszone pliki binarne z plikiem APK. Minusy to niezwykle duży rozmiar wspólnych bibliotek i słaba ochrona inżynierii wstecznej. Jeśli chcesz gdzieś znaleźć nieskompresowane pliki binarne - spójrz na "obj/local /'. Aby uzyskać szczegółowe informacje, patrz [tutaj] (http://stackoverflow.com/a/40278937/2878070). – Sergio

+0

to tylko naprawa problemu, nie dla dystrybucji – 4ntoine

+0

Jeśli tak - 'ndk-build' tworzy już pliki nierozkładane razem z usuniętymi. Zobacz mój poprzedni komentarz. – Sergio

Odpowiedz

12

Jest nieudokumentowana metoda „doNotStrip” w packagingOptions, wystarczy dodać następujące wiersze w build.gradle

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

Nie powinieneś tego robić. Sprawi, że Twój APK będzie ogromny i nie będzie to konieczne. Zobacz moją odpowiedź na temat symbolizowania śladów stosu. –

+0

jest potrzebny tylko dlatego, że niektóre pliki .so są szyfrowane i zostaną zerwane, jeśli zostaną usunięte. –

+0

fwiw, mam dokładnie odwrotny problem z Androidem Studio 3.1/3.2 i gradle 4.4. Nie usuwa już symboli debugowania i nie mogę znaleźć sposobu na wymuszenie rozbierania! nie LOL. – 3c71

Powiązane problemy