邢益良++韓寶如++裴云++雷華軍
摘要摘要:順利搭建Android PHP應(yīng)用運(yùn)行環(huán)境能降低開發(fā)人員的學(xué)習(xí)難度。對(duì)運(yùn)行環(huán)境中失敗率較高的PFA安裝問題提出了解決方法。首先搭建Web服務(wù)器,然后重定位域名,最后搭建運(yùn)行環(huán)境。實(shí)踐表明該方法具有簡(jiǎn)單、有效和不受互聯(lián)網(wǎng)干擾等優(yōu)點(diǎn)。
關(guān)鍵詞關(guān)鍵詞:PHP; Android;Web;PFA;運(yùn)行環(huán)境
DOIDOI:10.11907/rjdk.151889
中圖分類號(hào):TP301
文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào)文章編號(hào):16727800(2015)011001103
基金項(xiàng)目基金項(xiàng)目:海南省自然基金資助項(xiàng)目(20156237)
作者簡(jiǎn)介作者簡(jiǎn)介:邢益良(1979-),男,海南文昌人,碩士,海南軟件職業(yè)技術(shù)學(xué)院軟件工程系講師,研究方向?yàn)檐浖こ?、?jì)算機(jī)圖形圖像處理;韓寶如(1982-),男,山東臨沂人,博士,海南軟件職業(yè)技術(shù)學(xué)院軟件工程系副教授,研究方向?yàn)閿?shù)字水印和故障診斷;裴云(1983-),男,貴州銅仁人,碩士,海南軟件職業(yè)技術(shù)學(xué)院軟件工程系講師,研究方向?yàn)閿?shù)字圖像處理、計(jì)算機(jī)技術(shù);雷華軍(1979-),男,湖南嘉禾人,海南軟件職業(yè)技術(shù)學(xué)院軟件工程系助教,研究方向?yàn)橛?jì)算機(jī)基礎(chǔ)理論。
0引言
PHP是一種腳本語言,它具有開發(fā)簡(jiǎn)單快速等優(yōu)點(diǎn),可用來開發(fā)Android應(yīng)用。Android PHP運(yùn)行環(huán)境是Android PHP腳本應(yīng)用的運(yùn)行和開發(fā)基礎(chǔ)。要搭建Android PHP運(yùn)行環(huán)境,需要借助SL4A[1]和PFA(PHP for Android)[2]兩個(gè)重要應(yīng)用組件。SL4A英文名為Scripting Layer for Android,中文名為Android腳本層,它的作用是為腳本提供WiFi、藍(lán)牙、UI和語音合成等Android原生態(tài)服務(wù)。SL4A支持的腳本語言包括Python、JavaScript和PHP等。PHP腳本要訪問SL4A原生態(tài)服務(wù)需借助開源公司IronTec提供的開源項(xiàng)目PFA。實(shí)質(zhì)上,PFA是運(yùn)行于Android平臺(tái)的PHP腳本解析器,PHP腳本可以通過它被解析和運(yùn)行。PFA支持PHP基礎(chǔ)語法、PHP部分函數(shù)、JSON數(shù)據(jù)類型和Socket編程等內(nèi)容。關(guān)于Android PHP開發(fā)環(huán)境,邢等人對(duì)其應(yīng)用有較系統(tǒng)的闡述,PFA方法的不足是安裝依賴谷歌網(wǎng)站。由于谷歌網(wǎng)站在國(guó)內(nèi)存在訪問速度慢等問題,因此PFA安裝容易導(dǎo)致Android PHP運(yùn)行環(huán)境搭建失敗。本文探討利用Web域名重定位技術(shù)搭建Android PHP開發(fā)環(huán)境,可避免因谷歌網(wǎng)站造成環(huán)境搭建失敗問題。
1搭建原理
1.1Web服務(wù)器及其域名定位方法
WWW是World Wide Web的縮寫,簡(jiǎn)稱為Web,中文名為“萬維網(wǎng)”,它誕生于1989年3月。Web采用的是服務(wù)器/瀏覽器體系結(jié)構(gòu),HTTP是Hyper Text Transportation Protocol(超文本傳輸協(xié)議)的縮寫,Web服務(wù)器與瀏覽器通過HTTP通信協(xié)議在互聯(lián)網(wǎng)發(fā)送和接收數(shù)據(jù)。通過HTTP協(xié)議,Web服務(wù)器不僅支持用戶瀏覽網(wǎng)頁,而且支持用戶下載文件。在 HTTP 中,總是瀏覽器主動(dòng)呼叫服務(wù)器建立連接和發(fā)送HTTP 請(qǐng)求,啟動(dòng)一個(gè)事務(wù)。服務(wù)器不能主動(dòng)與客戶端聯(lián)系,也不能給客戶端發(fā)出一個(gè)回叫連接。IIS和Apache等是常見的Web 服務(wù)器。迄今為止,Apache是世界上使用量最高的Web服務(wù)器軟件,其可以運(yùn)行在Linux、Windows和Unix等操作系統(tǒng)中。
用戶可以通過IP地址和域名定位Web服務(wù)器。IP地址是服務(wù)器的真實(shí)地址,雖然域名也可用來定位服務(wù)器,但它需解析成IP地址。當(dāng)用戶通過瀏覽器訪問Web服務(wù)器時(shí),操作系統(tǒng)首先通過DNS域名解析服務(wù)器,把域名解析成IP地址,之后,運(yùn)行在操作系統(tǒng)上的瀏覽器才能對(duì)此網(wǎng)站進(jìn)行定位和訪問網(wǎng)站數(shù)據(jù)。能否正常訪問網(wǎng)站依賴DNS域名解析服務(wù)器是否能正常工作??焖俳馕龊驮L問Web服務(wù)器的一種簡(jiǎn)單、有效的方法是修改文件hosts。操作系統(tǒng)規(guī)定,在域名進(jìn)行DNS域名解析請(qǐng)求之前,先檢查操作系統(tǒng)的hosts文件中是否有這個(gè)域名和IP的映射關(guān)系。如果有,則直接訪問這個(gè)IP地址指定的網(wǎng)絡(luò)位置,如果沒有,再向DNS服務(wù)器提出域名解析請(qǐng)求。也就是說文件hosts的IP解析優(yōu)先級(jí)比DNS要高。
1.2運(yùn)行環(huán)境搭建原理
Android PHP應(yīng)用運(yùn)行環(huán)境搭建原理如圖1所示,由Android手機(jī)和Web服務(wù)器兩部分組成,其中,Android手機(jī)由組件SL4A、組件PFA和文件hosts組成,手機(jī)通過文件hosts把谷歌網(wǎng)站重定向自搭建的Web服務(wù)器,組件PFA通過HTTP協(xié)議可從Web服務(wù)器下載文件自動(dòng)完成安裝工作;Web服務(wù)器為組件PFA提供文件下載服務(wù),其下載的文件包括php_extras_r3.zip等。環(huán)境搭建主要步驟:①下載環(huán)境搭建相關(guān)軟件,包括SL4A、PFA、PFA二次安裝相關(guān)文件和PHPNow等;②安裝Web服務(wù)器;③部署PFA二次安裝相關(guān)文件到Web服務(wù)器;④谷歌域名重定向自搭建Web服務(wù)器;⑤安裝SL4A和PFA組件;⑥運(yùn)行PFA組件下載PFA二次安裝相關(guān)文件,完成安裝。
本文方法需先下載SL4A組件、PFA組件、PFA組件相關(guān)文件以及PHPNow套件,前三者可在官方網(wǎng)站或非官方網(wǎng)站http://pan.baidu.com/s/1mgknrja下載,PHPNow套件可從官方網(wǎng)站http://servkit.org/download/下載。文件清單如表1所示。
PHPnow[4]是Win32下綠色免費(fèi)的Apache+PHP+MySQL環(huán)境套件包,PHPNow是綠色的,其具有安裝簡(jiǎn)單和集成套件等特點(diǎn)。PHPNow套件最新版本是PHPNow 1.5.6,該套件包含有Apache服務(wù)器等軟件包。本文方法應(yīng)用PHPNow建立Web服務(wù)器。
由于在Android中首次運(yùn)行PFA組件時(shí)需從Web服務(wù)器下載PFA二次安裝文件,因此需事先在Web服務(wù)器中部署好相關(guān)文件。其相關(guān)文件應(yīng)復(fù)制部署到“Web服務(wù)器主目錄files子目錄”,因?yàn)镻FA組件會(huì)通過此目錄下載文件。
Android中用于域名定位的文件hosts位于目錄“/system/etc”下,通過修改該文件可讓Android系統(tǒng)訪問指定域名時(shí)轉(zhuǎn)向訪問PC端Web服務(wù)器。文件hosts存儲(chǔ)了網(wǎng)站域名和IP地址的映射關(guān)系,每個(gè)映射關(guān)系用一行記錄表示,每行記錄具體格式是“IP地址 網(wǎng)站域名”,比如,“127.0.0.1 www.google.com”,當(dāng)訪問域名“www.google.com”時(shí),將訪問本機(jī)。由于Android模擬器的文件系統(tǒng)默認(rèn)為只讀屬性,因此要修改hosts文件需要把只讀改為可讀寫屬性。要修改文件hosts還需要用戶具有root權(quán)限。
2實(shí)驗(yàn)過程和結(jié)果
本文方法在Win7+Android模擬器中運(yùn)行通過,Android版本為2.3.3。
2.1PHPNow搭建Web服務(wù)器
要安裝Web服務(wù)器,先把PHPNow套件解壓到某個(gè)目錄中,比如解壓目錄為“C:PHPNow”;然后執(zhí)行解壓目錄中的Setup.cmd命令文件,該命令文件執(zhí)行過程會(huì)以命令方式提示用戶選擇Apache服務(wù)器和MySQL數(shù)據(jù)庫選項(xiàng),以及設(shè)置MySQL用戶密碼;用戶按提示選擇和設(shè)置好密碼后,系統(tǒng)會(huì)自動(dòng)搭建好一個(gè)Apache+PHP+MySQL環(huán)境。事實(shí)上本文方法只需要Apache服務(wù)器。要測(cè)試Web服務(wù)器是否已安裝成功,可在瀏覽器中輸入“http://127.0.0.1/”,如果能顯示PHPNow主界面,表明環(huán)境搭建成功,否則表示失敗。圖2是PHPNow主界面。
2.2部署PFA二次安裝文件
要查看Apache服務(wù)器主目錄,可在PHPNow主界面中查看“網(wǎng)站主目錄”項(xiàng),該項(xiàng)通常為“C:/PHPnow-1.5.6/htdocs”。要部署PFA二次安裝文件,可先在網(wǎng)站主目錄中建立子目錄files,再把文件拷貝到目錄“C:PHPnow-1.5.6htdocsfiles”中。
2.3修改hosts快速定位域名
可在Windows命令窗口中輸入“adb root”和“adb remount”命令,讓Android模擬器成為root用戶及讓文件系統(tǒng)具有讀寫屬性。之后輸入“adb shell”進(jìn)入模擬器的shell控制臺(tái),通過echo命令和重定位符為hosts文件添加新的域名定位數(shù)據(jù),具體命令如下:
echo 10.0.2.2 android-scripting.googlecode.com >> /system/etc/hosts
echo 10.0.2.2 php-for-android.googlecode.com >> /system/etc/hosts
當(dāng)模擬器訪問android-scripting.googlecode.com和php-for-android.googlecode.com域名時(shí),其將轉(zhuǎn)向訪問IP為10.0.2.2的PC電腦,Android模擬器會(huì)自動(dòng)將PC電腦IP設(shè)置為10.0.2.2(等同于PC本機(jī)的IP地址127.0.0.1)。如果要使修改后的配置在重啟模擬器后仍然有效,則需要先設(shè)置模擬器的Snapshot屬性,置值為Enabled。
2.4安裝SL4A和PFA組件
要在模擬器上安裝SL4A和PFA組件,可在Windows命令窗口中輸入adb命令實(shí)現(xiàn),具體如下:
adb install sl4a_r6.apk
adb install phpforandroid_r1.apk
在模擬器中單擊PFA圖標(biāo)進(jìn)入安裝界面并單擊“Install”按鈕,將自動(dòng)進(jìn)行PFA第二次安裝。圖3對(duì)PFA二次安裝正常和異常狀態(tài)進(jìn)行了比較。其中,圖3(a)是在文本方法支持下正常安裝解壓過程,圖3(b)是未在本文方法支持下,網(wǎng)絡(luò)問題造成PFA在等待下載,網(wǎng)絡(luò)超時(shí)后將導(dǎo)致安裝失敗。
2.5測(cè)試運(yùn)行環(huán)境
在Android中點(diǎn)擊SL4A圖標(biāo)進(jìn)入SL4A管理器,能看到系統(tǒng)默認(rèn)安裝好的PHP實(shí)例,其結(jié)果如圖4所示。點(diǎn)擊文件“hello_world.php”圖標(biāo)運(yùn)行腳本,如果跳出對(duì)話框則說明Android PHP運(yùn)行環(huán)境搭建成功,運(yùn)行結(jié)果如圖5所示。
3結(jié)語
本文方法對(duì)開發(fā)人員具有簡(jiǎn)單、快速和穩(wěn)定等優(yōu)點(diǎn),大大降低了Android PHP應(yīng)用開發(fā)初學(xué)者的學(xué)習(xí)難度。但不足的是,本文方法面向普通用戶表現(xiàn)出復(fù)雜度高等問題,下一步的工作是面向普通用戶降低環(huán)境搭建難度。
參考文獻(xiàn)參考文獻(xiàn):
[1]R J MATTHEWS.API reference (release R6) [EB/OL]. http://code.google.com/p/androidscripting/wiki/ApiReference,2015110.
[2]IROTEC. PHP for Android project(PFA)[EB/OL]. http://phpforandroid.net,2014121.
[3]邢益良,裴云,陳敏. PHP Web和Android開發(fā)入門與實(shí)踐[M]. 北京:清華大學(xué)出版社,2014.
[4]SERVKIT.PHPow是什么[EB/OL].http://servkit.org, 2015110.
責(zé)任編輯(責(zé)任編輯:杜能鋼)