我构建自己的 Android webkit 的主要动机是尽量减少不同版本的 android 上不同视觉 webkit 的渲染不一致。
到目前为止,我已经尝试过:
- 下载android 2.2的源代码并使用(make framework)制作framework.jar并用它来替换eclipse项目中android SDK中的android.jar
- 将在(external/webkit/WebKit/android/jni)中注册的所有本机方法的包名从android.webkit更改为我的eclipse项目的包名(com/mycustomwebkit),然后使用(make libwebcore)创建库libwebcore 。所以
- 将整个 webkit java 类从 android 源(在 external/webkit/WebKit/android 中)复制到我的 eclipse 项目中,并使用它来创建我自己的 webview。
- 在 Eclipse 的 lib/armeabi 中包含 libwebcore.so
- 编译并创建apk文件
但应用程序在设备上启动时崩溃并出现以下错误:
04-18 10:39:23.561: W/dalvikvm(8214): No implementation found for native Lcom/tester/webkit/JWebCoreJavaBridge;.nativeConstructor
()V
04-18 10:39:23.561: W/dalvikvm(8214): threadid=14: thread exiting with uncaught exception (group=0x2b4d61f8)
04-18 10:39:23.561: E/AndroidRuntime(8214): FATAL EXCEPTION: WebViewCoreThread
04-18 10:39:23.561: E/AndroidRuntime(8214): java.lang.UnsatisfiedLinkError: nativeConstructor
04-18 10:39:23.561: E/AndroidRuntime(8214): at com.tester.webkit.JWebCoreJavaBridge.nativeConstructor(Native Method)
04-18 10:39:23.561: E/AndroidRuntime(8214): at com.tester.webkit.JWebCoreJavaBridge.<init>(JWebCoreJavaBridge.java:66)
04-18 10:39:23.561: E/AndroidRuntime(8214): at com.tester.webkit.BrowserFrame.<init>(BrowserFrame.java:237)
04-18 10:39:23.561: E/AndroidRuntime(8214): at com.tester.webkit.WebViewCore.initialize(WebViewCore.java:236)
04-18 10:39:23.561: E/AndroidRuntime(8214): at com.tester.webkit.WebViewCore.access$1(WebViewCore.java:230)
04-18 10:39:23.561: E/AndroidRuntime(8214): at com.tester.webkit.WebViewCore$WebCoreThread$1.handleMessage
(WebViewCore.java:705)
04-18 10:39:23.561: E/AndroidRuntime(8214): at android.os.Handler.dispatchMessage(Handler.java:99)
04-18 10:39:23.561: E/AndroidRuntime(8214): at android.os.Looper.loop(Looper.java:137)
04-18 10:39:23.561: E/AndroidRuntime(8214): at com.tester.webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:748)
04-18 10:39:23.561: E/AndroidRuntime(8214): at java.lang.Thread.run(Thread.java:856)
我完全走错了方向吗?有没有更好的方法来最小化不同版本的 android 上不同视觉 webkit 的渲染不一致?