Widzę tę natywną awarię z następującym śladem stosu.
Dzieje się tak tylko w Androidzie 7.0 i 7.1. Nie dodano nic nowego do aplikacji, która była produkowana od kilku lat, ale wraz z aktualizacją większej liczby urządzeń do Nougat ta awaria zdarza się teraz często i staje się uciążliwa.
Każda rada będzie mile widziana.
native: pc 000000000007a6c4 /system/lib64/libc.so (tgkill+8)
native: pc 0000000000077920 /system/lib64/libc.so (pthread_kill+64)
native: pc 000000000002538c /system/lib64/libc.so (raise+24)
native: pc 000000000001d24c /system/lib64/libc.so (abort+52)
native: pc 000000000001225c /system/lib64/libcutils.so (__android_log_assert+224)
native: pc 00000000000610e0 /system/lib64/libhwui.so
native: pc 000000000003908c /system/lib64/libhwui.so
native: pc 000000000003609c /system/lib64/libhwui.so
native: pc 000000000003b4fc /system/lib64/libhwui.so
native: pc 000000000003c520 /system/lib64/libhwui.so
native: pc 000000000003e694 /system/lib64/libhwui.so (_ZN7android10uirenderer12renderthread12RenderThread10threadLoopEv+152)
native: pc 00000000000127f0 /system/lib64/libutils.so (_ZN7android6Thread11_threadLoopEPv+336)
native: pc 00000000000a50b0 /system/lib64/libandroid_runtime.so (_ZN7android14AndroidRuntime15javaThreadShellEPv+116)
native: pc 00000000000770f4 /system/lib64/libc.so (_ZL15__pthread_startPv+204)
native: pc 000000000001e7d0 /system/lib64/libc.so (__start_thread+16)
Oto lista urządzeń, których dotyczy problem:
AKTUALIZACJA 18.07:
Wciąż nie udało mi się dotrzeć do sedna tego problemu, dlatego zdecydowałem się na zakup urządzenia, które miało najwięcej wystąpień i było w rozsądnej cenie, którym okazał się Samsung Galaxy J3 2017 w wersji z systemem Android 7.0. Niestety nadal nie jestem w stanie odtworzyć awarii.
Wprowadziłem również pewne ulepszenia dotyczące zużycia pamięci w aplikacji w produkcji, ale awaria nadal ma miejsce.
Ze wszystkich komentarzy i moich własnych badań wynika, że jest to związane z dynamicznie połączonymi NDK, ale nie używam żadnego i trudno jest dowiedzieć się, czy działa jakakolwiek z zależności.
Chciałbym podzielić się moimi zależnościami, byłoby wspaniale, gdyby inni ludzie borykający się z tym samym problemem mogli sprawdzić, czy używają jednej z tych samych zależności - być może w ten sposób możemy wykryć winowajcę.
// App Compat
compile 'com.android.support:support-v4:23.0.1'
compile 'com.android.support:appcompat-v7:23.0.1'
compile 'com.android.support:cardview-v7:23.0.1'
compile 'com.android.support:recyclerview-v7:23.0.1'
// Play Services
compile 'com.google.android.gms:play-services-location:8.3.0'
compile 'com.google.android.gms:play-services-maps:8.3.0'
compile 'com.google.android.gms:play-services-analytics:8.3.0'
compile 'com.google.android.gms:play-services-appindexing:8.3.0'
compile 'com.google.android.gms:play-services-ads:8.3.0'
// Misc Libraries
compile 'fr.avianey.com.viewpagerindicator:library:2.4.1@aar'
compile files('app/libs/htmlcleaner-2.7.jar')
compile files('app/libs/protobuf-java-2.6.0.jar')
compile files('app/libs/nineoldandroids-2.4.0.jar')
// Fabric
compile('com.twitter.sdk.android:twitter:1.13.0@aar') { transitive = true; }
compile('com.crashlytics.sdk.android:crashlytics:2.5.5@aar') { transitive = true; }
W przypadku osób, które stoją w obliczu tej samej awarii, prosimy o odpowiedź w komentarzach, jeśli używasz którejkolwiek z tych zależności / wersji. Może uda nam się wyodrębnić zależność od problemu.
źródło
Odpowiedzi:
Spojrzenie na dostarczony zrzut daje kilka wskazówek:
_ZN7android10uirenderer12renderthread12RenderThread10threadLoopEv
Oznacza to, że błąd wystąpił w wątku interfejsu użytkownika.
libhwui.so x 6
Oznacza to, że dzieje się to w środku kodu związanego z grafiką / interfejsem użytkownika.
libcutils.so - __android_log_assert
To jest program obsługi assertów, więc najprawdopodobniej został naruszony jakiś rodzaj asercji
libwhui
.anulować:
Jest to aplikacja nakazująca systemowi operacyjnemu zamknięcie „nieprawidłowo”.
raise + pthread_kill + tgkill: To jest system operacyjny (Android) zamykający aplikację.
Możesz zobaczyć dokumentację dotyczącą debugowania tego rodzaju awarii tutaj .
W każdym razie obawiam się, że poza tą zgrubną i nieprecyzyjną interpretacją przedstawionych danych naprawdę trudno jest spekulować.
Może gdybyś złapał błąd, gdy był dołączony do przeglądarki dzienników Androida, miałbyś więcej danych specyficznych dla aplikacji (lub nawet komunikat o błędzie, który zwykle wyświetla funkcja assert).
Moja rada jest taka, aby użyć czegoś takiego jak ACRA, aby wyśledzić wszystkie szczegóły dotyczące błędu lub zdobyć urządzenie, którego dotyczy problem, i odtworzyć je po podłączeniu do debuggera.
Powodzenia!
EDYCJA 16.06.2017 : Chcę tylko dodać dodatkowe informacje dzięki uprzejmości Fco P. Najwyraźniej Google zdecydował się wprowadzić pewne zmiany w tym, jakie biblioteki natywne mogą działać w najnowszych wersjach Androida (7.x). Więcej szczegółów w tym linku .
źródło
To jest zgłaszane tutaj: https://issuetracker.google.com/issues/37123764
Aby odtworzyć: Uzyskaj tryb, na który ma to wpływ, włącz tryb programisty i ustaw działania w tle na 0. Włącz także opcję „Pokaż awarie w tle”.
Następnie otwórz aplikację i zamknij ją ponownie: zobaczysz awarię.
źródło
Brak komentarzy (niewystarczająca liczba powtórzeń).
Spośród wymienionych zależności używamy:
inne wersje niż twoja. Podejrzewam, że play-services-maps zawiera błąd.
Być może używasz fragmentu mapy w przeglądarce, tak jak my, a wiele osób, o których mowa, zostało już wspomniane przez Koji Matsubara ( https://issuetracker.google.com/issues/37123764 )
źródło
Nie wiem, może ten problem jak nasz, może inny, bo w zależnościach widzę w tym
carview
. Podziel się tutaj nadzieją przydatną dla kogoś w przyszłościNapotkałem również problem na Androidzie 7.0 i 7.1 poniżej
Po badaniach i wyszukiwaniu w gooogle wymieniłem
cardview
doFramelayout
tego czasu ten problem został rozwiązanyźródło
cardview
doFramelayout
tego czasu ten problem został rozwiązany, ten problem występuje tylko na Androidzie 7.xbecause I see in dependencies have including carview
Miałem ten sam problem w konsoli Google Play na tych samych urządzeniach co Ty.
W moim przypadku problem był w TextureView z animacją w osobnym wątku z blokowaniem i odblokowywaniem płótna.
Zmieniłem animację TextureView na animację invalidate-onDraw dla Androida 7 i 7.1 i to pomogło.
źródło
Widzę ten problem z raportu o awarii na urządzeniu jednego użytkownika - „Huawei Honor 7X (HWBND-H)” - z systemem Android 8.0. Ponieważ nie występuje w terenie dla innych urządzeń / wersji systemu operacyjnego, myślę, że mogło to już zostać naprawione w aktualizacjach systemu operacyjnego (których ten użytkownik nie odebrał lub prawdopodobnie Huawei nie dostarczył).
źródło