Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android NDK:从源代码编译自定义WebView_Android_C_Sdk_Compilation_Webview - Fatal编程技术网

Android NDK:从源代码编译自定义WebView

Android NDK:从源代码编译自定义WebView,android,c,sdk,compilation,webview,Android,C,Sdk,Compilation,Webview,我的目标是在Android中创建一个WebView的修改版本(称为WebViewCustom),供我个人在应用程序中使用。WebView是基于WebKit的,所以我需要用NDK在C中编译它。我现在对参与开源Android项目不感兴趣,所以我需要的只是能够编译WebView的原始C源代码,并将其用作Android应用程序中的自定义控件(SDK和NDK都是应用程序的可能环境)。我认为如果没有我不感兴趣的GitWebKit,这是可能的,但我不是Android和WebKit项目的专家。是否可以编辑和编译

我的目标是在Android中创建一个WebView的修改版本(称为WebViewCustom),供我个人在应用程序中使用。WebView是基于WebKit的,所以我需要用NDK在C中编译它。我现在对参与开源Android项目不感兴趣,所以我需要的只是能够编译WebView的原始C源代码,并将其用作Android应用程序中的自定义控件(SDK和NDK都是应用程序的可能环境)。我认为如果没有我不感兴趣的GitWebKit,这是可能的,但我不是Android和WebKit项目的专家。是否可以编辑和编译WebView代码并将其作为新控件放入我的应用程序中?你能告诉我这项任务的主要步骤吗?

这当然是可能的。从源代码重建android.webkit的主要困难在于缺乏正确的构建环境。它从未打算在目标平台之外构建,但是围绕源代码的几个简单的hack使得它非常容易实现

首先,由于显而易见的原因,整个
android.webkit
包业务必须重新命名,因为
android.webkit.WebView
类在运行时已经可用。例如,在所有
框架/base/core/java/android/webkit
树上使用
sed

基本上,您必须获取完整的源代码树,初始化构建环境(此处有更多信息),
makeframework
使内部运行时环境可用,创建新的开发平台,替换
framework.jar中的所有类(将它构建到平台的
out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar
)中之后,针对这个包含内部构件的新平台构建您自己的
webkit

有关获取可用于开发目的的内部运行时的更多信息,请查看

为了编译
webkit
,您还需要
core\u中介体
bouncycastle\u中介体
和其他中介体,这些都可以在调用
make framework
时使用,在构建
webkit
包时查看错误,并grep
out/target/common/obj/JAVA\u库
to找出哪些类包含符号

然而,这还不是全部,该包使用
libwebcore.so
将本机方法公开给
android.webkit
包;这需要将所有本机方法绑定注册到您的新包名(在
external/webkit/webkit/android/jni
)中,并且无需预链接即可重新编译(
makelibwebcore
)并将应用程序打包为本机库


在一切都满意之后,您将使用自己包中的
WebView
类,而不是
android.webkit
类。如果您打算完全替换
android.WebView
,您将不得不重新编译
framework.jar
并在
system/framework/
中替换它(需要root权限).

你成功地让它工作了吗?我对这种方法也很感兴趣。现在的信息是错误的。你不必在/system/中编译framework.jar。我看到Dolphin浏览器使用的是基于Android的自定义WebView,但它们不涉及系统。@Lazy我没有说你必须编译framework.jar才能使用自定义WebView,你知道吗只有在您打算替换默认WebView(需要根或自定义发行版)时,才必须这样做。