android軟體開發

android軟體開發

Android早期由“Android之父”之稱的Andy Rubin創辦,Google於2005年併購了成立僅22個月的高科技企業Android,展開了簡訊、手機檢索、定位等業務,基於Linux的通用平台進入了開發。

定義

android機器人 android機器人

Android早期由“Android之父”之稱的Andy Rubin創辦,Google於2005年併購了成立僅22個月的高科技企業Android,展開了簡訊、手機檢索、定位等業務,基於Linux的通用平台進入了開發。Google公司在2007年11月5日正式公布這個作業系統,2008年,Patrick Brady於Google I/O演講“Anatomy & Physiology of an Android”,並提出的Android HAL架構圖。HAL以*.so檔的形式存在,可以把Android framework與Linux kernel隔開。Android擁有功能強大的API,出色的文檔,茁壯成長的開發人員社區,而且不需要為開發或發布支付費用。隨著移動設備的日益普及,不管在怎樣的開發背景下,使用Android軟體開發新穎的手機應用程式都是一個令人為之振奮的良機。

特性

應用程式框架支持組件的重用與替換 ·Dalvik虛擬機專門為移動設備做了最佳化 ·內部集成瀏覽器該瀏覽器基於開源的WebKit 引擎 ·最佳化的圖形庫 包括2D和3D圖形庫,

3D圖形庫基於OpenGL ES 1.0 (硬體加速可選) ·#SQLite 用作結構化的數據存儲·多媒體支持 包括常見的音頻、視頻和靜態印象檔案格式(如 MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF) ·GSM電話 (依賴於硬體) ·藍牙Bluetooth, EDGE, 3G, and WiFi (依賴於硬體) ·照相機,GPS,指南針,和加速度計 (依賴於硬體) ·豐富的開發環境 包括設備模擬器,調試工具,記憶體及性能分析圖表,和Eclipse集成開發環境外掛程式。

架構

應用程式

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。

應用程式的運行

在模擬器上運行
仿真是虛擬設備(AVD),我們需要配置來運行我們的Android應用程式。
步驟1、開放的AVD管理
步驟2、新的按鈕,點擊添加新設備,並配置您的設備設定。
步驟3、會有一個結果視窗顯示所有已配置你上一螢幕選擇。
步驟4、按“確定”,你將會看到你的設備列在有你可以關閉此視窗。
步驟5、運行你的Android應用程式項目從Eclipse,如果只有一個AVD配置,它會自動部署的應用程式也會出現一個視窗,選擇你的圖片。 仿真器將開始。
在設備上運行

Android應用程式可以直接部署在Android設備上,這幾個配置所需要的。
步驟1、在調試模式的設定可以設定應用程式:Android的<應用程式>元真可調試屬性。ADT 8這是默認的。
步驟2、您的設備上啟用USB調試:Android 3.2或以上轉至設定>應用程式>開發和啟用USB調試。
在Android 4更新,這是開發商選擇設定>。
註:在Android 4.2更新,開發者選項是默認隱藏。可以,去設定>android的版本號。返回先前螢幕找到開發商選擇。
步驟3、安裝USB驅動程式為您的設備,計算機識別你的設備。
步驟4、一旦設定和您的設備通過USB連線,從Eclipse選單欄安裝您的應用程式在設備上選擇運行>運行(或運行>調試)。

中介軟體

作業系統與應用程式的溝通橋樑,並用分為兩層:函式層(Library)和虛擬機(Virtual Machine)。 Bionic是 Android 改良libc的版本。Android 同時包含了Webkit,所謂的Webkit 就是Apple Safari瀏覽器背後的引擎。Surface flinger 是就2D或3D的內容顯示到螢幕上。Android使用工具鏈(Toolchain)為Google自製的Bionic Libc。

Android採用OpenCORE作為基礎多媒體框架。OpenCORE可分7大塊:PVPlayer、PVAuthor、Codec、PacketVideo Multimedia Framework(PVMF)、Operating System Compatibility Library(OSCL)、Common、OpenMAX。

