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