我的目标是在Android中为我的个人应用程序创建WebView的修改版本(称为WebViewCustom)。 WebView是基于WebKit的,所以我需要通过NDK以C编译它。我现在不想参与开源Android项目,所以我需要的是能够编译WebView的原始C源代码并将其用作我的Android应用程序中的自定义控件(SDK和NDK都是可能的环境为应用程序)。我认为没有GIT WebKit所有我不感兴趣的东西是可能的,但我不是Android和WebKit项目的专家。是否可以编辑和编译WebView代码并将其作为新控件放入我的应用程序中?你能告诉我这个任务的主要步骤吗?Android NDK:从源代码编译定制WebView
回答
这当然是可能的。从源头重建android.webkit
的主要困难在于缺乏正确的构建环境。它从未打算在目标平台之外构建,但围绕源代码的几个简单黑客使得它很容易完成。
首先,整个android.webkit
包业务必须重新命名,原因很明显,因为android.webkit.WebView
类在运行时已经可用。例如,在所有frameworks/base/core/java/android/webkit
树上使用sed
。
基本上,你必须抓住完整的源代码树,初始化构建环境(点击此处了解详情http://source.android.com/source/initializing.html),make framework
使内部运行时环境中可用,创建一个新的发展平台,从framework.jar
更换所有类(建筑它的后在out/target/common/obj/JAVA_LIBRARIES/framework_intermediaries/classes.jar
)转换为android.jar
的平台,建立自己的webkit
包对这个包含内部的新平台。
查看https://devmaze.wordpress.com/2011/01/18/using-com-android-internal-part-1-introduction/以获取有关获取可用于开发目的的内部运行时的更多信息。
您还需要core_intermediaries
,bouncycastle_intermediaries
等人为了编译webkit
,这些都是可用的,当被调用make framework
,看看错误构建webkit
包时和grep的out/target/common/obj/JAVA_LIBRARIES/
找出哪些类包含的符号。
然而,这并不是全部,但是,该软件包使用libwebcore.so
,它将本机方法暴露给android.webkit
包;这将不得不将所有原生方法绑定注册到您的新软件包名称(在external/webkit/WebKit/android/jni
中),并重新编译,而无需预先链接(make libwebcore
),并将其作为本机库与您的应用程序一起打包。
一切都满意后,您可以使用自己的包中的WebView
类而不是android.webkit
。如果您打算完全替换android.webview
- 您必须重新编译framework.jar
并将其替换为system/framework/
(需要root权限)。
为你们任何人做过这项工作吗? –
现在的虚假信息。您不必在/ system /中编译framework.jar。正如我看到海豚浏览器使用基于Android的自定义WebView,但它们不会触摸系统。 – Lazy
@Lazy我没有说你必须编译framework.jar才能使用自定义的WebView,如果你打算替换默认的WebView(需要根或自定义分发),你只能这样做。 – soulseekah
- 1. Android NDK:编译HDF5库,源代码
- 2. 为Android编译C++ 11源代码NDK
- 3. 代码不会与Android NDK编译
- 4. 编译android源代码
- 5. Android源代码编译
- 6. 编译android APK从源代码
- 7. 如何从源代码编译Android?
- 8. nginx从源代码编译
- 9. 从代码内编译QT源代码
- 10. 在NDK上编译protobuf-2.4.1代码版本(android-ndk-r8-windows)
- 11. 编译电报源代码 - 面向NDK建设问题
- 12. 如何使用NDK工具编译源代码库?
- 13. 编译本机代码使用NDK
- 14. 在android ndk编译fftw3 ndk
- 15. Android NDK不编译
- 16. Android编译库NDK
- 17. NDK-生成错误而将源代码编译
- 18. 的libcurl采用Android源代码编译
- 19. Android源代码编译问题
- 20. 的Android源代码编译错误
- 21. android NDK可以编译内核模块的源码吗?
- 22. 反编译预编译源代码ASP.NET
- 23. 在ubuntu中编译/编译源代码
- 24. 从字符串编译Java源代码?
- 25. 从源代码编译VIM - 失败libncurses6
- 26. Maven从源代码编译项目
- 27. 从源代码编译gcc时出错
- 28. 编译PHP 5.3.3从源代码到Apache
- 29. 提起从源代码编译
- 30. JetBrains MPS-从源代码编译
您是否设法让此工作?我对这种方法也很感兴趣。 –