2

我构建自己的 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 的渲染不一致?

4

1 回答 1

2

到目前为止我已经尝试过:下载android 2.2的源代码并使用(make framework)制作framework.jar并用它来替换eclipse项目中android SDK中的android.jar

那是行不通的。首先,设备上存在的类将取代您应用程序中的相同类。其次,WebKit 不是用 Java 实现的。

我完全走错了方向吗?

是的。

有没有更好的方法来最小化不同版本的 android 上不同视觉 webkit 的渲染不一致?

不要使用那些给你“在不同版本的 android 上呈现 webkit 的不同视觉不一致”的东西。

或者,使用具有兼容性层的框架来处理您正在尝试做的任何事情,在那里他们完成了解决“在不同版本的 android 上呈现不同版本的 webkit 的不一致性”的工作。

于 2013-01-07T22:13:53.333 回答