在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Android是基于Linux內核的操作系統淺談開發技巧

電子設計 ? 來源:互聯網 ? 作者:佚名 ? 2018-08-29 09:28 ? 次閱讀

Android一詞的本義指“機器人”,同時也是Google于2007年11月5日宣布的基于Linux平臺的開源手機操作系統的名稱,該平臺由操作系統、中間件、用戶界面和應用軟件組成,號稱是首個為移動終端打造的真正開放和完整的移動軟件。目前,最新版本為Android 2.4 Gingerbread和Android 3.0 Honeycomb。

Android是基于Linux內核的操作系統,是Google公司在2007年11月5日公布的手機操作系統。早期由原名為“Android”的公司開發,谷歌在2005年收購“Android.Inc”后,繼續進行對Android系統開發運營,它采用了軟件堆層(software stack,又名軟件疊層)的架構,主要分為三部分。底層Linux內核只提供基本功能,其他的應用軟件則由各公司自行開發,部分程序以Java編寫。2011年初數據顯示,僅正式上市兩年的操作系統Android已經超越稱霸十年的塞班系統,使之躍居全球最受歡迎的智能手機平臺。現在,Android系統不但應用于智能手機,也在平板電腦市場急速擴張。采用Android系統主要廠商包括***的HTC,(第一臺谷歌的手機G1由HTC生產代工)美國摩托羅拉,SE等,另外還有中國大陸廠商如:華為、中興、聯想等。

Android以Java為編程語言,從接口到功能,都有層出不窮的變化,其中Activity等同于J2ME的MIDlet,一個 Activity 類(class)負責創建視窗(window),一個活動中的Activity就是在 foreground(前景)模式,背景運行的程序叫做Service。兩者之間通過由ServiceConnection和AIDL連結,達到復數程序同時運行的效果。如果運行中的 Activity 全部畫面被其他 Activity 取代時,該 Activity 便被停止(stopped),甚至被系統清除(kill)。

View等同于J2ME的Displayable,程序人員可以通過 View 類與“XML layout”檔將UI放置在視窗上,Android 1.5的版本可以利用 View 打造出所謂的 Widgets,其實Widget只是View的一種,所以可以使用xml來設計layout,HTC的Android Hero手機即含有大量的widget。至于ViewGroup 是各種layout 的基礎抽象類(abstract class),ViewGroup之內還可以有ViewGroup。View的構造函數不需要再Activity中調用,但是Displayable的是必須的,在Activity 中,要通過findViewById()來從XML 中取得View,Android的View類的顯示很大程度上是從XML中讀取的。View 與事件(event)息息相關,兩者之間通過Listener 結合在一起,每一個View都可以注冊一個event listener,例如:當View要處理用戶觸碰(touch)的事件時,就要向Android框架注冊View.OnClickListener。另外還有Image等同于J2ME的BitMap。

隨著科技的快速演進,現代人對移動通信、無線上網與多媒體娛樂的需求更甚以往,所謂的智能手機(Smart Phone)便成了炙手可熱的個人消費電子產品之一,從Apple不斷推出iPhone企圖顛覆消費者對手機的想象、RIM推出主打商務功能的黑莓機、Google的Android系統讓眾家手機廠商爭食大餅,到微軟屢敗屢戰的從WinMo一路開發到WP7,智能手機的這塊戰場可說是打的如火如荼。然而在這些眾家競爭者中,Android可說是目前行情看俏的一套操作系統,以國際市調研究機構Gartner最新出爐2010年第三季的調查為例,采用Android操作系統的智能手機在過去一年以來成長幅度最高,光是市占率便是前一年同期的七倍之多,銷售量更是達到14倍的成長,同時也一舉從市占率排名的第六名竄升到第二名。

*Gartner 2010 Q3 Worldwide Smartphone Sales

  

Android在過去一直扮演后起之秀的角色,切入智能手機的速度似乎慢了蘋果的iOS一步,但與Apple相同的是,它也成功的將其應用從手機移植到了平板電腦(Tablet PC)上。Android開放源代碼(Open Source)的特性,能輕易地提高廠商對自家產品的接受度,更不用提背后Google的強力撐腰能帶來多大的經濟效益。目前可見包括手機廠商HTC、摩托羅拉(Motorola)、三星(SAMSUNG),以及電腦大廠惠普(HP)與戴爾(Dell)等皆投向Android的懷抱,Android被廣泛應用可說是勢在必行。

