2013-01-07 37 views
1

我的主要动机是构建我自己的Android Webkit,以最大限度地减少不同版本的Android上webkit不同视图的渲染不一致性。Android从源代码编译webkit并在应用程序中使用它

到目前为止,我曾尝试:

  • 下载的Android 2.2的源代码,并使用(做框架),使framework.jar,并用它来代替的android.jar从Android SDK中的Eclipse项目
  • 将(external/webkit/WebKit/android/jni)中注册的所有本地方法的包名从android.webkit更改为我的eclipse项目(com/mycustomwebkit)的包名,然后使用(make libwebcore)创建库libwebcore.so
  • 从android源代码(在external/webkit/WebKit/android中)将整个webkit java类复制到我的eclipse项目并用它来创建我自己的webview。
  • 包含在日食libwebcore.so中的lib/armeabi
  • 编译和创建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的不同视觉渲染不一致?

+0

看到这个职位: http://stackoverflow.com/questions/10717257/android-ndk-custom-webview-compiling-from-source –

回答

2

到目前为止,我曾尝试:下载的Android 2.2的源代码,并使用(做框架),使framework.jar,并用它来代替的android.jar从Android SDK中的Eclipse项目

这不起作用。首先,设备上存在的类将取代应用中的相同类。其次,WebKit不是用Java实现的。

我完全错了吗?

是的。

,是有一个更好的方式,以尽量减少不同视力的WebKit的不同版本的Android的呈现不一致?

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

或者,使用具有兼容性层的框架,无论您尝试做什么,他们在何处处理“在不同版本的android上呈现webkit的不同视觉效果”。

+0

如果科尔多瓦的WebView使用来自Android的SDK,而不是webkit.webview的,对我的问题有帮助 –

+0

@BillyLau:不,因为'CordovaWebView' *是标准的'WebView',只是扩展了与运行Cordova/PhoneGap应用相关的其他行为。 – CommonsWare

+0

是否有可能使用NDK构建新版本的webkit并将其移植到android,然后我在java中编写自己的webview类并使用jni进行连接?我注意到Google已经构建了WebKit Chromium Port,但它只支持Android 4.0或更高版本。 –

相关问题