張 勇
(黃岡職業(yè)技術(shù)學(xué)院)
Android網(wǎng)絡(luò)編程淺析
張 勇
(黃岡職業(yè)技術(shù)學(xué)院)
Android的誕生具有其固有的時(shí)代背景,為手機(jī)操作系統(tǒng)帶來了新的革命。本文從系統(tǒng)架構(gòu)、開發(fā)環(huán)境與應(yīng)用程序等方面對(duì)Android網(wǎng)絡(luò)編程進(jìn)行淺要分析,以期引領(lǐng)讀者走入Android網(wǎng)絡(luò)編程的大門。
Android,系統(tǒng)架構(gòu),開發(fā)環(huán)境,應(yīng)用程序
1.1 Linux內(nèi)核層
Android的開發(fā)以Linux2.6內(nèi)核為基礎(chǔ),提供安全、內(nèi)存管理、進(jìn)程管理、驅(qū)動(dòng)模型等核心系統(tǒng)服務(wù)。作為軟硬件之間的抽象層,Linux內(nèi)核層會(huì)對(duì)具體的硬件細(xì)節(jié)進(jìn)行隱藏并提供統(tǒng)一服務(wù)于上級(jí)。
1.2 Android運(yùn)行庫與函數(shù)
Android中有一個(gè)核心庫集合,能夠提供多數(shù)在Java編程語言核心類庫中可用的功能。此外,Android中還有C/C++庫集合,其使用對(duì)象為系統(tǒng)中的各組件。通過Android應(yīng)用程序框架,這些功能會(huì)顯示給開發(fā)者。
1.3 應(yīng)用框架層
開發(fā)人員可以對(duì)核心應(yīng)用程序所使用的API進(jìn)行完全使用,Android會(huì)向開發(fā)人員提供其所使用的API,使開發(fā)人員可以按照自己的創(chuàng)意進(jìn)行特色應(yīng)用程序的編制,例如,利用設(shè)備硬件優(yōu)勢(shì)設(shè)置鬧鐘等。應(yīng)用框架層的體系結(jié)構(gòu)強(qiáng)調(diào)對(duì)組件重用的簡(jiǎn)化,所有的應(yīng)用程序都有組件全部功能的使用權(quán),各應(yīng)用程序只需對(duì)框架執(zhí)行的安全限制予以執(zhí)行即可。Android的此種機(jī)制使得開發(fā)人員能夠?qū)⒆约洪_發(fā)的程序?qū)ο到y(tǒng)組件進(jìn)行替換,有利于更強(qiáng)大功能的實(shí)現(xiàn)。
1.4 應(yīng)用程序?qū)?/p>
Android會(huì)集合核心應(yīng)用程序,例如電子郵件客戶端、SMS程序、瀏覽器、聯(lián)系人、日歷、地圖等,這些程序都由Java語言編寫,當(dāng)然,更為豐富的應(yīng)用程序的編寫也是可以實(shí)現(xiàn)的。
Android的開發(fā)環(huán)境主要有三部分:(1)編譯環(huán)境,Google公司為Android提供了專門的開發(fā)包SDK包,與Eclipse相互配合可以編譯應(yīng)用層包,然后選擇在PC上進(jìn)行Linux系統(tǒng)Ubuntu的安裝;(2)代碼環(huán)境,在Android官方中對(duì)Android全代碼與Kernel代碼予以獲取;(3)驗(yàn)證環(huán)境,選擇開發(fā)需要的軟件包對(duì)手機(jī)中的相關(guān)軟件包進(jìn)行替換。
2.1 搭建Android代碼環(huán)境
(1)安裝Ubuntu上的相關(guān)下載工具。借助Ubuntu在Android官網(wǎng)進(jìn)行代碼的下載會(huì)用到一些Ubuntu系統(tǒng)默認(rèn)中沒有的命令工具,這要對(duì)其進(jìn)行安裝。
(2)安裝repo。作為一種版本控制工具,repo可以在網(wǎng)上下載源碼,用于開源網(wǎng)發(fā)布版本的更新。首先,需要在用戶目錄中創(chuàng)建bin目錄,并將下載的git軟件安裝在此目錄中,在環(huán)境變量中進(jìn)行添加;其次,下載repo腳本,并將其權(quán)限修改為可執(zhí)行。
(3)初始化repo。首先,創(chuàng)建一個(gè)目錄對(duì)Android源碼進(jìn)行保存,將其修改為最大權(quán)限并進(jìn)入該目錄中;其次,對(duì)repo工具進(jìn)行初始化,選擇所需下載的分支。
(4)添加代碼地址。
(5)下載并編譯源碼。執(zhí)行下載命令,對(duì)全代碼進(jìn)行編譯,這樣所在目錄中會(huì)生成一個(gè)out文件夾,然后對(duì)所有的庫文件進(jìn)行編譯,可執(zhí)行包都在內(nèi)。單獨(dú)編譯包應(yīng)在終端執(zhí)行。
2.2 搭建kernel代碼環(huán)境
(1)下載源碼。Android源碼中不包括kernel代碼,但源碼發(fā)布后會(huì)同時(shí)發(fā)布一個(gè)kernel的patch包,可直接下載。
(2)配置交叉編譯工具。將交叉編譯工具目錄編譯到PATH環(huán)境變量中,借助PC上的Linux系統(tǒng)與交叉編譯工具生成可用于Android系統(tǒng)的執(zhí)行文件。
(3)配置內(nèi)核并編譯。在編譯之后,真正可執(zhí)行的文件數(shù)為1,若對(duì)內(nèi)核進(jìn)行修改,需將整個(gè)內(nèi)核做替換。
3.1 SOA
網(wǎng)絡(luò)應(yīng)用應(yīng)包括客戶端與服務(wù)端,此處的客戶端即為Android,服務(wù)端的設(shè)計(jì)可以多樣化,與項(xiàng)目需求相符的設(shè)計(jì)都可用于服務(wù)端的應(yīng)用之上,若Android前端需要與后臺(tái)服務(wù)端交換數(shù)據(jù),就會(huì)涉及跨平臺(tái)的問題。這時(shí),可以利用SOA(面向服務(wù))架構(gòu)對(duì)不同平臺(tái)之間的數(shù)據(jù)傳輸問題予以解決。
Webservice以SOAP協(xié)議為基礎(chǔ),它是一種通訊協(xié)議,用于分布式網(wǎng)絡(luò)環(huán)境下的信息交換。其實(shí)現(xiàn)可以借助C#或Java,Webservice的創(chuàng)建除了編譯的代碼外,還會(huì)進(jìn)行WSDL的創(chuàng)建,它是Webservice的靈魂,是一種XML格式的文件,對(duì)服務(wù)端的訪問方式及使用協(xié)議細(xì)節(jié)進(jìn)行描述。經(jīng)由Webservice的交互方式有兩種:(1)直接使用http協(xié)議方式,通過url對(duì)相應(yīng)的接口予以使用;(2)Soap自身方式,利用soap協(xié)議在網(wǎng)絡(luò)間傳遞數(shù)據(jù)。Webservice傳遞的數(shù)據(jù)可以是xml或json形式,但xml形式由于其格式整齊與有利于數(shù)據(jù)表現(xiàn)等優(yōu)點(diǎn)應(yīng)用較為廣泛。目前用的較多的解析xml庫是dom4j,通過在項(xiàng)目中對(duì)其進(jìn)行加載,可以對(duì)xml展開便捷封裝與解析工作。
在Android中使用soap協(xié)議及Webservice交互方式,本文建議使用ksoap2-Android庫,原因在于其是一種開源項(xiàng)目,在Java對(duì)Webservice的使用中最常用到,穩(wěn)定性最高。在使用過程中,需要實(shí)現(xiàn)3個(gè)重要對(duì)象:SoapObject、SoapSerializationEnvelope與 HttpTransport。 其 中,SoapObject是SOAP的對(duì)象,對(duì)Webservice的命名空間及所調(diào)用的方法名予以指定;SoapSerializationEnvelope序列化對(duì)象會(huì)綁定SOAP對(duì)象;HttpTransport應(yīng)用于Internet訪問/請(qǐng)求,Webservice服務(wù)中的數(shù)據(jù)可以利用call方法來獲得。
3.2 Android前端開發(fā)
在Android版本逐漸更新的背景下,前端開發(fā)也變得越來越便捷,具體可以通過兩種方法來完成。
(1)事先在drawable中進(jìn)行背景選擇器與shape等式樣的編制,然后將這些式樣添加至button、textview等控件中,賦予控件一定的特色。開發(fā)人員可以對(duì)其想象力進(jìn)行充分發(fā)揮,改變xml設(shè)置多樣化控件的形式。
(2)繼承控件基類,重寫控件方法,以對(duì)自定義控件予以真正的實(shí)現(xiàn)。ScrollView、View、ListView等都是可以被重寫的控件。
本文對(duì)Android網(wǎng)絡(luò)編程進(jìn)行的系統(tǒng)架構(gòu)、開發(fā)環(huán)境及應(yīng)用程序等分析有利于讀者了解基于網(wǎng)絡(luò)開發(fā)手機(jī)APP的基本技術(shù),這對(duì)其更深入地領(lǐng)會(huì)Android開發(fā)的知識(shí)與技術(shù)提供了一定的幫助。
[1]高麟斌.基于Android的網(wǎng)絡(luò)應(yīng)用程序發(fā)開研究[J].2015(11):119-122.
[2]李滿玲.淺析Android開發(fā)環(huán)境的配置[J].商,2015(31):243.
A brief analysis on Android network programming
Zhang Yong
(Huanggang Polytechnic College)
The birth of Android has its own historical background, it has brought the mobile phone OS a new revolution. In order to lead readers toward the gate of Android network programming, the paper makes a brief analysis on it from system architecture, development environment and application.
Android, system architecture, development environment, application program