前言:本文以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_AsUTF8UnsafeFileProxyTest.SetTimesFileUtilProxyTest.TouchFileUtilTest.ChangeDirectoryPermissionsAndEnumerateFileUtilTest.ChangeFilePermissionsAndReadFileUtilTest.ChangeFilePermissionsAndWriteFileUtilTest.GetShmemTempDirTestJSONFileValueSerializerTest.NoWhitespaceJSONFileValueSerializerTest.RoundtripJSONFileValueSerializerTest.RoundtripNestedJSONReaderTest.ReadFromFileJsonPrefStoreTest.AlternateFileJsonPrefStoreTest.AlternateFileDNEJsonPrefStoreTest.AlternateFileIgnoredWhenMainFileExistsJsonPrefStoreTest.AsyncNonExistingFileJsonPrefStoreTest.BasicJsonPrefStoreTest.BasicAsyncJsonPrefStoreTest.BasicAsyncWithAlternateFileJsonPrefStoreTest.InvalidFileJsonPrefStoreTest.NonExistentFileJsonPrefStoreTest.NonExistentFileAndAlternateFileJsonPrefStoreTest.PreserveEmptyValuesJsonPrefStoreTest.ReadAsyncWithInterceptorJsonPrefStoreTest.ReadWithInterceptorJsonPrefStoreTest.RemoveClearsEmptyParentOutOfMemoryDeathTest.ViaSharedLibrariesPathServiceTest.GetProcessUtilTest.LaunchProcessRTLTest.WrapPathWithLTRFormattingReadOnlyFileUtilTest.ContentsEqualReadOnlyFileUtilTest.TextContentsEqualSharedMemoryProcessTest.TasksSharedMemoryTest.AnonymousExecutableSysStrings.SysNativeMBAndWideSysStrings.SysNativeMBToWideSysStrings.SysWideToNativeMBSystemMetrics2Test.GetSystemMemoryInfo

5 尝试运行浏览器

【基础】嵌入式浏览器移植基本要素相关推荐

  1. 基于Linux的嵌入式浏览器的实现

    随着信息技术与网络技术的快速发展,以及人们日常生活对网络信息的需求的不断增加.掌上电脑.上网本.手机.导航仪器.智能电视.智能家电等对嵌入式系统提出了更多更高的要求.在嵌入式系统中利用嵌入式浏览器获取 ...

  2. 嵌入式系统移植三部曲 李炎朔

    嵌入式系统移植三部曲                             李炎朔 09 机应一班 学号 0906041053 三部曲< bootloader 的移植>< linu ...

  3. 零基础嵌入式Linux开发工程师培训

    零基础嵌入式Linux开发工程师高端培训(ARM实战.系统移植.驱动开发.网络电子书开发) 适合人群:初级 课时数量:336课时 用到技术:ARM实战.系统移植.驱动开发 涉及项目:网络电子书开发.案 ...

  4. 基于ARM的嵌入式Linux移植真实体验(1)――基本概念

    基于 ARM 的嵌入式 Linux 移植真实体验( 1 ) ――基本概念 宋宝华   [email]21cnbao@21cn.com[/email] 出处:dev.yesky.com 1. 引言 AR ...

  5. 【Unity3D插件】Embedded Browser嵌入式浏览器插件使用教程

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦. 一.前言 ...

  6. 基于linux嵌入式浏览,基于Linux的嵌入式浏览器的实现

    摘要: 在嵌入式产品中利用嵌入式浏览器获得网络信息是必不可少的,所以嵌入式浏览器技术成为技术热点之一,发展是必然趋势.嵌入式浏览器具有速度快,实时性强,可移植性高,体积小和资源消耗低等特点,更有利于人 ...

  7. 《全面掌握Linux C语言嵌入式系统移植教程》学习笔记(Liunx速查简明)

    全面掌握Linux C语言嵌入式系统移植教程学习笔记(Liunx速查简明) 笔记前言: P3: shell命令简明 P4: vi /vim编辑器入门 P5:vi /vim编辑器扩展 P8: gcc编译 ...

  8. 嵌入式linux系统移植的四大步骤_嵌入式系统移植步骤

    在嵌入式系统移植中重要的一部分是操作系统的移植,与其它操作系统相比,Linux大的特点:它是一款遵循GPL的操作系统,我们可以自由地使用.修改.和扩展它.正是由于这一特色,嵌入式系统移植过程中Linu ...

  9. 计算机 运行新ie 命令,(新)计算机应用基础IE浏览器设置学习笔记——精品.doc

    计算机应用基础IE浏览器设置学习笔记 一.IE浏览器设置简介 Internet Explorer浏览器(简称IE浏览器)是能够接收用户的请求信息,并到相应网站获取网页内容的专用软件.IE浏览器的使用和 ...

最新文章

  1. openldap 2.3 安装配置详解
  2. Func与Action
  3. Virtual ListView效率对比
  4. SAP HR模块用的表
  5. [蓝桥杯]PREV-19.历届试题_九宫重排
  6. 系统分析与设计结对项目———Wordcount
  7. 黑色幽默:“新知青”电影《走着瞧》首映
  8. 简单介绍Java中Comparable和Comparator
  9. 【转】The password supplied with the username Domain\UserName was not correct. AD密码定期更换
  10. 【笔记】通过 js——实现 各种跨域
  11. 小程序·云服务的系统架构和运维实现
  12. 2022-03-29 软件外包流程
  13. JAVA8内存最多设置多少,堆内存居高不下,JDK8自适应作怪
  14. MyBatis(八)------MyBatis动态SQL
  15. 优秀产品经理都是这样写周报的(顺便分享个周报模板)
  16. 板绘新手入门sai绘画软件有哪些技巧?
  17. 谷歌学术高级搜索技巧
  18. 五光十色变色龙的制作
  19. JAVA-受保护的访问修饰符-protected(在同一包和不同包中的使用)
  20. Scan Context回环检测解读和使用

热门文章

  1. 一入前端深似海,从此红尘是路人系列第七弹之孤独的剑客-单例模式
  2. java 课后习题 找零钱
  3. 【记录】利用jar包制作docker镜像
  4. C#LeetCode刷题-双指针
  5. chrome稍后阅读功能reading list
  6. mysql数据库information_schema库中的表说明
  7. 华为面试分配_什么时候不做面试分配
  8. 不要束缚:为什么我们会错过GitHub条纹
  9. shell 两时间之差
  10. Javascript——入门基础