【基础】嵌入式浏览器移植基本要素

前言:本文以chrome为例介绍了浏览器移植的基本步骤和要素。


1 浏览器的内核是什么

我们知道chrome的浏览器内核是webkit,那么要做浏览器移植第一步就是要研究webkit的基本构架。


2 浏览器的编译

2.1 硬件支持的 浏览器的编译工具链

浏览器的编译器一般都是一要依赖硬件来决定。板子的编译器就是浏览器的编译器。只不过,要注意的是浏览器有些功能的定义和编译器已经板子的硬件支持有关。
举例,ARM cotext A9的多媒体功能在芯片级别上是可选的,那么相对的编译选项:NEON在做编译的时候就不能使能,否则会报指令错误。 

2.2 浏览器需要的开源库有哪些

浏览器相关的开源库有libdierectfb,libpango,libcairo,libfontconfig,libfreetype,libskia等,大多数都是和浏览器的渲览,graphic引擎,font字库和管理等等。

这些开源库有些是有license的要求的,根据浏览器的应用场景去选择你需要的开源库。

3 了解浏览器运行的基本环境配置

浏览器的基本环境设定,包括浏览器需要的工作目录,配置目录。
比如 cookie的目录,lib的加载目录,jsion的配置目录,用户的配置目录,应用的装载目录。

4 了解浏览器自带的测试案例

浏览器的运行之前,需要运行浏览器给到测试代码,以确定浏览器运行的环境条件,配置条件等是否符合。
通过编译
Chrome的测试案例,base_unittests
make tg=base_unittests
可以生成一个基础测试文件,运行后,回生成对应的测试报告,然后,按照测试报告逐个去解决:

Value of: from_native.value()
  Actual: "\xEF\xBC\xA1\xEF\xBC\xA2\xEF\xBC\xA3.txt"
Expected: from_utf8.value()
Which is: ""
[  FAILED  ] FilePathTest.FromUTF8Unsafe_And_AsUTF8Unsafe (3 ms)
[----------] 1 test from FilePathTest (3 ms total)

[----------] Global test environment tear-down
[==========] 1 test from 1 test case ran. (5 ms total)
[  PASSED  ] 0 tests.
[  FAILED  ] 1 test, listed below:
[  FAILED  ] FilePathTest.FromUTF8Unsafe_And_AsUTF8Unsafe
谷歌浏览器自带测试程序运行举例如下,
[1622/1622] FilePathTest.FromUTF8Unsafe_And_AsUTF8Unsafe (3 ms)
37 tests failed:
    FilePathTest.FromUTF8Unsafe_And_AsUTF8Unsafe
    FileProxyTest.SetTimes
    FileUtilProxyTest.Touch
    FileUtilTest.ChangeDirectoryPermissionsAndEnumerate
    FileUtilTest.ChangeFilePermissionsAndRead
    FileUtilTest.ChangeFilePermissionsAndWrite
    FileUtilTest.GetShmemTempDirTest
    JSONFileValueSerializerTest.NoWhitespace
    JSONFileValueSerializerTest.Roundtrip
    JSONFileValueSerializerTest.RoundtripNested
    JSONReaderTest.ReadFromFile
    JsonPrefStoreTest.AlternateFile
    JsonPrefStoreTest.AlternateFileDNE
    JsonPrefStoreTest.AlternateFileIgnoredWhenMainFileExists
    JsonPrefStoreTest.AsyncNonExistingFile
    JsonPrefStoreTest.Basic
    JsonPrefStoreTest.BasicAsync
    JsonPrefStoreTest.BasicAsyncWithAlternateFile
    JsonPrefStoreTest.InvalidFile
    JsonPrefStoreTest.NonExistentFile
    JsonPrefStoreTest.NonExistentFileAndAlternateFile
    JsonPrefStoreTest.PreserveEmptyValues
    JsonPrefStoreTest.ReadAsyncWithInterceptor
    JsonPrefStoreTest.ReadWithInterceptor
    JsonPrefStoreTest.RemoveClearsEmptyParent
    OutOfMemoryDeathTest.ViaSharedLibraries
    PathServiceTest.Get
    ProcessUtilTest.LaunchProcess
    RTLTest.WrapPathWithLTRFormatting
    ReadOnlyFileUtilTest.ContentsEqual
    ReadOnlyFileUtilTest.TextContentsEqual
    SharedMemoryProcessTest.Tasks
    SharedMemoryTest.AnonymousExecutable
    SysStrings.SysNativeMBAndWide
    SysStrings.SysNativeMBToWide
    SysStrings.SysWideToNativeMB
    SystemMetrics2Test.GetSystemMemoryInfo

5 尝试运行浏览器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Franklin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值