【发布时间】:2014-11-21 10:45:53
【问题描述】:
我想构建一个与 Google chrome 的 android 版本相似的 UI。如何自己构建 android 版的谷歌浏览器?
【问题讨论】:
标签: android google-chrome android-layout
我想构建一个与 Google chrome 的 android 版本相似的 UI。如何自己构建 android 版的谷歌浏览器?
【问题讨论】:
标签: android google-chrome android-layout
我的建议是查看http://code.google.com/p/chromiumembedded/ 的来源。
它有点像 Chrome 的精简版本,如果您查看它专门使用的文件,无论是包含在其源代码树中的文件,还是包含在整个 Chromium 存储库中的文件。 Chromium 代码库包含大量内容,其中大部分实际上不在浏览器中。有大量从第三方存储库中提取的代码,然后在构建过程中被归结,或者 Chromium 的实现位于树中的其他地方,有很多副项目(虽然很有趣,而且是广泛的很棒的资源东西) 将阻止您实现您的目标,即专门研究浏览器实现以及如何组合在一起。
CEF 很棒,因为您可以看到有人已经完成了将所有内容整合到一起以构建一个项目的过程,该项目的范围非常明确,只限于浏览器视图。你可以很容易地看到哪些部分主要来自 webkit,你可以看到跨界与谷歌的实现在哪里,你可以很容易地看到 V8 是如何被混入其中的。
我确实说“容易”是相对而言的,因为我们仍然在谈论大量的代码。 CEF 将把你放在需求的中心,但这些东西仍然会从树的其余部分中吸收大量的各种东西。在一台具有 12 gigs 内存和 8 个内核的非常好的计算机上编译它需要大约一个小时,并且生成的文件占用大约 6-10 gigs。
至少,不会有任何形式的快速跳入浅水区,在这里或那里零碎地挑选一些东西。浏览器必然是非常复杂的工程,因为它们必须包含如此大量的单独功能,然后将它们组合到共享上下文中。您可能会找到您正在寻找的东西,但您会发现它是可能由数十或数百个文件组成的类库的一部分,而这些文件又依赖于这些库中的一百多个来处理每个任务,所以要真正带走一些东西,你必须花时间去吸收比任何给定信息更多的东西。
编辑:哦也作为你的具体例子。
src 是根http://src.chromium.org/viewvc/chrome/trunk/src
/铬http://src.chromium.org/viewvc/chrome/trunk/src/chrome
“chrome”树主要包含直接实现(虽然很多东西不在那里,甚至大部分,但这是起点)。这与 chromeos 有重叠(chromeos 是一种极端疯狂的铬浏览器)
/chrome/浏览器http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/
让你接近你想去的地方。您开始看到对可以与浏览器匹配的事物的特定引用,例如选项卡和诸如此类的东西(忽略实际浏览器实现本身的巨大大象,这占据了所有这些东西的大部分思维空间)
/chrome/browser/uihttp://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/
将您带到大多数 ui 代码用于浏览器的位置。当有交叉或东西迁移时,它可能会令人困惑,比如根 src 目录中有一个“ui”,它有一些交叉。
最后是http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/omnibox/
其中包含非常少的代码。但这是你发现的很多。这里的代码是在其他地方构建的许多类的实现。对于非 webview gui 组件,您会发现它们大多指向根“ui”和那里的本机小部件,如果我没记错的话,这就是实际事件处理代码的大部分。
【讨论】: