`
iaiai
  • 浏览: 2180053 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

android2.3上用WebView组件js和java相互调用报错

 
阅读更多
Android2.3中Webkit引擎导致VM崩溃的问题
WARN/dalvikvm(429): JNI WARNING: jarray 0x405986b0 points to non-array object (Ljava/lang/String;)
INFO/dalvikvm(429): "WebViewCoreThread" prio=5 tid=9 NATIVE
INFO/dalvikvm(429):   | group="main" sCount=0 dsCount=0 obj=0x405346e0 self=0x25b558
INFO/dalvikvm(429):   | sysTid=563 nice=0 sched=0/0 cgrp=default handle=2866504
INFO/dalvikvm(429):   | schedstat=( 496679324 479902011 97 )
INFO/dalvikvm(429):   at android.webkit.LoadListener.nativeFinished(Native Method)
INFO/dalvikvm(429):   at android.webkit.LoadListener.nativeFinished(Native Method)
INFO/dalvikvm(429):   at android.webkit.LoadListener.tearDown(LoadListener.java:1200)
INFO/dalvikvm(429):   at android.webkit.LoadListener.handleEndData(LoadListener.java:721)
INFO/dalvikvm(429):   at android.webkit.LoadListener.handleMessage(LoadListener.java:219)
INFO/dalvikvm(429):   at android.os.Handler.dispatchMessage(Handler.java:99)
INFO/dalvikvm(429):   at android.os.Looper.loop(Looper.java:123)
INFO/dalvikvm(429):   at android.webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:629)
INFO/dalvikvm(429):   at java.lang.Thread.run(Thread.java:1019)
ERROR/dalvikvm(429): VM aborting
INFO/DEBUG(31): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
INFO/DEBUG(31): Build fingerprint: 'generic/sdk/generic:2.3.1/GSI11/93351:eng/test-keys'
INFO/DEBUG(31): pid: 429, tid: 563  >>> org.mdx <<<
INFO/DEBUG(31): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr deadd00d
INFO/DEBUG(31):  r0 fffffebc  r1 deadd00d  r2 00000026  r3 00000000
INFO/DEBUG(31):  r4 81da45c8  r5 405986b0  r6 81d859ec  r7 002105f0
INFO/DEBUG(31):  r8 4456bb58  r9 43db9ecc  10 43db9eb4  fp 41edd82c
INFO/DEBUG(31):  ip 81da4728  sp 4456b4c8  lr afd19375  pc 81d45a02  cpsr 20000030
INFO/DEBUG(31):          #00  pc 00045a02  /system/lib/libdvm.so
INFO/DEBUG(31):          #01  pc 000376fc  /system/lib/libdvm.so
INFO/DEBUG(31):          #02  pc 000399c4  /system/lib/libdvm.so
INFO/DEBUG(31):          #03  pc 0003a4a0  /system/lib/libdvm.so
INFO/DEBUG(31):          #04  pc 0032b6e6  /system/lib/libwebcore.so
INFO/DEBUG(31):          #05  pc 002a4db4  /system/lib/libwebcore.so
INFO/DEBUG(31):          #06  pc 001a6146  /system/lib/libwebcore.so
INFO/DEBUG(31):          #07  pc 002a5880  /system/lib/libwebcore.so
INFO/DEBUG(31):          #08  pc 00359e5e  /system/lib/libwebcore.so
INFO/DEBUG(31):          #09  pc 0035d1b6  /system/lib/libwebcore.so
INFO/DEBUG(31):          #10  pc 0036b0a0  /system/lib/libwebcore.so
INFO/DEBUG(31):          #11  pc 003627d8  /system/lib/libwebcore.so
INFO/DEBUG(31):          #12  pc 0029fb34  /system/lib/libwebcore.so
INFO/DEBUG(31):          #13  pc 0023368e  /system/lib/libwebcore.so
INFO/DEBUG(31):          #14  pc 000f5276  /system/lib/libwebcore.so
INFO/DEBUG(31):          #15  pc 000f6ad8  /system/lib/libwebcore.so
INFO/DEBUG(31):          #16  pc 0022a3ea  /system/lib/libwebcore.so
INFO/DEBUG(31):          #17  pc 0022af34  /system/lib/libwebcore.so
INFO/DEBUG(31):          #18  pc 000e2256  /system/lib/libwebcore.so
INFO/DEBUG(31):          #19  pc 000e3ab2  /system/lib/libwebcore.so
INFO/DEBUG(31):          #20  pc 000e3b92  /system/lib/libwebcore.so
INFO/DEBUG(31):          #21  pc 0022add8  /system/lib/libwebcore.so
INFO/DEBUG(31):          #22  pc 0026ee82  /system/lib/libwebcore.so
INFO/DEBUG(31):          #23  pc 000d13ec  /system/lib/libwebcore.so
INFO/DEBUG(31):          #24  pc 000d15cc  /system/lib/libwebcore.so
INFO/DEBUG(31):          #25  pc 00224446  /system/lib/libwebcore.so
INFO/DEBUG(31):          #26  pc 000e2676  /system/lib/libwebcore.so
INFO/DEBUG(31):          #27  pc 000e2696  /system/lib/libwebcore.so
INFO/DEBUG(31):          #28  pc 002719e2  /system/lib/libwebcore.so
INFO/DEBUG(31):          #29  pc 000e39d6  /system/lib/libwebcore.so
INFO/DEBUG(31):          #30  pc 00272d7c  /system/lib/libwebcore.so
INFO/DEBUG(31):          #31  pc 000eac5e  /system/lib/libwebcore.so
INFO/DEBUG(31): code around pc:
INFO/DEBUG(31): 81d459e0 447a4479 ed0cf7d1 20004c09 ee34f7d1 
INFO/DEBUG(31): 81d459f0 447c4808 6bdb5823 d0002b00 49064798 
INFO/DEBUG(31): 81d45a00 700a2226 eea0f7d1 0004361f 000451dd 
INFO/DEBUG(31): 81d45a10 0005ebd2 fffffebc deadd00d b510b40e 
INFO/DEBUG(31): 81d45a20 4c0a4b09 447bb083 aa05591b 6b5bca02 
INFO/DEBUG(31): code around lr:
INFO/DEBUG(31): afd19354 b0834a0d 589c447b 26009001 686768a5 
INFO/DEBUG(31): afd19364 220ce008 2b005eab 1c28d003 47889901 
INFO/DEBUG(31): afd19374 35544306 d5f43f01 2c006824 b003d1ee 
INFO/DEBUG(31): afd19384 bdf01c30 000281a8 ffffff88 1c0fb5f0 
INFO/DEBUG(31): afd19394 43551c3d a904b087 1c16ac01 604d9004 
INFO/DEBUG(31): stack:
INFO/DEBUG(31):     4456b488  00000015  
INFO/DEBUG(31):     4456b48c  afd18407  /system/lib/libc.so
INFO/DEBUG(31):     4456b490  afd4270c  /system/lib/libc.so
INFO/DEBUG(31):     4456b494  afd426b8  /system/lib/libc.so
INFO/DEBUG(31):     4456b498  00000000  
INFO/DEBUG(31):     4456b49c  afd19375  /system/lib/libc.so
INFO/DEBUG(31):     4456b4a0  0025b558  [heap]
INFO/DEBUG(31):     4456b4a4  afd183d9  /system/lib/libc.so
INFO/DEBUG(31):     4456b4a8  002105f0  [heap]
INFO/DEBUG(31):     4456b4ac  0005ebd2  [heap]
INFO/DEBUG(31):     4456b4b0  405986b0  /dev/ashmem/dalvik-heap (deleted)
INFO/DEBUG(31):     4456b4b4  81d859ec  /system/lib/libdvm.so
INFO/DEBUG(31):     4456b4b8  002105f0  [heap]
INFO/DEBUG(31):     4456b4bc  afd18437  /system/lib/libc.so
INFO/DEBUG(31):     4456b4c0  df002777  
INFO/DEBUG(31):     4456b4c4  e3a070ad  
INFO/DEBUG(31): #00 4456b4c8  00000001  
INFO/DEBUG(31):     4456b4cc  81d37701  /system/lib/libdvm.so
INFO/DEBUG(31): #01 4456b4d0  00000001  
INFO/DEBUG(31):     4456b4d4  81d399c9  /system/lib/libdvm.so


在网上查了一下,好像解决办法挺麻烦的,网上的资料都说是2.3的Bug。
Android2.2,2.3,2.3.3都存在的一个bug,在这里有详细的描述。
http://code.google.com/p/android/issues/detail?id=12987
问题的核心在于这样一句话:JNI WARNING: jarray 0x4074f6e0 points to non-array object (Ljava/lang/String;)
也就是进行JNI调用时,把一个Java中的String对象当数组来访问了,最终导致虚拟机崩溃。

在网上查了下,基本算是一个比较严重的BUG,没办法解决,所以如果说用WebView组件想在js和java之间相互调用的话就没办法适应所有机型,所以做android原生应用程序时最好不要用WebView组件,否则2.3系统会直接崩溃掉。
分享到:
评论
1 楼 jiaoronggui 2013-05-01  
好像说是2.3模拟器的问题,真机器上未测试过了,找时间来测试下

相关推荐

    android使用webView实现java程序与js脚本的相互调用

    本文将详细介绍如何在Android中使用WebView实现Java程序与JS脚本的相互调用。 ### 1. 添加WebView到布局 首先,在XML布局文件中添加WebView组件,例如在`activity_main.xml`中: ```xml &lt;WebView android:id="@+...

    webview组件javascript调用java的小程序

    综上所述,"webview组件javascript调用java的小程序"这个主题涉及到的核心知识点包括:WebView组件的使用、JavaScript与Java的交互机制、`addJavascriptInterface`方法的使用以及`WebViewClient`和`WebChromeClient`...

    WebView实现Java与JS相互调用

    本文将深入探讨如何在Android中通过WebView实现Java与JS的相互调用。 首先,我们来理解Java调用JS的机制。Android提供了`WebView`类,其中的`loadUrl()`方法可以用来执行JavaScript代码。例如,我们可以这样加载一...

    android demo,webview_js(webview的js方法调用java方法)。

    本示例“android demo,webview_js”着重展示了如何通过Webview实现JavaScript调用Java方法的功能。这个功能对于创建混合式应用或者在原生应用中嵌入HTML5页面尤其有用。 首先,我们需要在Android布局文件中添加一...

    android webview中使用Java调用JavaScript方法并获取返回值

    为了实现Java和JavaScript之间的通信,Android WebView提供了addJavascriptInterface()方法。这个方法允许你向WebView注入一个接口对象,JavaScript代码可以通过这个接口访问Java对象的方法。下面将详细解释如何实现...

    WebView基本的js与java相互调用

    本教程将详细讲解如何实现JavaScript与Java之间的基本交互,即WebView中的js调用Android代码以及Android对js的调用。 一、WebView的配置 首先,我们需要在XML布局文件中添加WebView组件,并在对应的Activity中初始...

    WebView中 Js 和 Android java代码相互调用

    本文将详细介绍如何在WebView中实现JavaScript与Android Java代码的相互调用。 一、JavaScript调用Android Java代码 1. 注册JavaScript接口: 为了使JavaScript能够调用Android Java代码,我们需要在WebView中注册...

    android不使用webview与js交互

    Android应用可以调用服务器上的API,这些API由Node.js或其他后端服务提供,执行JavaScript代码并返回结果。这种方式增加了网络延迟,但避免了在客户端解析JavaScript的开销。 4. **本地服务与WebSocket** 创建一个...

    android之webview与js相互调用

    本教程将深入探讨如何在Android的Webview中实现Android与JavaScript的相互调用。 ### Android调用JavaScript 当需要在Android应用中调用JavaScript函数时,我们可以使用`WebView`类提供的`loadUrl()`方法。这个...

    WebView中js与java的相互调用

    在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序中加载和显示网页内容。而JavaScript与Java的交互是WebView功能的一个强大扩展,使得我们可以利用Web技术与原生Android应用进行深度集成。以下...

    webview js 和java 之间的调用

    综上所述,JavaScript与Java在WebView中的互调用是Android开发中一个常用且实用的技术,它使得我们可以利用Web技术来构建功能丰富的原生应用。但同时,也需要注意安全性和性能优化,以提供更好的用户体验。

    Android WebView H5调用拍照

    在“Android WebView H5调用拍照”这个主题中,我们将深入探讨如何通过WebView组件和H5页面实现用户调用手机摄像头拍照的功能。 首先,我们需要理解WebView的基本使用。在AndroidManifest.xml文件中,为应用添加...

    Android原生WebView与网页js相互调用

    本文将深入探讨如何在Android原生的WebView中与嵌入的JavaScript进行交互,使得两者可以相互调用方法,增强应用的功能和用户体验。 一、WebView基本使用 首先,我们需要在布局XML文件中添加WebView组件,并在Java...

    Android中JS与Java相互调用Demo

    综上所述,这个"Android中JS与Java相互调用Demo"主要演示了如何在Android应用中利用`WebView`组件实现JavaScript与Java的交互,这对于开发混合应用或者增强应用功能具有重要的实践价值。通过学习和理解这个Demo,...

    Webview与Javascript相互调用 (Android studio )demo

    本示例项目"Webview与Javascript相互调用 (Android Studio)"就是专门针对这一功能的演示,它提供了直接在Android Studio中运行的代码,帮助开发者理解和实践WebView与JavaScript之间的通信。 首先,我们来深入理解...

    安卓webview中的h5页面里js和java相互调用

    本篇将详细探讨如何在Webview中的H5(HTML5)页面里实现JavaScript(js)与Java代码的相互调用,从而增强用户体验并实现更丰富的功能。 首先,我们需要理解JavaScript与Java交互的基本原理。Android的Webview提供了...

    android中Webview与javascript的交互(互相调用)

    总之,Android中的WebView与JavaScript的交互是通过暴露Java对象和调用JavaScript函数实现的,这种方式极大地丰富了Android应用的功能。在实际开发中,我们需要合理利用这一特性,同时注意安全性和性能优化。

    android JS与java代码相互调用

    在Android开发中,JavaScript(JS)与Java代码的相互调用是常见的需求,尤其是在混合式应用开发中。这种交互能够充分利用JavaScript的灵活性和Java的强大功能,实现更丰富的用户体验。本Demo旨在提供一个清晰、易懂...

    android java和webview交互demo

    这篇资源文章“android java和webview交互demo”详细介绍了如何在Java驱动的Android应用中使用WebView,并通过JavaScript接口进行数据交换。 **一、WebView基本使用** 1. **添加依赖** 在AndroidManifest.xml中,...

    webview控件使用(java代码和js的互相调用)

    总结:WebView组件是Android应用与Web内容交互的关键工具,通过设置JavaScript支持和添加JavaScript接口,可以轻松实现Java代码与JavaScript的双向通信。这极大地扩展了原生应用的功能,使开发者能够利用Web技术构建...

Global site tag (gtag.js) - Google Analytics