盡管Android系統的普及看似指日可待,但在實際的產品應用上,也有其可能產生的問題風險。Android作為一個開放式的操作系統,是Google提供廠商的操作系統參考架構(reference design),廠商能有充足的發揮空間,以Android為基礎向上開發設計自家產品,但也因為這樣的開放性與自由性,讓廠商在軟硬件結合的這個環節必須下更大的功夫,像是如何挑選合適的硬件包括基頻處理器、通信芯片、觸控感應芯片、天線與存儲器模組等,以及如何調整出最適當的軟件設定等,更重要的是如何將軟硬件整合,開發出差異化的產品。這中間所有的細節都會對產品最終樣貌產生莫大的影響,像是其功能的完整度、使用接口的設計、效能表現(例如觸控滑動畫面、開啟程序所需時間)、品質可靠度、甚至是后續的固件升級動作等等。

一、解構Android基本技術架構

首先我們先來看到Android的基本技術架構,Android是以Linux為核心,并采用軟件堆迭(software stack)的架構延伸發展的一套軟件平臺與操作系統。根據下圖可以看出,其基本架構分為五層:

*Android Structure by Google

·Linux核心(Linux Kernel):以Linux開發提供最底層的核心系統服務,包括安全性(Security)、存儲器管理(Memory Management)、進程管理(Process Management)、網路堆迭(Network Stack)與驅動程序模型(Driver Model)。

·Android執行環境(Android Runtime):透過Core Libraries(核心函式庫)以及暫存器型態的Dalvik Virtual Machine(Dalvik虛擬機器)來執行程序。

·系統函式庫(Library):使用C/C++函式庫的系統組件以供呼叫使用,開發者可透過上層的應用程序框架來運用這些功能,這也是主要Android設備的效能關鍵。

·應用程序框架(Application Framework):被設計來簡化組件的再運用,開發者能完整存取使用與核心應用程序(Core Application)相同的API,應用程序可以發布功能并為其它應用程序所使用(需受限于其安全性限制),開發者也可運用同樣的機制來新增與置換組件。

·應用程序(Application):所有Android應用程序皆是以Java程序語言編寫,原始就會包含像是Email、簡訊、日歷、地圖、瀏覽器、聯絡人等其它應用程序,讓用戶一開始就擁有這些基本功能,開發者也可在此客制其使用接口。

廠商越想要設計出與原始設定不同且增強效能的產品,便越需要對這五層架構進行修改。譬如像是多任務處理能力(multi-tasking),便可能需要修改包括Linux核心與應用程序框架的設計;而應用程序的開發者更可能需要針對應用程序與框架進行調整。由此可見,對Android設備而言,任何一個功能的置入或是對硬件設定的細微更動,都需要對Android系統進行從下到上的調整以達到最優化的效能,而這正是最為困難與需要驗證的一環。

二、Android設備軟硬件整合的五大技術環節

如前所述,對眾家開發廠商而言最大的挑戰其實在于,如何將自己理想的產品訴求,與Android系統巧妙結合成一個功能完整并使用流暢順手的產品,這其中牽涉了不同技術間的整合與運用。在此我們便根據其多年的測試與研究經驗,歸納出五大Android相關設備在技術整合上的重要環節:

1、Linux驅動程序的導入

由于Android是根源于Linux所延伸出來的操作系統,因此各種關鍵功能的驅動程序也必須要能順利的寫入其中,舉凡像是字符設備、存儲器的空間配置、中斷處理、網路通信、螢幕顯示或是連接接口像是USB與PCI的驅動程序,這些可能是自行撰寫、或是來自不同組件廠商的驅動程序,都必須要能被導入到Android系統,并維持良好穩定的效能表現。

2、系統單芯片的優化處理

對廠商而言,開發一款Android設備,不僅僅只是將所有零組件組合成為一個產品那么容易,最大的學問便在于將系統單芯片(System-on-a-chip,SoC)、各種新技術和Android系統進行整合,SoC涉及像是Dalvik Virtual Machine、OpenGL、V8、Webkit Engine等上層的演算,與Android間的結合便必須透過不斷的嘗試與驗證,才能研發出既符合成本效益、又有良好效能的優化產品。目前市面上有些SoC廠商已針對Android系統的特性,提供整合過的SoC平臺,將藍牙、相機或上網等常用功能模組預先寫入,減少終端成品廠商費力整合開發的時間,但對廠商而言,這樣的預先整合是否適合自身產品,以及是否需要再作更細致的修改,則又是更困難的課題。

3、新技術的移植

隨著技術的快速發展,更多新興的技術規格也逐漸應用在手機等手持設備上,以手機為例,已經從過去以撥打電話為主要功能,轉變為擁有各種多樣化用途的產品。像是觸控技術讓消費者可以透過手指的滑動傳送指令甚至是具備多點觸控的支持、Wi-Fi模組提供隨時無線上網的可能、通用圖形處理器(General-purpose computing on graphics processing units,GPGPU)則能以并行方式透過圖形處理器來執行通用計算任務、Android 2.3版所支持的NFC近場通信技術,以及更高階的相機模組等等,背后都有各自的驅動程序與軟件技術,也必須要與Android系統相結合使用。

