安卓系统源码编译系列(六)——单独编译内置浏览器WebView教程

本文主要对从安卓系统源码中抽取出WebView相关源码进行单独编译的流程进行说明。

编译流程说明

由于WebView包含两个部分,一部分是上层的Java代码,包括若干Java类,用于对外提供接口;另一部分是下层的C++代码,包括两个so库(libwebcore.so和libchromium_net.so),用于网页的解析和渲染。两个部分之间通过JNI进行交互。

因此,编译WebView也需要分成两部分,一部分是编译Java代码,另一部分是将C++代码编译成so库。另外,由于WebView的Java代码中会使用到很多系统的隐藏API,所以我们还需要编译安卓系统,并从中获取几个jar包。

编译Java代码

首先,我们需要下载并编译任意一个版本的安卓系统源码,具体步骤可以参见《下载安卓系统源码教程》和《安卓系统源码编译教程》。

完成编译后,我们可以使用Eclipse(不能使用Intellij IDEA,因为之后添加library的时候无法设置为system library)新建一个Android工程,在src目录下创建一个android.webkit2的包。然后将源码目录下的frameworks/base/core/java/android/webkit目录下的所有文件拷贝到新创建的包中。

由于其中有一个类是编译之后生成的,所以我们还需要从编译完的源码目录out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/src/core/java/android/webkit中将EventLogTags.java类也拷贝到新建的包中。

接下来,我们需要在工程中加入包含系统隐藏API的jar包,将以下三个jar包重命名(名称随意)后拷贝到工程的libs目录下:

out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar
out/target/common/obj/JAVA_LIBRARIES/core_intermediates/classes.jar
out/target/common/obj/JAVA_LIBRARIES/bouncycastle_intermediates/classes.jar

在Eclipse中打开工程的Properties->Java Build Path->Libraries->Add Library->User Library,点击下一步,选择User Libraries...,选择New,随便输入一个名字,将System library选上(重要),选择OK。选中刚刚新建的User Library,选择Add JARs,

  • 12
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值