Je suis en train d'avoir un crash sur l'application d'un client et, à part un lot à l'écran, je n'ai pas réussi à le résoudre. WTFCrash
je ne tire pas grand profit de la trace de la pile.
J'utilise un WKWebView
L'exemple suivant montre une page web qui contient des animations CSS et une vidéo. Le problème se produit sous iOS 8 et 9 sur une grande variété d'appareils (de l'iPhone 5c au 6s et une gamme similaire d'iPads).
Le site WKWebView
s'exécute dans son propre processus, et non dans celui de l'application. Lorsque le crash se produit, une couche blanche recouvre l'application principale, la rendant inaccessible même si son processus n'a pas été affecté.
En regardant les journaux des périphériques, je trouve des pannes provenant de la fonction com.apple.WebKit.WebContent
et ils ont tous exactement le même journal pour le fil planté.
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 JavaScriptCore 0x0000000184c9f22c WTFCrash + 72
1 JavaScriptCore 0x0000000184c9f224 WTFCrash + 64
2 WebKit 0x0000000188ecd850 WebKit::RemoteLayerTreeDrawingArea::acceleratedAnimationDidStart(unsigned long long, WTF::String const&, double) + 0
3 WebCore 0x0000000184f2e70c WebCore::ThreadTimers::sharedTimerFiredInternal() + 148
4 WebCore 0x0000000184f2e64c WebCore::timerFired(__CFRunLoopTimer*, void*) + 36
5 CoreFoundation 0x000000018107d81c __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 28
6 CoreFoundation 0x000000018107d4c0 __CFRunLoopDoTimer + 884
7 CoreFoundation 0x000000018107abd4 __CFRunLoopRun + 1520
8 CoreFoundation 0x0000000180fa4d10 CFRunLoopRunSpecific + 384
9 Foundation 0x00000001819b4d8c -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 308
10 Foundation 0x0000000181a09ff8 -[NSRunLoop(NSRunLoop) run] + 88
11 libxpc.dylib 0x0000000180d68cf8 _xpc_objc_main + 660
12 libxpc.dylib 0x0000000180d6aa2c xpc_main + 200
13 com.apple.WebKit.WebContent 0x0000000100057924 0x100054000 + 14628
14 libdyld.dylib 0x0000000180b428b8 start + 4
Voici un exemple de code html/css que nous utilisons pour reproduire le problème.
var initialWidth = 100;
window.addEventListener('load', function() {
var div = document.getElementById('mytest');
div.className = '';
setInterval(function() {
initialWidth += 10;
if (initialWidth > 1000) {
initialWidth = 1;
}
div.style.height = initialWidth + 'px';
}, 40);
}, false);
body {
background-color: #4cb9e4;
}
div#mytest {
position: absolute;
top: 0;
width: 100%;
height: 5000px;
background-color: rgba(0, 0, 0, 0.7);
text-align: center;
overflow-y: hidden;
-webkit-transition-property: height;
-moz-transition-property: height;
transition-property: height;
-webkit-transition-duration: 0.5s;
-moz-transition-duration: 0.5s;
transition-duration: 0.5s;
-webkit-transition-timing-function: ease;
-moz-transition-timing-function: ease;
transition-timing-function: ease;
}
div#mytest.hidden {
height: 0;
}
<body>
<div class="hidden" id="mytest">
This is sample test
</div>
</body>
Cela vous semble-t-il familier ? Y a-t-il quelque chose que je devrais dire à l'ingénieur Web de changer en ce qui concerne l'animation ?
0 votes
Pouvez-vous afficher le code qui contient le CSS et le HTML ?
3 votes
Vous devez vraiment fournir des informations supplémentaires pour cette question afin d'obtenir une réponse valable. Les Webviews peuvent être très bizarres et difficiles à gérer, vous avez besoin d'autant d'informations que possible pour les diagnostiquer.
0 votes
Avez-vous trouvé une solution à ce problème ? J'ai un utilisateur de mon application qui obtient des plantages de WebContent à partir d'une WKWebView.