4、效能表現的穩定

盡管上述這些技術不斷推陳出新,但也都不能因此而犧牲設備原本的效能表現,讓處理速度因此變慢或造成使用上不順暢的狀況。除了采用更好的硬件設備外(例如現今處理器的時脈已邁向1GHz),更需要操作系統的支持,像是如何在多任務運作的狀況下維持程序執行速度以及系統滿載的處理等等,都必須要透過軟件面的奧援。也就是說,一臺Android設備除了要能將各種功能與技術收納起來、將軟硬件整合外,更必須同時注重它在效能上能否維持應有的水準,以提供使用者在操作上流暢易上手的感受。

5、低電耗設計

Android的設計概念主要是應用于便攜式設備上,目前市面上可見的像是平板電腦與智能手機等。對這類產品而言,電池續航力的好壞可說是影響消費者使用感受的關鍵之一,試想,若是一臺智能手機的待機時間過短,而使用者在外時又無法隨時充電使用,不能即時的連網查詢資料或執行其他手機功能,這樣的產品便失去了它作為便攜式移動設備應有的便利性。追根究底,良好的待機時間除了需仰賴高容量的電池以提供充足電力之外,另一個重點就是設備本身在被使用執行時能否作到低電耗設計。Android設備讓使用者能透過各種多樣化的應用程序,來達到各種不同的使用目的,舉凡像是單純上網、觀看新聞、郵件推播或是游戲等等,各種不同功能的程序都能透過自由下載使用,也由于其多任務處理與讓程序背景執行的能力,更讓降低耗電量成為開發者不可輕忽的一項課題。

持續驗證修正 找出最佳Android整合方案

正如前面我們不斷提到的,對Android設備而言,最困難的開發挑戰便在于如何完美地“整合”軟件與硬件,以開發出一項功能完整又同時注重使用者感受的產品。從對Android本身程序碼的修改、相關硬件的選擇,到驅動程序的結合運用以及能否維持穩定的效能表現等,在在都必須要透過仔細的研究與不斷的嘗試,才能找出問題的根源并解決、更進而找出最合適的整合方案。

像是Android源代碼中對音源的重新取樣(Re-sampling)設計,就會導致設備在讀取48K音源時重新取樣成44K,而造成諧波失真的現象影響音質,這便是廠商不會注意到而未去修改的問題;另外像是天線位置的設計,也可能直接的影響到收訊能力的好壞;而不良的電源管理設計,也極有可能影響到設備在持續使用狀態中的耗電情形。百佳泰在此僅以專業測試驗證實驗室的角度,希冀以宏觀的方式,針對Android設備的開發設計提供可用的參考,近期內我們也將會提供實際的相關測試數據報告,并進一步指陳這些可能的問題風險,以期讓更多廠商與消費者都能注意到品質驗證的重要性,是從產品設計的根源就要開始層層把關。

Android 是運行于 Linux kernel之上,但并不是GNU/Linux。因為在一般GNU/Linux 里支持的功能,Android 大都沒有支持,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以bionic 取代Glibc、以Skia 取代Cairo、再以opencore 取代FFmpeg 等等。Android 為了達到商業應用,必須移除被GNU GPL授權證所約束的部份,例如Android將驅動程序移到 userspace,使得Linux driver 與 Linux kernel徹底分開。bionic/libc/kernel/ 并非標準的kernel header files。Android 的 kernel header 是利用工具由 Linux kernel header 所產生的,這樣做是為了保留常數、數據結構與宏。 目前Android 的 Linux kernel控制包括安全(Security),存儲器管理(Memory Management),程序管理(Process Management),網絡堆棧(Network Stack),驅動程序模型(Driver Model)等。下載Android源碼之前,先要安裝其構建工具 Repo來初始化源碼。Repo 是 Android 用來輔助Git工作的一個工具。



:

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Android
    +關注

    關注

    12

    文章

    3945

    瀏覽量

    127956
  • Google
    +關注

    關注

    5

    文章

    1772

    瀏覽量

    57811
  • Linux
    +關注

    關注

    87

    文章

    11347

    瀏覽量

    210431
