点击屏幕中间,右上角【搜索】,好文一览无余!

要保护手机厂商的软件代码的利益,只需把核心的驱动及其应用等代码保密即可。如果你是硬件厂商,希望你的硬件能在 Linux kernel 下运作,那么就必须要有驱动程序。如果驱动程序的程序代码公开,等于硬件规格也公开的差不多了。Android 的重点就是商业应用,所以Google采用了一些手法来绕过这问题。他们把驱动程序移到 "userspace",也就是说,把驱动程序变成在 Linux kernel 上头跑,而不是一起跑的东西,这样就可以避过GPL。然后,在 kernel 这边开个小门,让本来不能直接控制到硬件的 "userspace" 程序也可以碰得到,这样只要把"开个小门"的程序代码公布就行啦。

说得直白一点,就是Google玩了一个花招,在linux kernel和应用程序之间,自己做了一个中间层,这样就既不违反GPL许可,又能不让外界看到厂商的硬件驱动和应用程序的源码。

里面的关键在于,Kernel和Android的许可证不一样,前者是GPL许可证,后者是Apache Software License(简称ASL)许可证。GPL许可证规定,对源码的任何修改都必须开源,所以Android开源了,因为它修改了Kernel。而ASL许可证规定,可以随意使用源码,不必开源,所以建筑在Android之上的硬件驱动和应用程序,都可以保持封闭。为了得到更多厂商的支持,Google有意选择了这样做,并且特意修改Kernel,使得原本应该包括在kernel中的某些功能,都被转移到了userspace之中,因此得以避开开源。

鉴于此,前段时间,Linux Kernel的维护者Greg Kroah-Hartman宣布,将Android 代码从 Linux kernel 代码库中删除。这意味着,Linux Kernel的开发小组不认可Android的贡献。

虽然如此,但是google的这种做法,的确给andriod的发展带来了很大的好处。然后,google的这种做法,除了底层,andriod的应用程序方面,基本都是JAVA语言编写的。说到JAVA,我在之前的帖子也提过,这是一种解释x的语言。用通俗点的话来说,如果用C或者C++这些语言编码并编译后在手机上运行,就等同于中国人直接用英文和美国人交流,不存在任何障碍,美国人理解起来就很快;而采用JAVA语言,则相当于你用中文和美国人交流,中间还得请个翻译官,你一边说中文,翻译官得一边翻译成英文。这样其速度自然就慢了下来了。所以andriod采用JAVA作为其应用程序的编程语言,虽然给程序的通用x及其移植x带来了好处,但是带来了一个问题,就是速度问题。不管JAVA的fans们如何鼓吹其好处,但在我看来,其速度问题是无论如何都不能和原生态的用C编译的程序的速度快的。拿凯立德导航软件来说,在andriod平台上运行凯立德,我个人_gan觉其速度的确远不如WM和SB系统的智能机。

google毕竟是google,估计也看到了这一点,所以对andriod系统也在不断完善。好像是在去年,Google Android发布了NDK(Native Development Kit)。这使得某种程度上用C/C++开发andriod程序方便了很多。关于这个NDK,还得花多点时间才能讲述清楚,改天再继续吧。

关于andriod系统的7寸上网本,我后面的帖子会进一步介绍一下。先继续andriod。

Android NDK是什么,NDK:Native Develpment Kit.也就是原生态开发包的意思。

本章未完...

=== 华丽的分割线 ===

注册&登录后再继续登录后解锁更多内容!

研发工程师为你详解山寨机、品牌机和水货机》小说在线阅读_第57章_作品来自网络或网友上传_文坊阁只为作者by大佬七_的作品进行宣传。

搜索

研发工程师为你详解山寨机、品牌机和水货机第57章

书籍
返回细体
20
返回【点击阅读】模式下,点击屏幕底部会自动切换进度条!
  • 点击阅读
  • 滑动阅读