GDPURJYFS / WellChat

WellChat is a Application that is a WeChat-like APP by qml.好吧~原谅我的英语。这个一个使用qml来仿制安卓微信的Qt程序,可以运行在安卓上。
MIT License
207 stars 123 forks source link

Android设备上webview会崩溃 #3

Open lemon-dkk opened 8 years ago

lemon-dkk commented 8 years ago

程序运行在Android 4.4.2的华为荣耀6上,点击moments进入页面,然后点击后退按钮是程序会崩溃。 webview压栈问题?

qyvlik commented 8 years ago

现在最新的版本的问题是,无法打开monents这个页面,控制台打印

本版本

D/WellChat( 4700): qrc:///qml/WellChat/Sparrow/Page.qml:213 (__PushPage): qml: component errorString:  qrc:/qml/WellChat/BussinessPage/Discover/MomentsPage/MomentsPage.qml:89 Type WebPage unavailable
D/WellChat( 4700): qrc:///qml/WellChat/Sparrow/WebPage.qml:31 Invalid alias target location: loading

应该是要加载 qrc:///qml/WellChat/Sparrow/+android/WebPage.qml 的,不过从提示的角度来说,应该是成功加载了这个路径下的文件,只不过打印的时候,会打印qrc:///qml/WellChat/Sparrow/WebPage.qml,现在问题是,这个文件有错误,之前不会的。

qyvlik commented 8 years ago

尝试修复WebPage的奔溃问题

尝试修复WebPage的奔溃问题,但是无法在安卓5.2上重现安卓4.4.2打开WebPage的奔溃现象,但是不知为何,现在打开MomentsPage.qml,无法显示TopBar。布局全部打乱。真糟糕。在修复之前还提示

D/WellChat( 4700): qrc:///qml/WellChat/Sparrow/Page.qml:213
(__PushPage): qml: component errorString:
qrc:/qml/WellChat/BussinessPage/Discover/MomentsPage/MomentsPage.qml:89
Type WebPage unavailable
D/WellChat( 4700): qrc:///qml/WellChat/Sparrow/WebPage.qml:31 Invalid
alias target location: loading

很懵逼啊。

点击Moments控制台打印如下:

I/WebViewFactory(17857): Loading com.android.webview version 1.0 (code 499992)
I/LibraryLoader(17857): Time to load native libraries: 2 ms (timestamps 1164-1166)
I/LibraryLoader(17857): Expected native library version number "",actual native library version number ""
V/WebViewChromiumFactoryProvider(17857): Binding Chromium to main looper Looper (main, tid 1) {1b42340f}
I/LibraryLoader(17857): Expected native library version number "",actual native library version number ""
I/chromium(17857): [INFO:library_loader_hooks.cc(108)] Chromium logging enabled: level = 0, default verbosity = 0
I/BrowserStartupController(17857): Initializing chromium process, singleProcess=true
W/art     (17857): Attempt to remove local handle scope entry from IRT, ignoring
W/AudioManagerAndroid(17857): Requires BLUETOOTH permission
W/chromium(17857): [WARNING:resource_bundle.cc(304)] locale_file_path.empty()
I/chromium(17857): [INFO:aw_browser_main_parts.cc(63)] Load from apk succesful, fd=62 off=1382828 len=3242
I/chromium(17857): [INFO:aw_browser_main_parts.cc(76)] Loading webviewchromium.pak from, fd:63 off:239276 len:1143506
D/MALI    (17857): eglCreateContext:206: [MALI] eglCreateContext display 0xf4a96200, share context 0x0 here.
D/MALI    (17857): gles_context_new:248: Create GLES ctx 0xdc12d008 successfully
D/MALI    (17857): eglCreateContext:543: [MALI] eglCreateContext end. Created context 0xd953afc0 here.
D/MALI    (17857): eglDestroyContext:559: [MALI] eglDestroyContext display 0xf4a96200, context 0xd953afc0 here.
D/MALI    (17857): gles_context_delete:435: Destroy GLES ctx 0xdc12d008 successfully
D/PasswordDatabase(17857): constructor password.db
W/chromium(17857): [WARNING:data_reduction_proxy_settings.cc(328)] SPDY proxy OFF at startup
W/art     (17857): Attempt to remove local handle scope entry from IRT, ignoring
D/AwPasswordHandler(17857): getInstance, sInstance = com.android.org.chromium.android_webview.AwPasswordHandler@df29607
W/chromium(17857): [WARNING:password_handler.cc(26)] create-->contents = 0xdc06aa00, delegate = 0xe2013470
W/chromium(17857): [WARNING:password_handler.cc(34)] attaching to web_contents
W/AwContents(17857): onDetachedFromWindow called when already detached. Ignoring
I/SurfaceView(17857): updateWindow -- setFrame, this = org.qtproject.qt5.android.QtSurface{b5856ed V.E..... ........ 0,0-1080,1845 #1}
I/System.out(17857): try to call native method
D/WellChat(17857): ..\WellChat\Sparrow\qtbridgingandroid.cpp:83 (static void QtBridgingAndroid::notifiedKeyboardRectangle(JNIEnv*, jobject, jint, jint, jint, jint)): invoke method notifiedKeyboardRectangle:  true
I/SurfaceView(17857): updateWindow -- OnPreDrawListener, mHaveFrame = true, this = org.qtproject.qt5.android.QtSurface{b5856ed V.E..... ........ 0,0-1080,1845 #1}
V/SettingsInterface(17857):  from settings cache , name = mz_home_key_touch_behavior , value = 0
V/SettingsInterface(17857):  from settings cache , name = mz_float_touch_enable , value = 0
D/Surface (17857): Surface::setBuffersDimensions(this=0xf49bbe00,w=1080,h=1920)
I/BufferQueueProducer(  273): [org.gdpurjyfs.wellchat/org.gdpurjyfs.wellchat.WellChatActivity](this:0x7f8dd25000,id:2959,api:1,p:17857,c:273) new GraphicBuffer needed
D/MPlugin (17857): createInstance(): Begin = 126331319
D/MPlugin (17857): create Instance (two parameters) with : com.mediatek.common.telephony.IOnlyOwnerSimSupport
D/MPlugin (17857): Clazz exists on mapping table : false
E/MPlugin (17857): Unsupported class: com.mediatek.common.telephony.IOnlyOwnerSimSupport
D/MPlugin (17857): createInstance(): End = 126331319
D/GraphicBuffer(17857): register, handle(0xefc9be20) (w:1080 h:1920 s:1088 f:0x1 u:0x000b00)
I/BufferQueueProducer(  273): [org.gdpurjyfs.wellchat/org.gdpurjyfs.wellchat.WellChatActivity](this:0x7f8dd25000,id:2959,api:1,p:17857,c:273) queueBuffer: fps=0.23 dur=4386.40 max=4386.40 min=4386.40
D/Surface (17857): Surface::setBuffersDimensions(this=0xf49bc500,w=1080,h=1845)
I/SurfaceView(17857): updateWindow -- setFrame, this = org.qtproject.qt5.android.QtSurface{b5856ed V.E..... ........ 0,0-1080,1845 #1}
I/System.out(17857): try to call native method
D/WellChat(17857): ..\WellChat\Sparrow\qtbridgingandroid.cpp:83 (static void QtBridgingAndroid::notifiedKeyboardRectangle(JNIEnv*, jobject, jint, jint, jint, jint)): invoke method notifiedKeyboardRectangle:  true
I/SurfaceView(17857): updateWindow -- OnPreDrawListener, mHaveFrame = true, this = org.qtproject.qt5.android.QtSurface{b5856ed V.E..... ........ 0,0-1080,1845 #1}
V/SettingsInterface(17857):  from settings cache , name = mz_home_key_touch_behavior , value = 0
V/SettingsInterface(17857):  from settings cache , name = mz_float_touch_enable , value = 0
D/Surface (17857): Surface::setBuffersDimensions(this=0xf49bc500,w=1080,h=1845)
D/Surface (17857): Surface::setBuffersDimensions(this=0xf49bc500,w=1080,h=1845)
D/Surface (17857): Surface::setBuffersDimensions(this=0xf49bbe00,w=1080,h=1920)
I/BufferQueueProducer(  273): [org.gdpurjyfs.wellchat/org.gdpurjyfs.wellchat.WellChatActivity](this:0x7f8dd25000,id:2959,api:1,p:17857,c:273) new GraphicBuffer needed
D/Surface (17857): Surface::setBuffersDimensions(this=0xf49bc500,w=1080,h=1845)
D/GraphicBuffer(17857): register, handle(0xd960b520) (w:1080 h:1920 s:1088 f:0x1 u:0x000b00)
W/MALI    (17857): glDrawArrays:714: [MALI] glDrawArrays takes more than 5ms here. Total elapse time(us): 6410
I/BufferQueueProducer(  273): [SurfaceView](this:0x7f8dccb000,id:2960,api:1,p:17857,c:273) RunningBehind, queued size:2
W/BindingManager(17857): Cannot call determinedVisibility() - never saw a connection for the pid: 17857
D/Surface (17857): Surface::setBuffersDimensions(this=0xf49bc500,w=1080,h=1845)
I/SurfaceView(17857): updateWindow -- OnPreDrawListener, mHaveFrame = true, this = org.qtproject.qt5.android.QtSurface{b5856ed V.E..... ........ 0,0-1080,1845 #1}
V/SettingsInterface(17857):  from settings cache , name = mz_home_key_touch_behavior , value = 0
V/SettingsInterface(17857):  from settings cache , name = mz_float_touch_enable , value = 0
D/WebViewDraw(17857): callDrawGLFunction method doesn't exist
D/WebViewDraw(17857): java.lang.NoSuchMethodException: callDrawGLFunction [long]
D/WebViewDraw(17857):   at java.lang.Class.getMethod(Class.java:664)
D/WebViewDraw(17857):   at java.lang.Class.getMethod(Class.java:643)
D/WebViewDraw(17857):   at android.webkit.WebViewDelegate.callDrawGlFunction(WebViewDelegate.java:106)
D/WebViewDraw(17857):   at com.android.webview.chromium.WebViewDelegateFactory$ProxyDelegate.callDrawGlFunction(WebViewDelegateFactory.java:139)
D/WebViewDraw(17857):   at com.android.webview.chromium.DrawGLFunctor.requestDrawGL(DrawGLFunctor.java:83)
D/WebViewDraw(17857):   at com.android.webview.chromium.WebViewChromium$WebViewNativeGLDelegate.requestDrawGL(WebViewChromium.java:2221)
D/WebViewDraw(17857):   at com.android.org.chromium.android_webview.AwContents$AwViewMethodsImpl.onDraw(AwContents.java:2496)
D/WebViewDraw(17857):   at com.android.org.chromium.android_webview.AwContents.onDraw(AwContents.java:1116)
D/WebViewDraw(17857):   at com.android.webview.chromium.WebViewChromium.onDraw(WebViewChromium.java:1756)
D/WebViewDraw(17857):   at android.webkit.WebView.onDraw(WebView.java:2469)
D/WebViewDraw(17857):   at android.view.View.draw(View.java:15594)
D/WebViewDraw(17857):   at android.view.View.updateDisplayListIfDirty(View.java:14483)
D/WebViewDraw(17857):   at android.view.View.getDisplayList(View.java:14512)
D/WebViewDraw(17857):   at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3520)
D/WebViewDraw(17857):   at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3499)
D/WebViewDraw(17857):   at android.view.View.updateDisplayListIfDirty(View.java:14433)
D/WebViewDraw(17857):   at android.view.View.getDisplayList(View.java:14512)
D/WebViewDraw(17857):   at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3520)
D/WebViewDraw(17857):   at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3499)
D/WebViewDraw(17857):   at android.view.View.updateDisplayListIfDirty(View.java:14433)
D/WebViewDraw(17857):   at android.view.View.getDisplayList(View.java:14512)
D/WebViewDraw(17857):   at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3520)
D/WebViewDraw(17857):   at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3499)
D/WebViewDraw(17857):   at android.view.View.updateDisplayListIfDirty(View.java:14433)
D/WebViewDraw(17857):   at android.view.View.getDisplayList(View.java:14512)
D/WebViewDraw(17857):   at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3520)
D/WebViewDraw(17857):   at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3499)
D/WebViewDraw(17857):   at android.view.View.updateDisplayListIfDirty(View.java:14433)
D/WebViewDraw(17857):   at android.view.View.getDisplayList(View.java:14512)
D/WebViewDraw(17857):   at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:279)
D/WebViewDraw(17857):   at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:285)
D/WebViewDraw(17857):   at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:335)
D/WebViewDraw(17857):   at android.view.ViewRootImpl.draw(ViewRootImpl.java:3048)
D/WebViewDraw(17857):   at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2857)
D/WebViewDraw(17857):   at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2468)
D/WebViewDraw(17857):   at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1329)
D/WebViewDraw(17857):   at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6780)
D/WebViewDraw(17857):   at android.view.Choreographer$CallbackRecord.run(Choreographer.java:818)
D/WebViewDraw(17857):   at android.view.Choreographer.doCallbacks(Choreographer.java:621)
D/WebViewDraw(17857):   at android.view.Choreographer.doFrame(Choreographer.java:584)
D/WebViewDraw(17857):   at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:804)
D/WebViewDraw(17857):   at android.os.Handler.handleCallback(Handler.java:815)
D/WebViewDraw(17857):   at android.os.Handler.dispatchMessage(Handler.java:104)
D/WebViewDraw(17857):   at android.os.Looper.loop(Looper.java:194)
D/WebViewDraw(17857):   at android.app.ActivityThread.main(ActivityThread.java:5691)
D/WebViewDraw(17857):   at java.lang.reflect.Method.invoke(Native Method)
D/WebViewDraw(17857):   at java.lang.reflect.Method.invoke(Method.java:372)
D/WebViewDraw(17857):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:959)
D/WebViewDraw(17857):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754)
D/Surface (17857): Surface::setBuffersDimensions(this=0xf49bbe00,w=1080,h=1920)
I/BufferQueueProducer(  273): [org.gdpurjyfs.wellchat/org.gdpurjyfs.wellchat.WellChatActivity](this:0x7f8dd25000,id:2959,api:1,p:17857,c:273) new GraphicBuffer needed
I/BufferQueueProducer(  273): [SurfaceView](this:0x7f8dccb000,id:2960,api:1,p:17857,c:273) RunningBehind, queued size:2
D/Surface (17857): Surface::setBuffersDimensions(this=0xf49bc500,w=1080,h=1845)
D/GraphicBuffer(17857): register, handle(0xd960b5c0) (w:1080 h:1920 s:1088 f:0x1 u:0x000b00)
W/MALI    (17857): glDrawArrays:714: [MALI] glDrawArrays takes more than 5ms here. Total elapse time(us): 7300
I/SurfaceView(17857): updateWindow -- OnPreDrawListener, mHaveFrame = true, this = org.qtproject.qt5.android.QtSurface{b5856ed V.E..... ........ 0,0-1080,1845 #1}
V/SettingsInterface(17857):  from settings cache , name = mz_home_key_touch_behavior , value = 0
V/SettingsInterface(17857):  from settings cache , name = mz_float_touch_enable , value = 0
I/BufferQueueProducer(  273): [SurfaceView](this:0x7f8dccb000,id:2960,api:1,p:17857,c:273) RunningBehind, queued size:2
D/Surface (17857): Surface::setBuffersDimensions(this=0xf49bbe00,w=1080,h=1920)
lemon-dkk commented 8 years ago

我这里控制台不会打印错误,而且可以打开moments,但是依然会崩溃