一種基于移動(dòng)平臺(tái)的應(yīng)用軟件開發(fā)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,尤其涉及一種基于移動(dòng)平臺(tái)的應(yīng)用軟件開發(fā)方法。
【背景技術(shù)】
[0002]目前在基于移動(dòng)平臺(tái)的應(yīng)用軟件開發(fā)方法中,如在Android平臺(tái)上進(jìn)行軟件開發(fā),主要軟件開發(fā)方法有以下幾種:
[0003]I,純 Android Java 的開發(fā)方法
[0004]2, Android Java語言配合Android底層C/C++語言開發(fā)的NDK開發(fā)包聯(lián)合開發(fā)的方法
[0005]3,基于現(xiàn)有跨平臺(tái)開發(fā)語言As3 (Adobe出品,網(wǎng)絡(luò)flash的開發(fā)語言)或者C# (微軟出品,Net系列)或者Unity3d(優(yōu)美締出品,主要用于跨平臺(tái)3d游戲)等進(jìn)行開發(fā)。
[0006]通常情況下,開發(fā)者在自己熟悉的平臺(tái)上(例如windows)使用以上語言的開發(fā)環(huán)境編寫代碼,然后通過Android虛擬機(jī)或者USB連接到真實(shí)設(shè)備進(jìn)行調(diào)試。由于系統(tǒng)不同,在windows的開發(fā)環(huán)境下一般也需要進(jìn)行一定的配置,開發(fā)調(diào)試方法與開發(fā)windows上的應(yīng)用程序有所不同,同時(shí)由于調(diào)試需要發(fā)生在模擬設(shè)備或者外接的Android移動(dòng)設(shè)備上,而模擬設(shè)備或者Android設(shè)備往往性能較低,大量的開發(fā)時(shí)間浪費(fèi)在來回倒騰的硬件連接和網(wǎng)絡(luò)等待時(shí)間上,從而導(dǎo)致應(yīng)用軟件開發(fā)方法的開發(fā)成本高、開發(fā)效率低。
【發(fā)明內(nèi)容】
[0007]鑒于目前基于移動(dòng)平臺(tái)的應(yīng)用軟件開發(fā)方法存在的上述不足,本發(fā)明提供一種開發(fā)成本低、開發(fā)效率非常高的基于移動(dòng)平臺(tái)的應(yīng)用軟件開發(fā)方法。
[0008]為達(dá)到上述目的,本發(fā)明的實(shí)施例采用如下技術(shù)方案:
[0009]一種基于移動(dòng)平臺(tái)的應(yīng)用軟件開發(fā)方法,該方法包括以下步驟:
[0010]在windows平臺(tái)下,運(yùn)用跨平臺(tái)的開發(fā)語言設(shè)計(jì)應(yīng)用軟件的主體部分,所述主體部分運(yùn)行與移動(dòng)平臺(tái)無關(guān);
[0011]運(yùn)用跨平臺(tái)的開發(fā)語言創(chuàng)建虛擬機(jī),所述虛擬機(jī)沒有使用依賴于平臺(tái)的函數(shù);
[0012]利用跨平臺(tái)的開發(fā)語言進(jìn)行動(dòng)態(tài)代碼加載和類型反射,生成橋接的代碼;
[0013]通過消息機(jī)制,實(shí)現(xiàn)主體部分中與平臺(tái)無關(guān)的代碼通過橋接與平臺(tái)相關(guān)的代碼的互相調(diào)用,所述橋接的代碼須將動(dòng)態(tài)代碼放置到所述跨平臺(tái)的開發(fā)語言認(rèn)定的安全沙箱中;
[0014]將開發(fā)出來的應(yīng)用軟件代碼拷貝到移動(dòng)平臺(tái)上進(jìn)行測試與使用。
[0015]依照本發(fā)明的一個(gè)方面,所述橋接的代碼須將動(dòng)態(tài)代碼放置到所述跨平臺(tái)的開發(fā)語言認(rèn)定的安全沙箱中之前,跨平臺(tái)的開發(fā)語言通過本地接口找到安全沙箱的位置。
[0016]依照本發(fā)明的一個(gè)方面,所述跨平臺(tái)的開發(fā)語言使用字符串定義的通用函數(shù)調(diào)用接口,在windows平臺(tái)調(diào)用代碼中通過解析字符串來查找和調(diào)用函數(shù)。
[0017]依照本發(fā)明的一個(gè)方面,所述跨平臺(tái)的開發(fā)語言為Adobe Air的開發(fā)包;所述移動(dòng)平臺(tái)為Android或1s或windows surface或黑莓。
[0018]本發(fā)明還公布了一種基于移動(dòng)平臺(tái)的應(yīng)用軟件開發(fā)系統(tǒng),所述系統(tǒng)包括:
[0019]主體設(shè)計(jì)模塊:該模塊用于:在windows平臺(tái)下,運(yùn)用跨平臺(tái)的開發(fā)語言設(shè)計(jì)應(yīng)用軟件的主體部分,所述主體部分運(yùn)行與移動(dòng)平臺(tái)無關(guān);
[0020]創(chuàng)建虛擬機(jī)模塊:該模塊用于:運(yùn)用跨平臺(tái)的開發(fā)語言創(chuàng)建虛擬機(jī),所述虛擬機(jī)沒有使用依賴于平臺(tái)的函數(shù);
[0021]代碼生成模塊:用于利用跨平臺(tái)的開發(fā)語言進(jìn)行動(dòng)態(tài)代碼加載和類型反射,生成橋接的代碼;
[0022]調(diào)用模塊:用于通過消息機(jī)制,實(shí)現(xiàn)主體部分中與平臺(tái)無關(guān)的代碼通過橋接與平臺(tái)相關(guān)的代碼的互相調(diào)用,所述橋接的代碼須將動(dòng)態(tài)代碼放置到所述跨平臺(tái)的開發(fā)語言認(rèn)定的安全沙箱中;
[0023]測試模塊:用于將開發(fā)出來的應(yīng)用軟件代碼拷貝到移動(dòng)平臺(tái)上進(jìn)行測試與使用。
[0024]依照本發(fā)明的一個(gè)方面,所述橋接的代碼須將動(dòng)態(tài)代碼放置到所述跨平臺(tái)的開發(fā)語言認(rèn)定的安全沙箱中之前,跨平臺(tái)的開發(fā)語言通過本地接口找到安全沙箱的位置。
[0025]依照本發(fā)明的一個(gè)方面,所述跨平臺(tái)的開發(fā)語言使用字符串定義的通用函數(shù)調(diào)用接口,在windows平臺(tái)調(diào)用代碼中通過解析字符串來查找和調(diào)用函數(shù)。
[0026]依照本發(fā)明的一個(gè)方面,所述跨平臺(tái)的開發(fā)語言為Adobe Air的開發(fā)包;所述移動(dòng)平臺(tái)為Android或1s或windows surface或黑莓。
[0027]本發(fā)明實(shí)施的優(yōu)點(diǎn):由于本發(fā)明的基于移動(dòng)平臺(tái)的應(yīng)用軟件開發(fā)方法在windows平臺(tái)下,運(yùn)用跨平臺(tái)的開發(fā)語言設(shè)計(jì)應(yīng)用軟件的主體部分,所述主體部分運(yùn)行與移動(dòng)平臺(tái)無關(guān);運(yùn)用跨平臺(tái)的開發(fā)語言創(chuàng)建虛擬機(jī),所述虛擬機(jī)沒有使用依賴于平臺(tái)的函數(shù);利用跨平臺(tái)的開發(fā)語言進(jìn)行動(dòng)態(tài)代碼加載和類型反射,從而實(shí)現(xiàn)一段橋接的代碼,通過消息機(jī)制,實(shí)現(xiàn)主體部分中與平臺(tái)無關(guān)的代碼通過橋接與平臺(tái)相關(guān)的代碼的互相調(diào)用,所述橋接的代碼須將動(dòng)態(tài)代碼放置到所述跨平臺(tái)的開發(fā)語言認(rèn)定的安全沙箱中;將開發(fā)出來的應(yīng)用軟件代碼拷貝到移動(dòng)平臺(tái)上進(jìn)行測試與使用,由于windows系統(tǒng)的性能數(shù)倍于移動(dòng)平臺(tái)設(shè)備,且應(yīng)用軟件開發(fā)過程中沒有硬件連接和網(wǎng)絡(luò)等待時(shí)間,應(yīng)用軟件開發(fā)完成后,只需將設(shè)計(jì)代碼拷貝到移動(dòng)平臺(tái)上可以直接測試與使用,整個(gè)開發(fā)過程速度快且方便,節(jié)省大量的時(shí)間,因此本發(fā)明的基于移動(dòng)平臺(tái)的應(yīng)用軟件開發(fā)方法的開發(fā)成本低、開發(fā)效率非常高。
[0028]具體實(shí)施方法
[0029]一種基于移動(dòng)平臺(tái)的應(yīng)用軟件開發(fā)方法,該方法包括以下步驟:
[0030]在windows平臺(tái)下,運(yùn)用跨平臺(tái)的開發(fā)語言設(shè)計(jì)應(yīng)用軟件的主體部分,所述主體部分運(yùn)行與移動(dòng)平臺(tái)無關(guān);
[0031]運(yùn)用跨平臺(tái)的開發(fā)語言創(chuàng)建虛擬機(jī),所述虛擬機(jī)沒有使用依賴于平臺(tái)的函數(shù);
[0032]利用跨平臺(tái)的開發(fā)語言進(jìn)行動(dòng)態(tài)代碼加載和類型反射,生成橋接的代碼;
[0033]通過消息機(jī)制,實(shí)現(xiàn)主體部分中與平臺(tái)無關(guān)的代碼通過橋接與平臺(tái)相關(guān)的代碼的互相調(diào)用,所述橋接的代碼須將動(dòng)態(tài)代碼放置到所述跨平臺(tái)的開發(fā)語言認(rèn)定的安全沙箱中;
[0034]將開發(fā)出來的應(yīng)用軟件代碼拷貝到移動(dòng)平臺(tái)上進(jìn)行測試與使用。
[0035]下面以基于Android平臺(tái)的應(yīng)用軟件開發(fā)方法為例,對(duì)本發(fā)明作進(jìn)一步說明。
[0036]步驟1:在windows平臺(tái)下,運(yùn)用跨平臺(tái)的開發(fā)語言設(shè)計(jì)應(yīng)用軟件的主體部分,所述主體部分運(yùn)行與Android平臺(tái)無關(guān);
[0037]我們采用的跨平臺(tái)的開發(fā)語言為Adobe公司的As3腳本語言,通過Adobe Air的開發(fā)包實(shí)現(xiàn)跨平臺(tái)的開發(fā),在應(yīng)用開發(fā)時(shí),將應(yīng)用軟件中的主體部分獨(dú)立出來,所述主體部分運(yùn)行與Android無關(guān),使用windows平臺(tái)進(jìn)行主體部分的開發(fā),由于在效率較高的windows平臺(tái)上完成軟件主體部分的開發(fā),再加上windows系統(tǒng)的性能數(shù)倍于Android移動(dòng)設(shè)備,且沒有硬件連接和網(wǎng)絡(luò)等待時(shí)間,開發(fā)效率非常高。
[0038]步驟2:運(yùn)用跨平臺(tái)的開發(fā)語言創(chuàng)建虛擬機(jī),所述虛擬機(jī)沒有使用依賴于平臺(tái)的函數(shù);
[0039]由于跨平臺(tái)開發(fā)語言針對(duì)不同的平臺(tái)實(shí)現(xiàn)了動(dòng)作行為相同的虛擬機(jī)(VM),在我們的程序代碼一致的情況下,只要我們沒有調(diào)用依賴于平臺(tái)的函數(shù),則無論是在windows上執(zhí)行,還是在Android系統(tǒng)上執(zhí)行,實(shí)現(xiàn)出來的效果是完全一致的。因此我們的軟件在windows上的顯示方式和Android平臺(tái)上的顯示方式可以做到一致。
[0040]同時(shí),與Android相關(guān)的部分(例如獲取Android設(shè)備的wifi地址,PPI信息等硬件信息)仍然使用原來的方式進(jìn)行編程。
[0041]步驟3:利用跨平臺(tái)的開發(fā)語言進(jìn)行動(dòng)態(tài)代碼加載和類型反射,生成橋接的代碼;
[0042]應(yīng)用軟件的兩端開發(fā)完畢后,我們利用跨平臺(tái)的開發(fā)語言的高級(jí)功能:動(dòng)態(tài)代碼加載和類型反射,實(shí)現(xiàn)一段橋接的代碼。
[0043]由于windows上開發(fā)的模塊,在Android平臺(tái)上是動(dòng)態(tài)加載進(jìn)來的,且對(duì)于Android上的應(yīng)用,默認(rèn)的運(yùn)行環(huán)境是應(yīng)用自身所在的位置,因此動(dòng)態(tài)代碼加載進(jìn)來的模塊需要再次加載其他的資源文件時(shí),其相對(duì)路徑應(yīng)當(dāng)以應(yīng)用的相對(duì)路徑為準(zhǔn)。這就導(dǎo)致在windows上開發(fā)的代碼,在Android上運(yùn)行時(shí)如何自動(dòng)替換路徑的問題,這個(gè)問題我們是通過橋接代碼動(dòng)態(tài)加載時(shí),直接修改被加載的環(huán)境變量實(shí)現(xiàn)的。這樣在windows上開發(fā)時(shí),程序使用的是開發(fā)時(shí)的路徑,而加載到新環(huán)境下之后,則自動(dòng)使用新環(huán)境下的路徑。
[0044]步驟4:通過消息機(jī)制,實(shí)現(xiàn)主體部分中與平臺(tái)無關(guān)的代碼通過橋接與平臺(tái)相關(guān)的代碼的互相調(diào)用,所述橋接的代碼須將動(dòng)態(tài)代碼放置到所述跨平臺(tái)的開發(fā)語言認(rèn)定的安全沙箱中;
[0045]由于使用Adobe Air開發(fā)時(shí),虛擬機(jī)(VM)會(huì)判斷動(dòng)態(tài)加載進(jìn)來的代碼是否安全,會(huì)對(duì)加載進(jìn)來的第三方作訪問限制,因此橋接的代碼需要將動(dòng)態(tài)代碼放置到Air認(rèn)定的安全沙箱中,這個(gè)步驟我們是通過了 Adobe Air提供的C語言的擴(kuò)展實(shí)現(xiàn)的,即:首先通過C語言實(shí)現(xiàn)的本地接口,找到安全沙箱的位置,然后將動(dòng)態(tài)加載的代碼放置到其中;然后動(dòng)態(tài)代碼加載成功后,代碼就擁有與調(diào)用應(yīng)用相同的權(quán)限,這就使windows平臺(tái)上開發(fā)的功能可以無縫使用。
[0046]步驟5:將開發(fā)出來的應(yīng)用軟件代碼拷貝到Android平臺(tái)上進(jìn)行測試與使用。
[0047]通過橋接的代碼,我們?cè)诟咝Э焖俚膚indows桌面系統(tǒng)下對(duì)應(yīng)用軟件進(jìn)行開發(fā),完畢以后,僅需要將生成的代碼拷貝到Android設(shè)備的sdcard上就可以直接測試與使用,整個(gè)流程迅速且方便。
[0048]由于平臺(tái)的差異性,軟件中必然會(huì)使用到一些與當(dāng)前系統(tǒng)相關(guān)的部分,而這些部分是無法移植的。這個(gè)部分我們利用了 Adobe Air的本地?cái)U(kuò)展能與C語言開發(fā)的模塊交互