收藏 人收藏

    評論

    相關推薦

    Android 操作系統你必須了解的知識

    Android 操作系統介紹Android是Google于2007年11月05日宣布的基于Linux平臺的開源手機操作系統的名稱,該平臺由
    發表于 11-25 16:16

    Android 操作系統-新手必知

    Android 操作系統介紹Android是Google于2007年11月05日宣布的基于Linux平臺的開源手機操作系統的名稱,該平臺由
    發表于 11-18 11:23

    Android 操作系統你必須了解的知識

    操作系統、中間件、用戶界面和應用軟件組成。它采用軟件堆層(Software Stack,又名軟件疊層)的架構,主要分為三部分。底層以Linux內核工作為基礎,由C語言開發,只提供基本功
    發表于 09-09 16:45

    淺談AndroidLinux系統之間的差異

    應用開發提供統一的服務。2.系統框架的差異Linux系統Android表面上為兩個不同的操作系統
    發表于 07-05 06:06

    Android操作系統的分層架構是怎么樣的

    我曉得Android 操作系統是一個開源的,還是有很多不懂,在網上查了下,看到Android一詞的本義指“機器人”,最初的Android主要支持手機,后來經過
    發表于 03-05 06:45

    Android嵌入式智能操作系統簡析

    一:首先你必須了解ARM平臺 Android 移植與驅動核心開發,當然也可以是X86和其他的平臺,不過其他平臺的Android智能終端開發并不是很多。
    發表于 11-05 09:21

    為何將Linux操作系統劃分為用戶和內核

    _C:使用Linux操作系統提供的功能2、Linux操作系統的組成:用戶和內核空間——為何將Linux
    發表于 12-15 08:35

    Linux操作系統

    linux的教學內容1 、Linux概述 2 、Linux操作系統安裝3、 Linux內核 4
    發表于 04-10 16:54 ?0次下載
    <b class='flag-5'>Linux</b><b class='flag-5'>操作系統</b>

    谷歌Android設備內核引入主線Linux內核難嗎?

    Android是基于Linux內核操作系統,但是,運行在Android設備上的內核其實與Goo
    的頭像 發表于 11-22 10:41 ?3099次閱讀
    谷歌<b class='flag-5'>Android</b>設備<b class='flag-5'>內核</b>引入主線<b class='flag-5'>Linux</b><b class='flag-5'>內核</b>難嗎?

    Linux操作系統與Windows操作系統的五大區別

    Linux操作系統和Windows操作系統身為三大操作系統巨頭里面的兩大巨頭,他們有什么區別呢?首先,先要聲明一點,所有以Linux
    發表于 07-10 16:28 ?7987次閱讀

    Android是基于Linux的開源操作系統

    Android是基于Linux的開源操作系統,主要用于嵌入式設備,如智能手機、平板電腦、智能電視、車載設備等。它由谷歌公司開發,與iOS、Windows一起作為目前嵌入式設備的三大主要
    發表于 09-10 16:35 ?4375次閱讀

    Google Android操作系統內核編譯圖文教程

    和標準的 Linux開發流程一樣, Android平臺開發的一個很重要的基礎工作就是對其內核的編譯和移植。本文結合
    發表于 03-11 11:35 ?10次下載

    輕松高效地掌握Linux操作系統背后的原理

    如今的軟件開發行業,服務器端市場基本被 Linux 系統占領了。移動端中的 Android 系統是基于
    的頭像 發表于 07-05 09:49 ?1761次閱讀

    Linux操作系統還是內核

    內核是每個操作系統的中心。這不僅僅是 Linux 的事情。Windows 和 macOS 也有內核
    發表于 03-15 10:05 ?1165次閱讀

    基于嵌入式Linux內核Android操作系統智能移動終端

    電子發燒友網站提供《基于嵌入式Linux內核Android操作系統智能移動終端.pdf》資料免費下載
    發表于 11-06 10:07 ?0次下載
    基于嵌入式<b class='flag-5'>Linux</b><b class='flag-5'>內核</b>的<b class='flag-5'>Android</b><b class='flag-5'>操作系統</b>智能移動終端
    主站蜘蛛池模板: 性色成人网 | 深爱婷婷激情网 | 福利片在线观看免费高清 | 亚洲人成伊人成综合网久久 | 亚洲婷婷综合色高清在线 | 美女一级毛片毛片在线播放 | 久久婷婷一区二区三区 | 曰本三级香港三级人妇99视频 | 女人特黄大aaaaaa大片 | 天天碰夜夜操 | 亚洲精品午夜久久aaa级久久久 | 亚洲免费一 | 亚洲午夜小视频 | 欧美精品videofree720p | 日本在线观看永久免费网站 | 五月综合色 | 国产乱码精品一区二区三 | 天天久久综合网站 | 精品videosex性欧美 | 天天做天天爱夜夜想毛片 | 久久久久久国产精品mv | 视频一区在线观看 | yellow中文字幕久久网 | 国产一级一片免费播放视频 | 四虎永久精品免费网址大全 | 天天操国产 | 久久久婷婷 | 亚洲4区| 黄视频网站在线观看 | 尻美女视频| 69国产视频 | 色偷偷97| 欧美又粗又硬又大久久久 | 美日韩免费视频 | 久久狠色噜噜狠狠狠狠97 | 国产婷婷高清在线观看免费 | 欧美地区一二三区 | 最近在线观看免费完整视频 | 在线干| 国产亚洲一区二区三区在线 | 亚洲91在线视频 |