nerror="javascript:errorimg.call(this);" class="" width="" height="" style="" id="" >
大家一提到嵌入式就是linux、講到android就認為是java,以為android已經(jīng)不是linux了,各種應(yīng)用都是android API開發(fā)的,而android API基本上是java的。大家這么認為也無可厚非。
其實android是架在linux 上的,無linux android那就是空中樓閣。我們簡單理解這兩個系統(tǒng)都有那些組成
嵌入式linux:大部分人認為是這樣的uboot + kernel + file system + UI(QT、DirectFB)
nerror="javascript:errorimg.call(this);" class="" width="" height="" style="" id="" >
嵌入式android源碼架構(gòu):uboot + kernel + android(包含文件系統(tǒng),虛擬機,UI)
nerror="javascript:errorimg.call(this);" class="" width="" height="" style="" id="" >
當然兩者的linux 內(nèi)核因為上層UI的不同會稍有差別,不過還是非常接近的,做過linux的人可以無縫切換到android底層開發(fā),所以大家說的學習android系統(tǒng),其實最重要的就是學習linux驅(qū)動,再加一下android下的專門的HAL,JNI,java等等。
底層開發(fā)(引導(dǎo)+內(nèi)核)基本上是相同,更是相通的。那為什么android系統(tǒng)一經(jīng)推出逐步取代嵌入式linux呢? 同樣是開源,差別就這么大呢? 我們就重以下幾點來聊聊。
一、界面
用戶看到的東西,在程序開發(fā)它叫UI,嵌入式linux,都搞了這么些年UI是它的硬傷,你可以用QT我可以用DirectFB或者OpenGL沒有統(tǒng)一,UI體驗好壞直接影響用戶的直觀感受。
二、開發(fā)方式
嵌入式linux基本都是芯片廠商給一系統(tǒng)和硬件驅(qū)動代碼整合在給你移植一個GUI,你想用什么東西,對不起請google,找開源軟件自己移植,沒有統(tǒng)一開發(fā)模式。這樣就會導(dǎo)致我們糾結(jié)在用這個GUI或這其它效率更高,開發(fā)難度可想而知,我專門負責UI交互的不得不啥都得懂,linux系統(tǒng)我要會用,C/C++我要會寫,剩下的我UI還的學習特定的API。能給我去真正搞用戶體驗功能又有多少時間?android以上這些都不要要的啦!android系統(tǒng)都干好了這些事,你只要懂java,android API分分鐘就懂了的。
nerror="javascript:errorimg.call(this);" class="" width="" height="" style="" id="" >
那我們到底該選擇嵌入式linux還是android呢?其實從市場上已經(jīng)得到了結(jié)果,現(xiàn)在都說自己的東西是智能產(chǎn)品,還是原先那套東西不過用上的android系統(tǒng),能運行各種app,它就是智能產(chǎn)品了,你們覺得呢?
如果內(nèi)心還有編程的夢想,或者學習過程中遇到的困惑,問問編程到底是咋回事,想深入學習編程,獲取編程里面那點事,可以關(guān)注老碼農(nóng)的微信公眾號:程序員互動聯(lián)盟(coder_online),里面集結(jié)了眾多的自學編程以及編程高手,問下如何自學。
本文屬原創(chuàng),禁止轉(zhuǎn)載,謝謝!