Android 使用skia 為核心圖形引擎,搭配OpenGL/ES。skia與Linux Cairo功能相當,但相較於Linux Cairo, skia 功能還只是陽春型的。2005年Skia公司被Google收購,2007年初,Skia GL源碼被公開,Skia 也是Google Chrome 的圖形引擎。

Android的多媒體資料庫採用SQLite資料庫系統。資料庫又分為共用資料庫及私用資料庫。用戶可通過ContentResolver類(Column)取得共用資料庫。

Android的中間層多以Java 實現,並且採用特殊的Dalvik虛擬機(Dalvik Virtual Machine)。Dalvik虛擬機是一種“暫存器型態”(Register Based)的Java虛擬機,變數皆存放於暫存器中,虛擬機的指令相對減少。

Dalvik虛擬機可以有多個實例(instance), 每個Android應用程式都用一個自屬的Dalvik虛擬機來運行,讓系統在運行程式時可達到最佳化。Dalvik虛擬機並非運行Java位元組碼(Bytecode),而是運行一種稱為.dex格式的檔案。

硬體抽像層

Android 的 HAL(硬體抽像層)是能以封閉源碼形式提供硬體驅動模組。HAL 的目的是為了把 Android framework 與 Linux kernel 隔開,讓 Android 不至過度依賴 Linux kernel,以達成 kernel independent 的概念,也讓 Android framework 的開發能在不考慮驅動程式實現的前提下進行發展。

HAL stub 是一種代理人(proxy)的概念,stub 是以 *.so 檔的形式存在。Stub 向 HAL“提供”操作函式(operations),並由 Android runtime 向 HAL 取得 stub 的 operations,再 callback 這些操作函式。HAL 里包含了許多的 stub(代理人)。Runtime 只要說明“類型”,即 module ID,就可以取得操作函式。

程式語言

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 Managemeat),程式管理(Process Management),網路堆疊(Network Stack),驅動程式模型(Driver Model)等。下載Android源碼之前,先要安裝其構建工具Repo來初始化源碼。Repo 是 Android 用來輔助Git工作的一個工具。

就業前景

發展

Android在中國的前景十分廣闊,首先是有成熟的消費者,在國內,Android社區十分紅火,這些社區為Android在中國的普及做了很好的推廣作用。國內廠商和運營商也紛紛加入了Android陣營,包括中國移動,中國聯通,中興通訊,華為通訊,聯想等大企業,同時不僅僅局限於手機,國內廠家也陸續推出了採用Android系統的MID產品,比較著名的包括由Rockchip和藍魔推出的同時具備高清播放和智慧型系統的音悅匯W7和2010年推出的原道N5,我們可以預見Android也將會被廣泛套用在國產智慧型上網設備上,將進一步擴大Andorid系統的套用範圍。另一方面,由於國內政策的限制,導致Android的部分功能(如Android market)在國內無法正常使用,常用的解決方法是使用VPN服務來訪問。

Gartner預計,到2016年底,將有23億部計算機、平板電腦和智慧型手機使用Android,而Windows設備數量為22.8億部。相比之下,到年底,Windows設備數量將達到15億部,而Android設備數量為6.08億部。

Android作業系統2008年才上市,隨後迅速成為主導性的智慧型手機平台,市場份額達到了2/3。與此同時,在快速發展的平板電腦市場,Android份額也位居第二。雖然Android是一款免費軟體,但它卻推動了谷歌核心的搜尋業務增長。

由於越來越多的用戶轉向平板電腦和智慧型手機,第三季度全球PC出貨量同比下滑8%,為2001年來的最大降幅。雖然微軟Windows長期統治PC市場,但在智慧型手機市場,微軟的份額僅約為3%。

就業前景和行業需求

隨著移動網際網路的到來和迅猛發展,移動網際網路開發人員的需求也是與日俱增。比如說android市場,國外Android市場正在如日中天的擴展,據市場研究公司IDC發布研究報告稱,預計中國智慧型手機市場在全球市場上所占份額將會從18.3%上升至26.5%,而美國市場所占份額則將從21.3%下降至17.8%。相信在不久的將來會有更多的用戶選擇Android系統的手機或是無線終端設備。

