2013-01-07 38 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或更高版本。 –

相關問題