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

标签 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不同视觉的渲染不一致?

最佳答案

So far I have tried: downloaded the source code of android 2.2 and use (make framework) to make framework.jar and use it to replace android.jar from android SDK in a eclipse project

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

Am I completely in a wrong direction ?

是的。

and is there a better way to minimise the rendering inconsistency of different vision of webkit on different version of android ?

不要使用那些会导致“在不同版本的 Android 上渲染不同版本的 webkit 不一致”的东西。

或者,使用具有兼容层的框架来完成您想要做的任何事情,它们解决了“不同版本的 Android 上不同版本的 webkit 的渲染不一致问题”。

关于Android 从源代码编译 webkit 并在应用程序中使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14204921/

相关文章:

Android如何判断滑动菜单是否可见

android - 何时调用 onRestoreInstanceState?

android - Android 中的 AudioTrack Seek

android - PhoneGap 两次显示 HTML 输入类型按钮的值

android - 使用底部导航栏防止 fragment 刷新

Android Sqlite 连接两列

Android:如何更改 JellyBean 中的状态栏颜色(API 18)

API 19 上状态栏后面的 Android 工具栏

android - 在 Cordova 插件中使用 SurfaceView

android - 我应该为 Dagger 2 中的每个 Activity 使用一个组件吗?