目前中國擁有世界上最大的手機用戶群,再加上3G的推出對整個行業的巨大推動作用,全世界所有大中小型手機製造商幾乎都在招聘Android工程師。然而每天有超過16萬台的Android設備出貨,一年後全球可能會有超過1億台的Android設備,以後將超越iphone成為智慧型手機平台的旗艦。

開發大會

AndroidWorld Global Developers Conference 安卓全球開發者大會(英文簡稱:AndroidWorld)是IDG美國國際數據集團旗下的知名展會品牌。主要針對基於Android系統平台的商業模式探討、技術交流、移動套用推廣的大會,是一次很好的探索和尋求共同發展、合作共贏的契機。AndroidWorld代表著未來移動網際網路產品和套用服務類型的發展趨勢。

語言特點

Android套用的開發語言用的是Java語言,並且在Android中也用到了Java核心類庫的大量的類,因此,在學習Android開發之前,可以先把Java基本語法和Java SE的基礎類庫好好學習一下。Android應用程式開發是以Java語言為基礎的,所以沒有紮實的Java基礎知識,只是機械的照抄別人的代碼,是沒有任何意義的。 建議在安卓課程前期的java學習階段中,需要用心的學好。

3G夢工場android培訓認為培訓學員分為兩類,一是針對入門級的學員,計算機專業出身或者至少有編程思想,經過培訓能掌握一部分基礎的java技術和an-droid系統的框架,再學習開發環境的搭建和編程軟體的使用後,就可以快速上手開發上層套用;另一類是針對有一定java技術基礎,想轉行進行An-droid開發的人員,他們有紮實的java技術和編程思想作基礎,經過培訓能加深對android系統的架構和特點的認識,這類人員經過培訓之後能接受針對An-droid系統更深層次開發的任務。

從事崗位

Android 研發工程師 Android測試工程師 Android遊戲開發工程師 Android軟體開發工程師 Android移植工程師

最新版本

Android的果凍豆系統已經從4.1升級到了4.2,所以一向喜歡迅速開發第三方ROM的CyanogenMod團隊當然也不會甘心落後的。在昨天放出30款Android設備的穩定版CM10(CM版的Android 4.1)之後,該團隊又宣布接下來將全力開發針對Android 4.2的ROM。

Android 4.2果凍豆系統僅是對此前4.1的略微更新版本,所以CyanogenMod團隊表示,基於4.2的CM系統將會是CyanogenMod 10.1。

優勢

安卓手機系統的一大優勢在於其開放性和免費的服務,Android是一個對第三方軟體完全開放的平台,開發者在為其開發程式時擁有更大的自由度,和iphone的封閉性完全相反,所以安卓獲得了更好產商的支持,例如:HTC、三星、小米、摩托羅拉、LG、中國移動等,同時安卓也得到了大量開發者的支持,在國內一些安卓開發聯盟還有安卓開發大賽就足以證明了安卓的火熱程度。

架構概述

一、應用程式

Android 會同一系列核心應用程式包一起發布,該應用程式包包括 email客戶端,SMS 短訊息程式,日曆,地圖,瀏覽器,聯繫人管理程式等。所有的應用程式都是使用JAVA 語言編寫的。

二、應用程式框架

開發人員也可以完全訪問核心應用程式所使用的API框架。該應用程式的架構設計簡化了組件的重用;任何一個應用程式都可以發布它的功能塊並且任何其它的應用程式都可以使用其所發布的功能塊(不過得遵循框架的安全性限制)。同樣,該應用程式重用機制也使用戶可以方便的替換程式組件。

三、程式庫

Android 包含一些C/C++庫,這些庫能被 Android 系統中不同的組件使用。它們通過 Android 應用程式框架為開發者提供服務。

四、Android 運行庫

Android 包括了一個核心庫,該核心庫提供了JAVA 程式語言核心庫的大多數功能。

五、Linux 核心

Android 的核心繫統服務依賴於 Linux 2.6 核心,如安全性,記憶體管理,進程管理, 網路協定棧和驅動模型。 Linux 核心也同時作為硬體和軟體棧之間的抽象層。

相關詞條

相關搜尋

熱門詞條

聯絡我們