Android从源代码编译webkit并在应用程序中使用它

时间:2013-01-07 22:08:58

标签: android

我建立自己的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.so
  • 将整个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的不同视觉的渲染不一致性?

1 个答案:

答案 0 :(得分:2)

  

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

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

  

我完全走错了方向吗?

  

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

不要使用能够“在不同版本的android上呈现webkit不同视角的不一致”的东西。

或者,使用具有兼容性层的框架,无论您正在尝试做什么,在那里他们完成了解决“在不同版本的android上呈现webkit的不同视觉的不一致性”的工作。