程序編譯方法及相關(guān)裝置制造方法
【專(zhuān)利摘要】本發(fā)明是關(guān)于程序編譯方法及裝置,所述方法從存儲(chǔ)在編譯主機(jī)上的第一目錄樹(shù)中,查詢(xún)編譯選擇的待編譯文件所依賴(lài)的依賴(lài)文件;然后,從存儲(chǔ)在編譯服務(wù)器上的第二目錄樹(shù)中獲取依賴(lài)文件;利用依賴(lài)文件編譯待編譯文件,得到目標(biāo)文件。實(shí)現(xiàn)了在編譯Android源代碼時(shí),能夠依賴(lài)于除待編譯文件所在的目錄樹(shù)之外的其它目錄樹(shù)(第二目錄樹(shù)),無(wú)需研發(fā)人員下載維護(hù)一套完整的Android源代碼,只需下載本模塊對(duì)應(yīng)的源代碼,減小了硬盤(pán)空間的占用。而且,能夠直接從第二目錄樹(shù)中獲得目標(biāo)文件所需的依賴(lài)文件,無(wú)需通過(guò)編譯得到依賴(lài)文件,從而節(jié)省了編譯依賴(lài)文件占用的時(shí)間和資源。因此,大大減少了所需的硬盤(pán)空間及編譯時(shí)間,提高了系統(tǒng)開(kāi)發(fā)效率。
【專(zhuān)利說(shuō)明】程序編譯方法及相關(guān)裝置
【技術(shù)領(lǐng)域】
[0001]本公開(kāi)涉及計(jì)算機(jī)【技術(shù)領(lǐng)域】,特別是涉及程序編譯方法及相關(guān)裝置。
【背景技術(shù)】
[0002]程序編譯是將高級(jí)程序設(shè)計(jì)語(yǔ)言轉(zhuǎn)換成計(jì)算機(jī)硬件能識(shí)別的機(jī)器語(yǔ)言,以便計(jì)算機(jī)進(jìn)行處理。
[0003]Android系統(tǒng)是以Linux為基礎(chǔ)的半開(kāi)源操作系統(tǒng),主要應(yīng)用于移動(dòng)終端(例如,智能手機(jī)、平板電腦等),移動(dòng)終端生產(chǎn)商可以根據(jù)自己的硬件個(gè)性定制屬于自己的Android系統(tǒng),此時(shí),需要系統(tǒng)研發(fā)人員對(duì)系統(tǒng)的源代碼進(jìn)行開(kāi)發(fā)及編譯。
[0004]編譯Android的源代碼時(shí),可以將大型的開(kāi)發(fā)項(xiàng)目分解為多個(gè)更易于管理的模塊或子項(xiàng)目,而模塊或子項(xiàng)目之間可能存在依賴(lài)關(guān)系,在編譯某一目標(biāo)文件時(shí)所依賴(lài)的文件具有不確定性,因此,系統(tǒng)研發(fā)人員需要在本地維護(hù)一套完整的Android源代碼,而源代碼非常龐大,在較好的網(wǎng)絡(luò)環(huán)境下也需要幾個(gè)小時(shí)才能下載完成,而且,隨著Android版本的不斷更新,為了增加軟件的兼容性,通常需要在本地保存多個(gè)Android版本的源代碼,占用硬盤(pán)和網(wǎng)絡(luò)資源多;編譯Android源代碼需要30G左右的硬盤(pán)空間,占用大量的硬盤(pán)空間;而且編譯時(shí)間通常需要數(shù)個(gè)小時(shí),浪費(fèi)了系統(tǒng)研發(fā)人員的大量時(shí)間。
【發(fā)明內(nèi)容】
[0005]本公開(kāi)實(shí)施例中提供了一種程序編譯方法及相關(guān)裝置,以解決Android源代碼編譯占用資源多,且耗費(fèi)時(shí)間長(zhǎng)的問(wèn)題。
[0006]為了解決上述技術(shù)問(wèn)題,本公開(kāi)實(shí)施例公開(kāi)了如下技術(shù)方案:
[0007]根據(jù)本公開(kāi)實(shí)施例的第一方面,提供一種程序編譯方法,包括:從第一目錄樹(shù)中查詢(xún)編譯待編譯文件所依賴(lài)的依賴(lài)文件;從編譯服務(wù)器編譯Android源代碼得到的第二目錄樹(shù)中,獲取所述依賴(lài)文件;根據(jù)所述依賴(lài)文件編譯所述待編譯文件,得到目標(biāo)文件。
[0008]結(jié)合第一方面,在第一方面的第一種可能的實(shí)現(xiàn)方式中,從編譯服務(wù)器編譯Android源代碼得到的第二目錄樹(shù)中,獲取所述依賴(lài)文件,采用如下方式:
[0009]從所述第二目錄樹(shù)中獲取所述依賴(lài)文件在所述編譯服務(wù)器中的路徑信息;依據(jù)所述路徑信息獲取所述依賴(lài)文件。
[0010]結(jié)合第一方面的第一種可能的實(shí)現(xiàn)方式,在第一方面的第二種可能的實(shí)現(xiàn)方式中,從所述第二目錄樹(shù)中獲取所述依賴(lài)文件在所述編譯服務(wù)器中的路徑信息,采用如下方式:
[0011]接收所述編譯服務(wù)器發(fā)送的所述第二目錄樹(shù)中的各個(gè)依賴(lài)文件與路徑信息之間的映射關(guān)系;根據(jù)所述映射關(guān)系,查詢(xún)得到所述待編譯文件所依賴(lài)的依賴(lài)文件對(duì)應(yīng)的路徑信息。
[0012]結(jié)合第一方面,在第一方面的第三種可能的實(shí)現(xiàn)方式中,從編譯服務(wù)器編譯Android源代碼得到的第二目錄樹(shù)中,獲取所述依賴(lài)文件,采用如下方式:[0013]向所述編譯服務(wù)器發(fā)送所述待編譯文件所依賴(lài)的依賴(lài)文件的文件信息,所述文件信息至少包括所述依賴(lài)文件的文件名稱(chēng);接收所述編譯服務(wù)器根據(jù)所述依賴(lài)文件的文件信息獲得的所述依賴(lài)文件;由編譯服務(wù)器查詢(xún)所述第二目錄樹(shù)中的各個(gè)依賴(lài)文件與路徑信息之間的映射關(guān)系,得到的所述依賴(lài)文件的路徑信息,并依據(jù)所述路徑信息獲得所述依賴(lài)文件;所述映射關(guān)系保存在所述編譯服務(wù)器中。
[0014]結(jié)合第一方面,在第一方面的第四種可能的實(shí)現(xiàn)方式中,所述從第一目錄樹(shù)中查詢(xún)編譯待編譯文件所依賴(lài)的依賴(lài)文件,采用如下方式:
[0015]獲取所述第一目錄樹(shù)中各個(gè)待編譯文件的依賴(lài)關(guān)系,所述依賴(lài)關(guān)系用于存儲(chǔ)各個(gè)待編譯文件和各個(gè)所述待編譯文件所依賴(lài)的依賴(lài)文件之間的對(duì)應(yīng)關(guān)系;
[0016]根據(jù)所述依賴(lài)關(guān)系,查詢(xún)得到所述待編譯文件所依賴(lài)的依賴(lài)文件。
[0017]結(jié)合第一方面,在第一方面的第五種可能的實(shí)現(xiàn)方式中,所述方法還包括:
[0018]在所述第一目錄樹(shù)中查找是否存在所述待編譯文件所依賴(lài)的依賴(lài)文件;
[0019]當(dāng)所述第一目錄樹(shù)中不存在所述待編譯文件所依賴(lài)的依賴(lài)文件時(shí),執(zhí)行所述從編譯服務(wù)器編譯Android源代碼得到的第二目錄樹(shù)中,獲取所述依賴(lài)的步驟。
[0020]根據(jù)本公開(kāi)實(shí)施例的第二方面,提供一種程序編譯方法,包括:
[0021]獲取Android源代碼;編譯所述Android源代碼得到第二目錄樹(shù),并保存所述第二目錄樹(shù)中的各個(gè)依賴(lài)文件與路徑信息的映射關(guān)系;所述映射關(guān)系用于使編譯主機(jī)獲取待編譯文件所依賴(lài)的依賴(lài)文件,并根據(jù)所述依賴(lài)文件編譯第一目錄樹(shù)中的待編譯文件得到目標(biāo)文件。
[0022]結(jié)合第二方面,在第二方面的第一種可能的實(shí)現(xiàn)方式中,所述方法還包括:
[0023]檢測(cè)編譯主機(jī)中存儲(chǔ)的Android源代碼是否被修改;
[0024]當(dāng)檢測(cè)到編譯主機(jī)中存儲(chǔ)的所述Android源代碼被修改時(shí),依據(jù)修改后的Android源代碼,更新編譯服務(wù)器中存儲(chǔ)的Android源代碼;
[0025]編譯更新后的Android源代碼,更新所述第二目錄樹(shù)中的各個(gè)依賴(lài)文件。
[0026]結(jié)合第二方面的第一種可能的實(shí)現(xiàn)方式,在第二方面的第二種可能的實(shí)現(xiàn)方式中,獲取編譯主機(jī)編譯得到的各個(gè)目標(biāo)文件對(duì)應(yīng)的源代碼,采用如下方式:
[0027]編譯服務(wù)器從中心服務(wù)器中獲取各個(gè)目標(biāo)文件對(duì)應(yīng)的Android源代碼,所述Android源代碼由編譯主機(jī)將編譯得到的目標(biāo)文件對(duì)應(yīng)的源代碼上傳至中心服務(wù)器;
[0028]或,
[0029]編譯服務(wù)器從編譯主機(jī)中獲取各個(gè)目標(biāo)文件對(duì)應(yīng)的Android源代碼。
[0030]結(jié)合第二方面的第二種可能的實(shí)現(xiàn)方式,在第二方面的第三種可能的實(shí)現(xiàn)方式中,所述方法還包括:
[0031]將所述映射關(guān)系發(fā)送給編譯主機(jī),所述映射關(guān)系用于使編譯主機(jī)獲取待編譯文件所依賴(lài)的依賴(lài)文件的路徑信息,根據(jù)所述路徑信息獲取所述依賴(lài)文件,并根據(jù)所述依賴(lài)文件編譯第一目錄樹(shù)中的待編譯文件得到目標(biāo)文件。
[0032]結(jié)合第二方面的第二種可能的實(shí)現(xiàn)方式,在第二方面的第四種可能的實(shí)現(xiàn)方式中,所述方法還包括:
[0033]接收編譯主機(jī)發(fā)送的所述待編譯文件所依賴(lài)的依賴(lài)文件的文件信息,所述文件信息至少包括所述依賴(lài)文件的文件名稱(chēng);[0034]根據(jù)所述依賴(lài)文件的文件信息,查詢(xún)所述映射關(guān)系獲得所述依賴(lài)文件的路徑信
肩、O
[0035]根據(jù)本公開(kāi)實(shí)施例的第三方面,提供一種程序編譯裝置,包括:
[0036]第一查詢(xún)單元,用于從第一目錄樹(shù)中查詢(xún)編譯待編譯文件所依賴(lài)的依賴(lài)文件;
[0037]第一獲取單元,用于從編譯服務(wù)器編譯Android源代碼得到的第二目錄樹(shù)中,獲取所述依賴(lài)文件;
[0038]編譯單元,用于根據(jù)所述依賴(lài)文件編譯所述待編譯文件,得到目標(biāo)文件。
[0039]結(jié)合第三方面,在第三方面的第一種可能的實(shí)現(xiàn)方式中,所述第一獲取單元,包括:
[0040]第一獲取子單元,用于從所述第二目錄樹(shù)中獲取所述依賴(lài)文件在所述編譯服務(wù)器中的路徑信息;
[0041]第二獲取子單元,用于根據(jù)所述路徑信息獲取所述依賴(lài)文件。
[0042]結(jié)合第三方面的第一種可能的實(shí)現(xiàn)方式,在第三方面的第二種可能的實(shí)現(xiàn)方式中,所述第一獲取子單元,包括:
[0043]第一接收子單元,用于接收所述編譯服務(wù)器發(fā)送的所述第二目錄樹(shù)中的各個(gè)依賴(lài)文件與路徑信息之間的映射關(guān)系;
[0044]第一查詢(xún)子單元,用于根據(jù)所述映射關(guān)系,查詢(xún)得到所述待編譯文件所依賴(lài)的依賴(lài)文件對(duì)應(yīng)的路徑信息。
[0045]結(jié)合第三方面,在第三方面的第三種可能的實(shí)現(xiàn)方式中,所述第一獲取單元,包括:
[0046]發(fā)送單元,用于向所述編譯服務(wù)器發(fā)送所述待編譯文件所依賴(lài)的依賴(lài)文件的文件信息,所述文件信息至少包括所述依賴(lài)文件的文件名稱(chēng);
[0047]第二接收子單元,用于接收所述編譯服務(wù)器根據(jù)所述依賴(lài)文件的文件信息獲得的所述依賴(lài)文件;由編譯服務(wù)器查詢(xún)所述第二目錄樹(shù)中的各個(gè)依賴(lài)文件與路徑信息之間的映射關(guān)系,得到的所述依賴(lài)文件的路徑信息,并依據(jù)所述路徑信息獲得所述依賴(lài)文件;所述映射關(guān)系保存在所述編譯服務(wù)器中。
[0048]結(jié)合第三方面,在第三方面的第四種可能的實(shí)現(xiàn)方式中,所述第一查詢(xún)單元,包括:
[0049]第三獲取子單元,用于獲取所述第一目錄樹(shù)中各個(gè)待編譯文件的依賴(lài)關(guān)系,所述依賴(lài)關(guān)系用于存儲(chǔ)各個(gè)待編譯文件和各個(gè)所述待編譯文件所依賴(lài)的依賴(lài)文件之間的對(duì)應(yīng)關(guān)系;
[0050]第二查詢(xún)子單元,用于根據(jù)所述依賴(lài)關(guān)系,查詢(xún)得到所述待編譯文件所依賴(lài)的依賴(lài)文件。
[0051]結(jié)合第三方面,在第三方面的第五種可能的實(shí)現(xiàn)方式中,所述裝置還包括:
[0052]查找單元,用于在所述第一目錄樹(shù)中查找是否存在所述待編譯文件所依賴(lài)的依賴(lài)文件;當(dāng)所述第一目錄樹(shù)中不存在所述待編譯文件所依賴(lài)的依賴(lài)文件時(shí),輸出使所述第一獲取單元執(zhí)行相應(yīng)動(dòng)作的信號(hào)。
[0053]根據(jù)本公開(kāi)實(shí)施例的第四方面,提供一種程序編譯裝置,包括:
[0054]第一獲取單元,用于獲取Android源代碼;[0055]第一編譯單元,用于編譯所述Android源代碼得到第二目錄樹(shù),并保存所述第二目錄樹(shù)中的各個(gè)依賴(lài)文件與路徑信息的映射關(guān)系;所述映射關(guān)系用于使編譯主機(jī)獲取待編譯文件所依賴(lài)的依賴(lài)文件,并根據(jù)所述依賴(lài)文件編譯第一目錄樹(shù)中的待編譯文件得到目標(biāo)文件。
[0056]結(jié)合第四方面,在第四方面的第一種可能的實(shí)現(xiàn)方式中,所述裝置還包括:
[0057]檢測(cè)單元,用于檢測(cè)編譯主機(jī)中存儲(chǔ)的Android源代碼是否被修改;
[0058]源代碼更新單元,用于當(dāng)檢測(cè)到編譯主機(jī)中的所述Android源代碼被修改時(shí),依據(jù)修改后的更新編譯服務(wù)器中存儲(chǔ)的Android源代碼;
[0059]第二編譯單元,用于編譯更新后的Android源代碼,更新所述第二目錄樹(shù)中的各個(gè)依賴(lài)文件。
[0060]應(yīng)當(dāng)理解的是,以上的一般描述和后文的細(xì)節(jié)描述僅是示例性和解釋性的,并不能限制本公開(kāi)。
[0061]本公開(kāi)的實(shí)施例提供的技術(shù)方案可以包括以下有益效果:首先從存儲(chǔ)在編譯主機(jī)上的第一目錄樹(shù)中,查詢(xún)編譯選擇的待編譯文件依賴(lài)于哪些(或哪個(gè))依賴(lài)文件,確定待編譯文件所依賴(lài)的依賴(lài)文件后,從存儲(chǔ)在編譯服務(wù)器上的第二目錄樹(shù)中,獲取所述依賴(lài)文件;然后,利用所述依賴(lài)文件編譯所述待編譯文件,得到最終的目標(biāo)文件。實(shí)現(xiàn)了在編譯Android源代碼時(shí),能夠依賴(lài)于除待編譯文件所在的目錄樹(shù)之外的其它的目錄樹(shù)(第二目錄樹(shù)),無(wú)需研發(fā)人員下載維護(hù)一套完整的Android源代碼,只需下載本模塊對(duì)應(yīng)的源代碼,減小了硬盤(pán)空間的占用。而且,能夠直接從第二目錄樹(shù)中獲得編譯得到本模塊的目標(biāo)文件所需的依賴(lài)文件,無(wú)需通過(guò)編譯得到所述依賴(lài)文件,從而節(jié)省了編譯依賴(lài)文件占用的時(shí)間和資源。因此,本公開(kāi)提供的程序編譯方法大大減少了所需的硬盤(pán)空間及編譯時(shí)間,提高了系統(tǒng)開(kāi)發(fā)效率。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0062]此處的附圖被并入說(shuō)明書(shū)中并構(gòu)成本說(shuō)明書(shū)的一部分,示出了符合本公開(kāi)的實(shí)施例,并與說(shuō)明書(shū)一起用于解釋本公開(kāi)的原理。
[0063]圖1是根據(jù)一示例性實(shí)施例示出的一種程序編譯方法的流程圖。
[0064]圖2是根據(jù)一示例性實(shí)施例示出的圖1中步驟S120的一種流程圖;
[0065]圖3是根據(jù)一示例性實(shí)施例示出的圖1中步驟S120的另一種流程圖;
[0066]圖4是根據(jù)一示例性實(shí)施例示出的另一種程序編譯方法的流程圖;
[0067]圖5是根據(jù)一示例性實(shí)施例示出的一種目標(biāo)文件與依賴(lài)文件之間的依賴(lài)關(guān)系圖;
[0068]圖6是根據(jù)一示例性實(shí)施例示出的一種編譯方法的流程圖;
[0069]圖7是根據(jù)一示例性實(shí)施例示出的另一種程序編譯方法的流程圖;
[0070]圖8是根據(jù)一示例性實(shí)施例示出的一種程序編譯裝置的框圖;
[0071]圖9是根據(jù)一示例性實(shí)施例示出的另一種程序編譯裝置的框圖;
[0072]圖10是根據(jù)一示例性實(shí)施例示出的一種用于實(shí)現(xiàn)程序編譯的裝置的框圖;
[0073]圖11是根據(jù)一示例性實(shí)施例示出的一種用于實(shí)現(xiàn)程序編譯的服務(wù)器的框圖。
【具體實(shí)施方式】[0074]這里將詳細(xì)地對(duì)示例性實(shí)施例進(jìn)行說(shuō)明,其示例表示在附圖中。下面的描述涉及附圖時(shí),除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實(shí)施例中所描述的實(shí)施方式并不代表與本公開(kāi)相一致的所有實(shí)施方式。相反,它們僅是與如所附權(quán)利要求書(shū)中所詳述的、本公開(kāi)的一些方面相一致的裝置和方法的例子。
[0075]例如,某個(gè)模塊對(duì)應(yīng)目標(biāo)文件A,而目標(biāo)文件A依賴(lài)于文件B(即由文件B創(chuàng)建目標(biāo)文件A),Make工具在編譯目標(biāo)文件A時(shí),首先查找是否存在滿(mǎn)足依賴(lài)條件的文件B,如果不存在,則編譯得到文件B之后,才能利用文件B編譯得到目標(biāo)文件A。由此可知,系統(tǒng)研發(fā)人員可能只需要開(kāi)發(fā)和測(cè)試某個(gè)模塊或小項(xiàng)目,但是需要在本地維護(hù)一套完成的Android源代碼。
[0076]圖1是根據(jù)一示例性實(shí)施例示出的一種程序編譯方法的流程圖,如圖1所示,所述程序編譯方法用于編譯主機(jī)中,包括以下步驟:
[0077]在步驟SllO中,從第一目錄樹(shù)中查詢(xún)編譯待編譯文件所依賴(lài)的依賴(lài)文件。
[0078]本示例性實(shí)施例提供的程序編譯方法主要用于編譯Android源代碼。所述待編譯文件可以是整個(gè)Android源代碼開(kāi)發(fā)系統(tǒng)中劃分的某個(gè)模塊所對(duì)應(yīng)的源代碼。
[0079]在編譯之前,需要查找待編譯文件所依賴(lài)的依賴(lài)文件,例如,某個(gè)模塊編譯完成后得到目標(biāo)文件A,而目標(biāo)文件A依賴(lài)于文件B,即由文件B編譯得到目標(biāo)文件A,在得到目標(biāo)文件A之前,首先需要確定目標(biāo)文件A依賴(lài)于哪個(gè)文件。
[0080]所述待編譯文件為Android源代碼,例如,目標(biāo)為A,則對(duì)應(yīng)的待編譯文件為目標(biāo)A對(duì)應(yīng)的源代碼。所述第一目錄樹(shù)可以由編譯主機(jī)編譯得到,也可以由編譯服務(wù)器編譯或其它的編譯主機(jī)編譯得到。
[0081]在本公開(kāi)的一個(gè)示例性實(shí)施例中,步驟SllO可以包括以下方法流程:
[0082]I)獲取所述第一目錄樹(shù)中各個(gè)待編譯文件的依賴(lài)關(guān)系,所述依賴(lài)關(guān)系用于描述各個(gè)待編譯文件和各個(gè)所述待編譯文件所依賴(lài)的依賴(lài)文件之間的對(duì)應(yīng)關(guān)系??梢酝ㄟ^(guò)Make工具中的makefile文件描述An droid源代碼的各個(gè)模塊之間的相互依賴(lài)關(guān)系,即makefile文件規(guī)定了最終得到的目標(biāo)文件(可執(zhí)行文件)與生成該目標(biāo)文件的各個(gè)依賴(lài)文件之間的關(guān)系。
[0083]2)根據(jù)所述依賴(lài)關(guān)系,查詢(xún)得到所述待編譯文件所依賴(lài)的依賴(lài)文件。
[0084]在步驟S120中,從編譯服務(wù)器編譯Android源代碼得到的第二目錄樹(shù)中,獲取所述依賴(lài)文件。
[0085]編譯服務(wù)器對(duì)獲得的與編譯主機(jī)所要編譯的Android源代碼屬于同一版本的Android源代碼編譯得到第二目錄樹(shù),所述編譯主機(jī)從所述第二目錄樹(shù)中獲取所述待編譯文件所依賴(lài)的符合條件的依賴(lài)文件。例如,符合條件可以是符合時(shí)間條件等。
[0086]對(duì)于同一版本的Android源代碼而言,某個(gè)目標(biāo)與該目標(biāo)所依賴(lài)的依賴(lài)文件之間的依賴(lài)關(guān)系是相同的,即編譯主機(jī)對(duì)某一版本的Android源代碼編譯得到的第一目錄樹(shù),與編譯服務(wù)器(或另一編譯主機(jī))對(duì)所述某一版本的Android源代碼編譯得到的第二目錄樹(shù),兩個(gè)目錄樹(shù)中同一目標(biāo)的依賴(lài)關(guān)系是相同的。
[0087]在本公開(kāi)的一個(gè)示例性實(shí)施例中,如圖2所示,步驟S120可以包括以下子步驟:
[0088]S121,從所述第二目錄樹(shù)中獲取所述依賴(lài)文件在所述編譯服務(wù)器中的路徑信息。
[0089]在本公開(kāi)的一個(gè)示例性實(shí)施例中,獲取所述依賴(lài)文件的路徑信息可以通過(guò)以下流程實(shí)現(xiàn):
[0090]編譯主機(jī)接收所述編譯服務(wù)器發(fā)送的所述第二目錄樹(shù)中的各個(gè)依賴(lài)文件與路徑信息之間的映射關(guān)系;然后,根據(jù)所述映射關(guān)系,查詢(xún)得到所依賴(lài)的依賴(lài)文件對(duì)應(yīng)的路徑信息。即先將所述映射關(guān)系存儲(chǔ)在編譯主機(jī)上,在編譯主機(jī)上查詢(xún)所述映射關(guān)系獲得所述依賴(lài)文件的路徑信息。
[0091]編譯主機(jī)獲得所述映射關(guān)系,可以首先由編譯主機(jī)向編譯服務(wù)器發(fā)送路徑請(qǐng)求消息,所述路徑請(qǐng)求消息用于請(qǐng)求編譯服務(wù)器發(fā)送依賴(lài)文件的路徑信息;然后,由編譯服務(wù)器響應(yīng)所述路徑請(qǐng)求消息,向編譯主機(jī)發(fā)送第二目錄樹(shù)中的各個(gè)依賴(lài)文件與路徑信息之間的映射關(guān)系。還可以在編譯服務(wù)器每次更新所述第二目錄樹(shù)后,自動(dòng)向各個(gè)編譯主機(jī)下發(fā)更新后的第二目錄樹(shù)中的各個(gè)依賴(lài)文件與路徑信息之間的映射關(guān)系,此種方式能夠降低各個(gè)編譯主機(jī)對(duì)編譯服務(wù)器的訪問(wèn)量,從而降低編譯服務(wù)器的硬件配置要求。
[0092]S122,依據(jù)所述路徑信息獲取所述依賴(lài)文件。編譯主機(jī)將獲得的所述路徑信息發(fā)送給編譯服務(wù)器,然后,由編譯服務(wù)器獲取所述路徑信息對(duì)應(yīng)的存儲(chǔ)空間中存儲(chǔ)的依賴(lài)文件,并下發(fā)給所述編譯主機(jī)。
[0093]在本公開(kāi)的另一個(gè)示例性實(shí)施例中,如圖3所示,步驟S120可以包括以下子步驟:
[0094]S123,向編譯服務(wù)器發(fā)送所述待編譯文件所依賴(lài)的依賴(lài)文件的文件信息,所述文件信息至少包括所述依賴(lài)文件的文件名稱(chēng)。
[0095]當(dāng)所述依賴(lài)文件為編譯得到的某個(gè)目標(biāo)文件時(shí),所述文件名稱(chēng)即所述目標(biāo)文件的文件名稱(chēng)。
[0096]S124,接收所述編譯服務(wù)器根據(jù)所述依賴(lài)文件的文件信息獲得的所述依賴(lài)文件;由編譯服務(wù)器查詢(xún)所述第二目錄樹(shù)中的各個(gè)依賴(lài)文件與路徑信息之間的映射關(guān)系,得到的所述依賴(lài)文件的路徑信息,并依據(jù)所述路徑信息獲得所述依賴(lài)文件;所述映射關(guān)系保存在所述編譯服務(wù)器中。
[0097]編譯服務(wù)器根據(jù)所述編譯主機(jī)發(fā)送的依賴(lài)文件的文件信息,在編譯服務(wù)器中查找所述依賴(lài)文件的路徑信息,并獲取所述路徑信息對(duì)應(yīng)的存儲(chǔ)空間中存儲(chǔ)的文件,并下發(fā)給所述編譯主機(jī)。其中,所述依賴(lài)文件的路徑信息查詢(xún)第二目錄樹(shù)中各個(gè)文件與路徑信息之間的映射關(guān)系得到。
[0098]在步驟S130中,根據(jù)所述依賴(lài)文件編譯所述待編譯文件,得到目標(biāo)文件。
[0099]本示例性實(shí)施例提供的程序編譯方法,首先從編譯主機(jī)中的第一目錄樹(shù)中,查詢(xún)待編譯文件依賴(lài)于哪些依賴(lài)文件,然后,從存儲(chǔ)在編譯服務(wù)器上的第二目錄樹(shù)中,獲取所述依賴(lài)文件;再利用所述依賴(lài)文件編譯所述待編譯文件,得到最終的目標(biāo)文件,從而實(shí)現(xiàn)了在編譯Android源代碼時(shí),能夠依賴(lài)于除待編譯文件所在的目錄樹(shù)之外的其它的目錄樹(shù)(第二目錄樹(shù))。研發(fā)人員只需在本地保存所述待編譯文件(本模塊對(duì)應(yīng)的源代碼),無(wú)需下載維護(hù)一套完整的Android源代碼,減小了硬盤(pán)空間的占用。而且,能夠直接從第二目錄樹(shù)中獲得符合條件的依賴(lài)文件,無(wú)需通過(guò)編譯得到所述依賴(lài)文件,從而節(jié)省了編譯依賴(lài)文件占用的時(shí)間和資源。因此,本公開(kāi)提供的程序編譯方法大大減少了所需的硬盤(pán)空間及編譯時(shí)間,提聞了系統(tǒng)開(kāi)發(fā)效率。
[0100]圖4是根據(jù)一示例性實(shí)施例示出的另一種程序編譯方法的流程圖,如圖4所示,所述方法應(yīng)用于編譯主機(jī)中,可以用于編譯Android源代碼,包括以下步驟:
[0101]在步驟SllO中,從第一目錄樹(shù)中查詢(xún)編譯待編譯文件所依賴(lài)的依賴(lài)文件。
[0102]在步驟S210中,在所述第一目錄樹(shù)中查找是否存在所述待編譯文件所依賴(lài)的依賴(lài)文件。
[0103]當(dāng)所述第一目錄樹(shù)中不存在所述待編譯文件所依賴(lài)的依賴(lài)文件時(shí),在步驟S120,從編譯服務(wù)器編譯Android源代碼得到的第二目錄樹(shù)中,獲取所述依賴(lài)文件。
[0104]當(dāng)所述第一目錄樹(shù)中存在所述待編譯文件所依賴(lài)的依賴(lài)文件時(shí),在步驟S220中,從所述第一目錄樹(shù)中獲取所述依賴(lài)文件。
[0105]在步驟S130中,根據(jù)所述依賴(lài)文件編譯所述待編譯文件,得到目標(biāo)文件。
[0106]本示例性實(shí)施例示出的程序編譯方法,在編譯Android源代碼的過(guò)程中,首先確定待編譯文件依賴(lài)于哪些依賴(lài)文件,在編譯主機(jī)本地存儲(chǔ)的第一目錄樹(shù)中查找是否存在符合條件的所述依賴(lài)文件,如果存在,優(yōu)先從第一目錄樹(shù)中獲取所述依賴(lài)文件,降低了編譯服務(wù)器的訪問(wèn)量,從而能夠降低編譯服務(wù)器的硬件要求。
[0107]下面結(jié)合圖5所示的目標(biāo)文件與依賴(lài)文件之間的依賴(lài)關(guān)系對(duì)上述的程序編譯流程進(jìn)行說(shuō)明。圖5示出了目標(biāo)文件G與所有的依賴(lài)文件之間的關(guān)系,具體的,目標(biāo)文件G依賴(lài)于E和F ;目標(biāo)文件E依賴(lài)于C ;目標(biāo)文件F依賴(lài)于D ;目標(biāo)文件C依賴(lài)于A ;目標(biāo)文件D依賴(lài)于A和B。
[0108]假設(shè),編譯主機(jī)中待編譯文件對(duì)應(yīng)的目標(biāo)文件為G,則根據(jù)圖5所示的依賴(lài)關(guān)系圖,可查找到目標(biāo)文件G所依賴(lài)的依賴(lài)文件為E和F。然后,從編譯服務(wù)器中存儲(chǔ)的第二目錄樹(shù)中獲取符合條件的依賴(lài)文件E和F。根據(jù)依賴(lài)文件編譯待編譯文件得到目標(biāo)文件G。
[0109]可選地,當(dāng)查找到目標(biāo)文件G的依賴(lài)文件為E和F時(shí),可以先查找編譯主機(jī)中的第一目錄樹(shù)中是否存在依賴(lài)文件E和F,當(dāng)?shù)谝荒夸洏?shù)中存在依賴(lài)文件E和F時(shí),優(yōu)先從第一目錄樹(shù)中獲取所述依賴(lài)文件E和F,從而降低編譯主機(jī)對(duì)編譯服務(wù)器的訪問(wèn)量。
[0110]圖6是根據(jù)一示例性實(shí)施例示出的一種程序編譯方法的流程圖,如圖6所示,所述方法應(yīng)用于編譯服務(wù)器,包括以下步驟:
[0111]在步驟S610中,獲取Android源代碼。
[0112]編譯服務(wù)器需要獲取與編譯主機(jī)上的源代碼版本相同的Android源代碼。
[0113]在步驟S620中,編譯所述Android源代碼得到第二目錄樹(shù),并保存所述第二目錄樹(shù)中的各個(gè)依賴(lài)文件與路徑信息的映射關(guān)系;所述映射關(guān)系用于使編譯主機(jī)獲取待編譯文件所依賴(lài)的依賴(lài)文件,并根據(jù)所述依賴(lài)文件編譯第一目錄樹(shù)中的待編譯文件得到目標(biāo)文件。
[0114]在本公開(kāi)的一個(gè)示例性實(shí)施例中,編譯主機(jī)根據(jù)編譯服務(wù)器中的所述映射關(guān)系獲取待編譯文件所依賴(lài)的依賴(lài)文件,可以是編譯服務(wù)器將所述映射關(guān)系發(fā)送給編譯主機(jī),編譯主機(jī)根據(jù)所述映射關(guān)系獲取待編譯文件所依賴(lài)的依賴(lài)文件的路徑信息,然后,編譯主機(jī)將所述路徑信息發(fā)送給編譯服務(wù)器,由編譯服務(wù)器獲取所述路徑信息對(duì)應(yīng)的存儲(chǔ)空間中存儲(chǔ)的依賴(lài)文件,并下發(fā)給所述編譯主機(jī)。
[0115]在本公開(kāi)的另一個(gè)示例性實(shí)施例中,編譯主機(jī)向編譯服務(wù)器發(fā)送所述依賴(lài)文件的文件信息,所述文件信息至少包括所述依賴(lài)文件的文件名稱(chēng)。
[0116]編譯服務(wù)器根據(jù)所述依賴(lài)文件的文件信息,從所述映射關(guān)系中查詢(xún)所述依賴(lài)文件的路徑信息,并根據(jù)所述路徑信息獲取所述依賴(lài)文件下發(fā)給編譯主機(jī)。
[0117]本示例性實(shí)施例提供的程序編譯方法,編譯服務(wù)器編譯獲得的Android源代碼得到第二目錄樹(shù),并獲得第二目錄樹(shù)中各個(gè)文件與路徑信息之間的映射關(guān)系。編譯主機(jī)根據(jù)所述映射關(guān)系,從第二目錄樹(shù)中獲得存儲(chǔ)的待編譯文件所依賴(lài)的依賴(lài)文件,從而避免編譯主機(jī)在本地編譯才能獲得所述依賴(lài)文件,節(jié)省了編譯依賴(lài)文件占用的時(shí)間和資源。而且,所述編譯主機(jī)無(wú)需在本地下載維護(hù)一套完整的Android源代碼,只需下載本模塊對(duì)應(yīng)的源代碼,減小了硬盤(pán)空間的占用。大大減少了所需的硬盤(pán)空間及編譯時(shí)間,提高了系統(tǒng)開(kāi)發(fā)效率。
[0118]由于Android源代碼非常龐大,在Android源代碼的系統(tǒng)研發(fā)時(shí),通常將Android源代碼系統(tǒng)項(xiàng)目分解為多個(gè)容易管理的模塊,不同研發(fā)組負(fù)責(zé)不同的模塊,因此,編譯服務(wù)器需要獲取各個(gè)模塊的最新修改的Android源代碼。圖7是根據(jù)一示例性實(shí)施例示出的另一種程序編譯方法的流程圖,如圖7所示,所述方法包括以下步驟:
[0119]在步驟S610中,獲取Android源代碼。
[0120]在步驟S620中,編譯所述Android源代碼得到第二目錄樹(shù),并保存所述第二目錄樹(shù)中的各個(gè)依賴(lài)文件與路徑信息的映射關(guān)系。所述映射關(guān)系用于使編譯主機(jī)獲取待編譯文件所依賴(lài)的依賴(lài)文件,并根據(jù)所述依賴(lài)文件編譯第一目錄樹(shù)中的待編譯文件得到目標(biāo)文件。
[0121]在步驟S710中,檢測(cè)編譯主機(jī)中的所述Android源代碼是否被修改。
[0122]在本公開(kāi)的一個(gè)示例性實(shí)施例中,各個(gè)編譯主機(jī)在編譯過(guò)程中修改Android源代碼后,向中心服務(wù)器上傳修改后的Android源代碼,編譯服務(wù)器從中心服務(wù)器中存儲(chǔ)的各個(gè)模塊(目標(biāo)文件)對(duì)應(yīng)的Android源代碼。
[0123]可選地,編譯主機(jī)可以在空閑狀態(tài)時(shí),向中心服務(wù)器上傳修改后的Android源代碼。
[0124]編譯服務(wù)器比較在本地存儲(chǔ)的Android源代碼與中心服務(wù)器中相對(duì)應(yīng)的Android源代碼是否相同,如果不同,確定Android源代碼有更新。需要說(shuō)明的是,比較同一版本同一模塊在本地存儲(chǔ)的Android源代碼及中心服務(wù)器中存儲(chǔ)的Android源代碼是否相同。
[0125]可選地,編譯服務(wù)器可以直接從各個(gè)編譯主機(jī)上獲取各個(gè)模塊(目標(biāo)文件)對(duì)應(yīng)的Android源代碼。
[0126]在步驟S720中,當(dāng)檢測(cè)到編譯主機(jī)中的所述Android源代碼被修改時(shí),依據(jù)修改后的源代碼,更新所述Android源代碼。
[0127]系統(tǒng)研發(fā)組對(duì)本模塊的Android源代碼編譯研發(fā)的過(guò)程中,必然會(huì)修改本模塊的Android源代碼,因此,需要對(duì)應(yīng)更新編譯服務(wù)器中存儲(chǔ)的Android源代碼,以及更新第二目錄樹(shù)。
[0128]在步驟S730中,編譯更新后的Android源代碼,更新所述第二目錄樹(shù)中的各個(gè)依賴(lài)文件。
[0129]然后,編譯主機(jī)獲得待編譯文件所依賴(lài)的最新的依賴(lài)文件,并根據(jù)所述最新的依賴(lài)文件編譯所述待編譯文件得到最終的目標(biāo)文件。
[0130]本示例性實(shí)施例提供的程序編譯方法,能夠根據(jù)各個(gè)模塊修改后的Android源代碼更新第二目錄樹(shù)中相應(yīng)的依賴(lài)文件,保證第二目錄樹(shù)中的依賴(lài)文件總是最新的依賴(lài)文件,進(jìn)而將最新的依賴(lài)文件提供給對(duì)應(yīng)的編譯主機(jī),使編譯主機(jī)總是能從第二目錄樹(shù)中獲得符合條件的依賴(lài)文件。
[0131]相應(yīng)于上述的程序編譯方法,本公開(kāi)還提供了程序編譯裝置實(shí)施例。
[0132]圖8是根據(jù)一示例性實(shí)施例示出的一種程序編譯裝置的框圖,該裝置應(yīng)用于編譯主機(jī)中,主要用于編譯Android源代碼,如圖8所示,該裝置包括第一查詢(xún)單元110,第一獲取單元120和編譯單元130。
[0133]第一查詢(xún)單元110被配置為從第一目錄樹(shù)中查詢(xún)編譯待編譯文件所依賴(lài)的依賴(lài)文件。
[0134]在本公開(kāi)的一個(gè)示例性實(shí)施例中,所述第一查詢(xún)單元110可以包括:第三獲取子單元和第二查詢(xún)子單元;
[0135]第三獲取子單元被配置為獲取所述第一目錄樹(shù)中各個(gè)待編譯文件的依賴(lài)關(guān)系,所述依賴(lài)關(guān)系用于存儲(chǔ)各個(gè)待編譯文件和各個(gè)所述待編譯文件所依賴(lài)的依賴(lài)文件之間的對(duì)應(yīng)關(guān)系;
[0136]第二查詢(xún)子單元被配置為根據(jù)所述依賴(lài)關(guān)系,查詢(xún)得到所述待編譯文件所依賴(lài)的依賴(lài)文件。
[0137]所述待編譯文件為Android源代碼,例如,目標(biāo)為A,則對(duì)應(yīng)的待編譯文件為目標(biāo)A對(duì)應(yīng)的源代碼。所述第一目錄樹(shù)可以由編譯主機(jī)編譯得到,也可以由編譯服務(wù)器編譯或其它的編譯主機(jī)編譯得到。
[0138]第一獲取單元120被配置為從編譯服務(wù)器編譯Android源代碼得到的第二目錄樹(shù)中,獲取所述依賴(lài)文件。
[0139]在本公開(kāi)的一個(gè)示例性實(shí)施例中,所述第一獲取單元可以包括:第一獲取子單元和第二獲取子單元;
[0140]所述第一獲取子單元被配置為從所述第二目錄樹(shù)中獲取所述依賴(lài)文件在所述編譯服務(wù)器中的路徑信息。
[0141]所述第一獲取子單元可以包括第一接收子單元和第一查詢(xún)子單元;
[0142]所述第一接收子單元被配置為接收所述編譯服務(wù)器發(fā)送的所述第二目錄樹(shù)中的各個(gè)依賴(lài)文件與路徑信息之間的映射關(guān)系。
[0143]所述第一查詢(xún)子單元被配置為根據(jù)所述映射關(guān)系,查詢(xún)得到所述待編譯文件所依賴(lài)的依賴(lài)文件對(duì)應(yīng)的路徑信息。
[0144]所述第二獲取子單元被配置為根據(jù)所述路徑信息獲取所述依賴(lài)文件。
[0145]在本公開(kāi)的另一個(gè)示例性實(shí)施例中,所述第一獲取單元可以包括:發(fā)送單元和第二接收子單元;
[0146]所述發(fā)送單元被配置為向所述編譯服務(wù)器發(fā)送所述待編譯文件所依賴(lài)的依賴(lài)文件的文件信息,所述文件信息至少包括所述依賴(lài)文件的文件名稱(chēng)。
[0147]所述第二接收子單元被配置為接收所述編譯服務(wù)器根據(jù)所述依賴(lài)文件的文件信息獲得的所述依賴(lài)文件;由編譯服務(wù)器查詢(xún)所述第二目錄樹(shù)中的各個(gè)依賴(lài)文件與路徑信息之間的映射關(guān)系,得到的所述依賴(lài)文件的路徑信息,并依據(jù)所述路徑信息獲得所述依賴(lài)文件;所述映射關(guān)系保存在所述編譯服務(wù)器中。
[0148]編譯單元130被配置為根據(jù)所述依賴(lài)文件編譯所述待編譯文件,得到目標(biāo)文件。[0149]可選地,如圖8所示,所述程序編譯裝置還包括:查找單元140。所述查找單元140被配置為在所述第一目錄樹(shù)中查找是否存在所述待編譯文件所依賴(lài)的依賴(lài)文件;當(dāng)所述第一目錄樹(shù)中不存在所述待編譯文件所依賴(lài)的依賴(lài)文件時(shí),輸出使所述第一獲取單元執(zhí)行相應(yīng)動(dòng)作的信號(hào)。
[0150]本實(shí)施例提供的所述程序編譯裝置,利用第一查詢(xún)單元從編譯主機(jī)中的第一目錄樹(shù)中,查詢(xún)待編譯文件依賴(lài)于哪些依賴(lài)文件,然后,通過(guò)第一獲取單元從存儲(chǔ)在編譯服務(wù)器中的第二目錄樹(shù)中,獲取所述依賴(lài)文件;再由編譯單元利用所述依賴(lài)文件編譯所述待編譯文件,得到最終的目標(biāo)文件,從而實(shí)現(xiàn)了在編譯Android源代碼時(shí),能夠依賴(lài)于除待編譯文件所在的目錄樹(shù)之外的其它的目錄樹(shù)(第二目錄樹(shù))。研發(fā)人員只需在本地保存所述待編譯文件(本模塊對(duì)應(yīng)的源代碼),無(wú)需下載維護(hù)一套完整的Android源代碼,減小了硬盤(pán)空間的占用。而且,能夠直接從第二目錄樹(shù)中獲得符合條件的依賴(lài)文件,無(wú)需通過(guò)編譯得到所述依賴(lài)文件,從而節(jié)省了編譯依賴(lài)文件占用的時(shí)間和資源。因此,本公開(kāi)提供的程序編譯方法大大減少了所需的硬盤(pán)空間及編譯時(shí)間,提高了系統(tǒng)開(kāi)發(fā)效率。
[0151]關(guān)于上述實(shí)施例中的裝置,其中各個(gè)單元執(zhí)行操作的具體方式已經(jīng)在有關(guān)該方法的實(shí)施例中進(jìn)行了詳細(xì)描述,此處將不做詳細(xì)闡述說(shuō)明。
[0152]圖9是根據(jù)一示例性實(shí)施例示出的另一種程序編譯裝置的框圖,該程序編譯裝置應(yīng)用于編譯服務(wù)器,如圖9所示,所述裝置包括第一獲取單元210和第一編譯單元220 ;
[0153]第一獲取單元210被配置為獲取Android源代碼。
[0154]第一編譯單元220被配置為編譯所述Android源代碼得到第二目錄樹(shù),并保存所述第二目錄樹(shù)中的各個(gè)依賴(lài)文件與路徑信息的映射關(guān)系;所述映射關(guān)系用于使編譯主機(jī)獲取待編譯文件所依賴(lài)的依賴(lài)文件,并根據(jù)所述依賴(lài)文件編譯第一目錄樹(shù)中的待編譯文件得到目標(biāo)文件。
[0155]可選地,如圖9所示,所述裝置還可以包括檢測(cè)單元230、源代碼更新單元240和第二編譯單元250。
[0156]檢測(cè)單元230被配置為檢測(cè)編譯主機(jī)中存儲(chǔ)的Android源代碼是否被修改。
[0157]源代碼更新單元240被配置為當(dāng)檢測(cè)到編譯主機(jī)中的所述Android源代碼被修改時(shí),依據(jù)修改后的更新編譯服務(wù)器中存儲(chǔ)的Android源代碼。
[0158]第二編譯單元250被配置為編譯更新后的Android源代碼,更新所述第二目錄樹(shù)中的各個(gè)依賴(lài)文件。
[0159]可選地,圖9所示的程序編譯裝置還可以包括第一發(fā)送單元和第一查找單元。
[0160]所述第一發(fā)送單元被配置為將編譯服務(wù)器中的所述映射關(guān)系發(fā)送給各個(gè)編譯主機(jī),由所述編譯主機(jī)根據(jù)所述映射關(guān)系獲取所述待編譯文件所依賴(lài)的依賴(lài)文件的路徑信息,并提供給所述編譯服務(wù)器。
[0161]所述第一查找單元被配置為根據(jù)編譯主機(jī)提供的路徑信息獲取所述路徑信息的存儲(chǔ)空間中存儲(chǔ)的依賴(lài)文件。
[0162]可選地,圖9所示的程序編譯裝置還可以包括接收單元,第二查找單元和第二發(fā)送單元。
[0163]所述接收單元被配置為接收編譯主機(jī)上傳的所述待編譯文件所依賴(lài)的依賴(lài)文件的文件信息,所述文件信息至少包括所述依賴(lài)文件的文件名稱(chēng);[0164]所述第二查找單元被配置為根據(jù)編譯服務(wù)器中存儲(chǔ)的各個(gè)依賴(lài)文件與路徑信息之間的映射關(guān)系,查找所述依賴(lài)文件對(duì)應(yīng)的路徑信息,并根據(jù)所述路徑信息獲取所述依賴(lài)文件。
[0165]所述發(fā)送單元被配置為將獲得的所述依賴(lài)文件下發(fā)給所述編譯主機(jī);所述依賴(lài)文件用于使編譯主機(jī)編譯得到所述待編譯文件對(duì)應(yīng)的目標(biāo)文件。
[0166]本實(shí)施例提供的程序編譯裝置,由第一獲取單元獲取Android源代碼,利用第一編譯單元編譯所述Android源代碼得到第二目錄樹(shù),并保存所述第二目錄樹(shù)中的各個(gè)依賴(lài)文件與路徑信息的映射關(guān)系;然后,編譯主機(jī)根據(jù)所述映射關(guān)系獲取待編譯文件所依賴(lài)的依賴(lài)文件,并根據(jù)所述依賴(lài)文件編譯第一目錄樹(shù)中的待編譯文件得到目標(biāo)文件。實(shí)現(xiàn)了在編譯Android源代碼時(shí),能夠依賴(lài)于除待編譯文件所在的目錄樹(shù)之外的其它的目錄樹(shù)(第二目錄樹(shù))。避免編譯主機(jī)在本地編譯才能獲得所述依賴(lài)文件,節(jié)省了編譯依賴(lài)文件占用的時(shí)間和資源。而且,所述編譯主機(jī)無(wú)需在本地下載維護(hù)一套完整的Android源代碼,只需下載本模塊對(duì)應(yīng)的源代碼,減小了硬盤(pán)空間的占用。大大減少了所需的硬盤(pán)空間及編譯時(shí)間,提聞了系統(tǒng)開(kāi)發(fā)效率。
[0167]圖10是根據(jù)一示例性實(shí)施例示出的一種用于實(shí)現(xiàn)程序編譯的裝置800的框圖。例如,裝置800可以是移動(dòng)電話,計(jì)算機(jī),數(shù)字廣播終端,消息收發(fā)設(shè)備,游戲控制臺(tái),平板設(shè)備,醫(yī)療設(shè)備,健身設(shè)備,個(gè)人數(shù)字助理等。
[0168]參照?qǐng)D10,裝置800可以包括以下一個(gè)或多個(gè)組件:處理組件802,存儲(chǔ)器804,電源組件806,多媒體組件808,音頻組件810,輸入/輸出(I/O)的接口 812,傳感器組件814,以及通信組件816。
[0169]處理組件802通??刂蒲b置800的整體操作,諸如與顯示,電話呼叫,數(shù)據(jù)通信,相機(jī)操作和記錄操作相關(guān)聯(lián)的操作。處理元件802可以包括一個(gè)或多個(gè)處理器820來(lái)執(zhí)行指令,以完成上述的方法的全部或部分步驟。此外,處理組件802可以包括一個(gè)或多個(gè)模塊,便于處理組件802和其他組件之間的交互。例如,處理部件802可以包括多媒體模塊,以方便多媒體組件808和處理組件802之間的交互。
[0170]存儲(chǔ)器804被配置為存儲(chǔ)各種類(lèi)型的數(shù)據(jù)以支持在設(shè)備800的操作。這些數(shù)據(jù)的示例包括用于在裝置800上操作的任何應(yīng)用程序或方法的指令,聯(lián)系人數(shù)據(jù),電話簿數(shù)據(jù),消息,圖片,視頻等。存儲(chǔ)器804可以由任何類(lèi)型的易失性或非易失性存儲(chǔ)設(shè)備或者它們的組合實(shí)現(xiàn),如靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM),電可擦除可編程只讀存儲(chǔ)器(EEPR0M),可擦除可編程只讀存儲(chǔ)器(EPR0M),可編程只讀存儲(chǔ)器(PR0M),只讀存儲(chǔ)器(R0M),磁存儲(chǔ)器,快閃存儲(chǔ)器,磁盤(pán)或光盤(pán)。
[0171]電力組件806為裝置800的各種組件提供電力。電力組件806可以包括電源管理系統(tǒng),一個(gè)或多個(gè)電源,及其他與為裝置800生成、管理和分配電力相關(guān)聯(lián)的組件。
[0172]多媒體組件808包括在所述裝置800和用戶(hù)之間的提供一個(gè)輸出接口的屏幕。在一些實(shí)施例中,屏幕可以包括液晶顯示器(IXD)和觸摸面板(TP)。如果屏幕包括觸摸面板,屏幕可以被實(shí)現(xiàn)為觸摸屏,以接收來(lái)自用戶(hù)的輸入信號(hào)。觸摸面板包括一個(gè)或多個(gè)觸摸傳感器以感測(cè)觸摸、滑動(dòng)和觸摸面板上的手勢(shì)。所述觸摸傳感器可以不僅感測(cè)觸摸或滑動(dòng)動(dòng)作的邊界,而且還檢測(cè)與所述觸摸或滑動(dòng)操作相關(guān)的持續(xù)時(shí)間和壓力。在一些實(shí)施例中,多媒體組件808包括一個(gè)前置攝像頭和/或后置攝像頭。當(dāng)設(shè)備800處于操作模式,如拍攝模式或視頻模式時(shí),前置攝像頭和/或后置攝像頭可以接收外部的多媒體數(shù)據(jù)。每個(gè)前置攝像頭和后置攝像頭可以是一個(gè)固定的光學(xué)透鏡系統(tǒng)或具有焦距和光學(xué)變焦能力。
[0173]音頻組件810被配置為輸出和/或輸入音頻信號(hào)。例如,音頻組件810包括一個(gè)麥克風(fēng)(MIC),當(dāng)裝置800處于操作模式,如呼叫模式、記錄模式和語(yǔ)音識(shí)別模式時(shí),麥克風(fēng)被配置為接收外部音頻信號(hào)。所接收的音頻信號(hào)可以被進(jìn)一步存儲(chǔ)在存儲(chǔ)器804或經(jīng)由通信組件816發(fā)送。在一些實(shí)施例中,音頻組件810還包括一個(gè)揚(yáng)聲器,用于輸出音頻信號(hào)。
[0174]I/0接口 812為處理組件802和外圍接口模塊之間提供接口,上述外圍接口模塊可以是鍵盤(pán),點(diǎn)擊輪,按鈕等。這些按鈕可包括但不限于:主頁(yè)按鈕、音量按鈕、啟動(dòng)按鈕和鎖定按鈕。
[0175]傳感器組件814包括一個(gè)或多個(gè)傳感器,用于為裝置800提供各個(gè)方面的狀態(tài)評(píng)估。例如,傳感器組件814可以檢測(cè)到設(shè)備800的打開(kāi)/關(guān)閉狀態(tài),組件的相對(duì)定位,例如所述組件為裝置800的顯示器和小鍵盤(pán),傳感器組件814還可以檢測(cè)裝置800或裝置800一個(gè)組件的位置改變,用戶(hù)與裝置800接觸的存在或不存在,裝置800方位或加速/減速和裝置800的溫度變化。傳感器組件814可以包括接近傳感器,被配置用來(lái)在沒(méi)有任何的物理接觸時(shí)檢測(cè)附近物體的存在。傳感器組件814還可以包括光傳感器,如CMOS或CXD圖像傳感器,用于在成像應(yīng)用中使用。在一些實(shí)施例中,該傳感器組件814還可以包括加速度傳感器,陀螺儀傳感器,磁傳感器,壓力傳感器或溫度傳感器。
[0176]通信組件816被配置為便于裝置800和其他設(shè)備之間有線或無(wú)線方式的通信。裝置800可以接入基于通信標(biāo)準(zhǔn)的無(wú)線網(wǎng)絡(luò),如WiFi,2G或3G,或它們的組合。在一個(gè)示例性實(shí)施例中,通信部件816經(jīng)由廣播信道接收來(lái)自外部廣播管理系統(tǒng)的廣播信號(hào)或廣播相關(guān)信息。在一個(gè)示例性實(shí)施例中,所述通信部件816還包括近場(chǎng)通信(NFC)模塊,以促進(jìn)短程通信。例如,在NFC模塊可基于射頻識(shí)別(RFID)技術(shù),紅外數(shù)據(jù)協(xié)會(huì)(IrDA)技術(shù),超寬帶(UffB)技術(shù),藍(lán)牙(BT)技術(shù)和其他技術(shù)來(lái)實(shí)現(xiàn)。
[0177]在示例性實(shí)施例中,裝置800可以被一個(gè)或多個(gè)應(yīng)用專(zhuān)用集成電路(ASIC)、數(shù)字信號(hào)處理器(DSP)、數(shù)字信號(hào)處理設(shè)備(DSPD)、可編程邏輯器件(PLD)、現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)、控制器、微控制器、微處理器或其他電子元件實(shí)現(xiàn),用于執(zhí)行上述方法。
[0178]在示例性實(shí)施例中,還提供了一種包括指令的非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),例如包括指令的存儲(chǔ)器804,上述指令可由裝置800的處理器820執(zhí)行以完成上述方法。例如,所述非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是ROM、隨機(jī)存取存儲(chǔ)器(RAM)、CD-ROM、磁帶、軟盤(pán)和光數(shù)據(jù)存儲(chǔ)設(shè)備等。
[0179]一種非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),當(dāng)所述存儲(chǔ)介質(zhì)中的指令由移動(dòng)終端的處理器執(zhí)行時(shí),使得移動(dòng)終端能夠執(zhí)行一種程序編譯方法,所述方法包括:
[0180]從第一目錄樹(shù)中查詢(xún)編譯待編譯文件所依賴(lài)的依賴(lài)文件;
[0181]從編譯服務(wù)器編譯Android源代碼得到的第二目錄樹(shù)中,獲取所述依賴(lài)文件;
[0182]根據(jù)所述依賴(lài)文件編譯所述待編譯文件,得到目標(biāo)文件。
[0183]可選地,從編譯服務(wù)器編譯Android源代碼得到的第二目錄樹(shù)中,獲取所述依賴(lài)文件,采用如下方式:
[0184]從所述第二目錄樹(shù)中獲取所述依賴(lài)文件在所述編譯服務(wù)器中的路徑信息;
[0185]依據(jù)所述路徑信息獲取所述依賴(lài)文件。[0186]可選地,從所述第二目錄樹(shù)中,獲取所述依賴(lài)文件的路徑信息,采用如下方式:
[0187]接收所述編譯服務(wù)器發(fā)送的所述第二目錄樹(shù)中的各個(gè)依賴(lài)文件與路徑信息之間的映射關(guān)系;
[0188]根據(jù)所述映射關(guān)系,查詢(xún)得到所述待編譯文件所依賴(lài)的依賴(lài)文件對(duì)應(yīng)的路徑信
肩、O
[0189]可選地,從編譯服務(wù)器編譯Android源代碼得到的第二目錄樹(shù)中,獲取所述依賴(lài)文件,采用如下方式:
[0190]向所述編譯服務(wù)器發(fā)送所述待編譯文件所依賴(lài)的依賴(lài)文件的文件信息,所述文件信息至少包括所述依賴(lài)文件的文件名稱(chēng);
[0191]接收所述編譯服務(wù)器根據(jù)所述依賴(lài)文件的文件信息獲得的所述依賴(lài)文件;由編譯服務(wù)器查詢(xún)所述第二目錄樹(shù)中的各個(gè)依賴(lài)文件與路徑信息之間的映射關(guān)系,得到的所述依賴(lài)文件的路徑信息,并依據(jù)所述路徑信息獲得所述依賴(lài)文件;所述映射關(guān)系保存在所述編譯服務(wù)器中。
[0192]可選地,所述從第一目錄樹(shù)中查詢(xún)編譯待編譯文件所依賴(lài)的依賴(lài)文件,采用如下方式:
[0193]獲取所述第一目錄樹(shù)中各個(gè)待編譯文件的依賴(lài)關(guān)系,所述依賴(lài)關(guān)系用于存儲(chǔ)各個(gè)待編譯文件和各個(gè)所述待編譯文件所依賴(lài)的依賴(lài)文件之間的對(duì)應(yīng)關(guān)系;
[0194]根據(jù)所述依賴(lài)關(guān)系,查詢(xún)得到所述待編譯文件所依賴(lài)的依賴(lài)文件。
[0195]可選地,所述方法還包括:在所述第一目錄樹(shù)中查找是否存在所述待編譯文件所依賴(lài)的依賴(lài)文件;當(dāng)所述第一目錄樹(shù)中不存在所述待編譯文件所依賴(lài)的依賴(lài)文件時(shí),執(zhí)行所述從編譯服務(wù)器編譯Android源代碼得到的第二目錄樹(shù)中,獲取所述依賴(lài)的步驟。
[0196]圖11是本公開(kāi)實(shí)施例中的結(jié)構(gòu)示意圖。該服務(wù)器1900可因配置或性能不同而產(chǎn)生比較大的差異,可以包括一個(gè)或一個(gè)以上中央處理器(central processing units, CPU)1922 (例如,一個(gè)或一個(gè)以上處理器)和存儲(chǔ)器1932,一個(gè)或一個(gè)以上存儲(chǔ)應(yīng)用程序1942或數(shù)據(jù)1944的存儲(chǔ)介質(zhì)1930 (例如一個(gè)或一個(gè)以上海量存儲(chǔ)設(shè)備)。其中,存儲(chǔ)器1932和存儲(chǔ)介質(zhì)1930可以是短暫存儲(chǔ)或持久存儲(chǔ)。存儲(chǔ)在存儲(chǔ)介質(zhì)1930的程序可以包括一個(gè)或一個(gè)以上模塊(圖示沒(méi)標(biāo)出),每個(gè)模塊可以包括對(duì)服務(wù)器中的一系列指令操作。更進(jìn)一步地,中央處理器1922可以設(shè)置為與存儲(chǔ)介質(zhì)1930通信,在服務(wù)器1900上執(zhí)行存儲(chǔ)介質(zhì)1930中的一系列指令操作。
[0197]服務(wù)器1900還可以包括一個(gè)或一個(gè)以上電源1926,一個(gè)或一個(gè)以上有線或無(wú)線網(wǎng)絡(luò)接口 1950,一個(gè)或一個(gè)以上輸入輸出接口 1958,一個(gè)或一個(gè)以上鍵盤(pán)1956,和/或,一個(gè)或一個(gè)以上操作系統(tǒng) 1941,例如 Windows ServerTM, Mac OS XTM,UnixTM, LinuxTM,F(xiàn)reeBSDTM 等等。
[0198]在示例性實(shí)施例中,還提供了一種包括指令的非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),例如包括指令的存儲(chǔ)介質(zhì)1930,上述指令可由服務(wù)器1900的處理器1922執(zhí)行以完成上述方法。例如,所述非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是ROM、隨機(jī)存取存儲(chǔ)器(RAM)、CD-ROM、磁帶、軟盤(pán)和光數(shù)據(jù)存儲(chǔ)設(shè)備等。
[0199]一種非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),當(dāng)所述存儲(chǔ)介質(zhì)中的指令由服務(wù)器的處理器執(zhí)行時(shí),使得服務(wù)器能夠執(zhí)行一種程序編譯方法,所述方法包括:[0200]獲取Android源代碼;
[0201]得到第二目錄樹(shù),并保存所述第二目錄樹(shù)中的各個(gè)依賴(lài)文件與路徑信息的映射關(guān)系;依據(jù)所述映射關(guān)系用于使編譯主機(jī)獲取待編譯文件所依賴(lài)的依賴(lài)文件,并根據(jù)所述依賴(lài)文件編譯第一目錄樹(shù)中的待編譯文件得到目標(biāo)文件。
[0202]可選地,所述方法還包括:
[0203]檢測(cè)編譯主機(jī)中存儲(chǔ)的Android源代碼是否被修改;
[0204]當(dāng)檢測(cè)到編譯主機(jī)中存儲(chǔ)的所述Android源代碼被修改時(shí),依據(jù)修改后的Android源代碼,更新編譯服務(wù)器中存儲(chǔ)的Android源代碼;
[0205]編譯更新后的Android源代碼,更新所述第二目錄樹(shù)中的各個(gè)依賴(lài)文件。
[0206]可選地,獲取編譯主機(jī)編譯得到的各個(gè)目標(biāo)文件對(duì)應(yīng)的源代碼,采用如下方式:
[0207]編譯服務(wù)器從中心服務(wù)器中獲取各個(gè)目標(biāo)文件對(duì)應(yīng)的Android源代碼,所述Android源代碼由編譯主機(jī)將編譯得到的目標(biāo)文件對(duì)應(yīng)的源代碼上傳至中心服務(wù)器;
[0208]或,
[0209]編譯服務(wù)器從編譯主機(jī)中獲取各個(gè)目標(biāo)文件對(duì)應(yīng)的Android源代碼。
[0210]可選地,所述方法還包括:
[0211]將所述映射關(guān)系發(fā)送給編譯主機(jī),所述映射關(guān)系用于使編譯主機(jī)獲取待編譯文件所依賴(lài)的依賴(lài)文件的路徑信息,根據(jù)所述路徑信息獲取所述依賴(lài)文件,并根據(jù)所述依賴(lài)文件編譯第一目錄樹(shù)中的待編譯文件得到目標(biāo)文件。
[0212]可選地,所述方法還包括:接收編譯主機(jī)發(fā)送的所述待編譯文件所依賴(lài)的依賴(lài)文件的文件信息,所述文件信息至少包括所述依賴(lài)文件的文件名稱(chēng);根據(jù)所述依賴(lài)文件的文件信息,查詢(xún)所述映射關(guān)系獲得所述依賴(lài)文件的路徑信息。
[0213]本領(lǐng)域技術(shù)人員在考慮說(shuō)明書(shū)及實(shí)踐這里公開(kāi)的發(fā)明后,將容易想到本公開(kāi)的其它實(shí)施方案。本申請(qǐng)旨在涵蓋本公開(kāi)的任何變型、用途或者適應(yīng)性變化,這些變型、用途或者適應(yīng)性變化遵循本公開(kāi)的一般性原理并包括本公開(kāi)未公開(kāi)的本【技術(shù)領(lǐng)域】中的公知常識(shí)或慣用技術(shù)手段。說(shuō)明書(shū)和實(shí)施例僅被視為示例性的,本公開(kāi)的真正范圍和精神由下面的權(quán)利要求指出。
[0214]應(yīng)當(dāng)理解的是,本公開(kāi)并不局限于上面已經(jīng)描述并在附圖中示出的精確結(jié)構(gòu),并且可以在不脫離其范圍進(jìn)行各種修改和改變。本公開(kāi)的范圍僅由所附的權(quán)利要求來(lái)限制。
[0215]需要說(shuō)明的是,在本文中,諸如“第一”和“第二”等之類(lèi)的關(guān)系術(shù)語(yǔ)僅僅用來(lái)將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開(kāi)來(lái),而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、物品或者設(shè)備所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過(guò)程、方法、物品或者設(shè)備中還存在另外的相同要素。
【權(quán)利要求】
1.一種程序編譯方法,其特征在于,包括: 從第一目錄樹(shù)中查詢(xún)編譯待編譯文件所依賴(lài)的依賴(lài)文件; 從編譯服務(wù)器編譯Android源代碼得到的第二目錄樹(shù)中,獲取所述依賴(lài)文件; 根據(jù)所述依賴(lài)文件編譯所述待編譯文件,得到目標(biāo)文件。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,從編譯服務(wù)器編譯Android源代碼得到的第二目錄樹(shù)中,獲取所述依賴(lài)文件,采用如下方式: 從所述第二目錄樹(shù)中獲取所述依賴(lài)文件在所述編譯服務(wù)器中的路徑信息; 依據(jù)所述路徑信息獲取所述依賴(lài)文件。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,從所述第二目錄樹(shù)中獲取所述依賴(lài)文件在所述編譯服務(wù)器中的路徑信息,采用如下方式: 接收所述編譯服務(wù)器發(fā)送的所述第二目錄樹(shù)中的各個(gè)依賴(lài)文件與路徑信息之間的映射關(guān)系; 根據(jù)所述映射關(guān)系,查詢(xún)得到所述待編譯文件所依賴(lài)的依賴(lài)文件對(duì)應(yīng)的路徑信息。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,從編譯服務(wù)器編譯Android源代碼得到的第二目錄樹(shù)中,獲取所述依賴(lài)文件,采用如下方式: 向所述編譯服務(wù)器發(fā)送所述待編譯文件所依賴(lài)的依賴(lài)文件的文件信息,所述文件信息至少包括所述依賴(lài)文件的文件名稱(chēng); 接收所述編譯服 務(wù)器根據(jù)所述依賴(lài)文件的文件信息獲得的所述依賴(lài)文件;由編譯服務(wù)器查詢(xún)所述第二目錄樹(shù)中的各個(gè)依賴(lài)文件與路徑信息之間的映射關(guān)系,得到的所述依賴(lài)文件的路徑信息,并依據(jù)所述路徑信息獲得所述依賴(lài)文件;所述映射關(guān)系保存在所述編譯服務(wù)器中。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述從第一目錄樹(shù)中查詢(xún)編譯待編譯文件所依賴(lài)的依賴(lài)文件,采用如下方式: 獲取所述第一目錄樹(shù)中各個(gè)待編譯文件的依賴(lài)關(guān)系,所述依賴(lài)關(guān)系用于存儲(chǔ)各個(gè)待編譯文件和各個(gè)所述待編譯文件所依賴(lài)的依賴(lài)文件之間的對(duì)應(yīng)關(guān)系; 根據(jù)所述依賴(lài)關(guān)系,查詢(xún)得到所述待編譯文件所依賴(lài)的依賴(lài)文件。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 在所述第一目錄樹(shù)中查找是否存在所述待編譯文件所依賴(lài)的依賴(lài)文件; 當(dāng)所述第一目錄樹(shù)中不存在所述待編譯文件所依賴(lài)的依賴(lài)文件時(shí),執(zhí)行所述從編譯服務(wù)器編譯Android源代碼得到的第二目錄樹(shù)中,獲取所述依賴(lài)的步驟。
7.一種程序編譯方法,其特征在于,包括: 獲取Android源代碼; 編譯所述Android源代碼得到第二目錄樹(shù),并保存所述第二目錄樹(shù)中的各個(gè)依賴(lài)文件與路徑信息的映射關(guān)系;所述映射關(guān)系用于使編譯主機(jī)獲取待編譯文件所依賴(lài)的依賴(lài)文件,并根據(jù)所述依賴(lài)文件編譯第一目錄樹(shù)中的待編譯文件得到目標(biāo)文件。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述方法還包括: 檢測(cè)編譯主機(jī)中存儲(chǔ)的Android源代碼是否被修改; 當(dāng)檢測(cè)到編譯主機(jī)中存儲(chǔ)的所述Android源代碼被修改時(shí),依據(jù)修改后的Android源代碼,更新編譯服務(wù)器中存儲(chǔ)的Android源代碼;編譯更新后的Android源代碼,更新所述第二目錄樹(shù)中的各個(gè)依賴(lài)文件。
9.根據(jù)權(quán)利要8所述的方法,其特征在于,獲取編譯主機(jī)編譯得到的各個(gè)目標(biāo)文件對(duì)應(yīng)的源代碼,采用如下方式: 編譯服務(wù)器從中心服務(wù)器中獲取各個(gè)目標(biāo)文件對(duì)應(yīng)的Android源代碼,所述Android源代碼由編譯主機(jī)將編譯得到的目標(biāo)文件對(duì)應(yīng)的源代碼上傳至中心服務(wù)器; 或, 編譯服務(wù)器從編譯主機(jī)中獲取各個(gè)目標(biāo)文件對(duì)應(yīng)的Android源代碼。
10.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述方法還包括: 將所述映射關(guān)系發(fā)送給編譯主機(jī),所述映射關(guān)系用于使編譯主機(jī)獲取待編譯文件所依賴(lài)的依賴(lài)文件的路徑信息,根據(jù)所述路徑信息獲取所述依賴(lài)文件,并根據(jù)所述依賴(lài)文件編譯第一目錄樹(shù)中的待編譯文件得到目標(biāo)文件。
11.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述方法還包括: 接收編譯主機(jī)發(fā)送的所述待編譯文件所依賴(lài)的依賴(lài)文件的文件信息,所述文件信息至少包括所述依賴(lài)文件的文件名稱(chēng); 根據(jù)所述依賴(lài)文件的文件信息,查詢(xún)所述映射關(guān)系獲得所述依賴(lài)文件的路徑信息。
12.—種程序編譯裝置,其特征在于,包括: 第一查詢(xún)單元,用于從第一目錄樹(shù)中查詢(xún)編譯待編譯文件所依賴(lài)的依賴(lài)文件;` 第一獲取單元,用于從編譯服務(wù)器編譯Android源代碼得到的第二目錄樹(shù)中,獲取所述依賴(lài)文件; 編譯單元,用于根據(jù)所述依賴(lài)文件編譯所述待編譯文件,得到目標(biāo)文件。
13.根據(jù)權(quán)利要求12所述的裝置,其特征在于,所述第一獲取單元,包括: 第一獲取子單元,用于從所述第二目錄樹(shù)中獲取所述依賴(lài)文件在所述編譯服務(wù)器中的路徑信息; 第二獲取子單元,用于根據(jù)所述路徑信息獲取所述依賴(lài)文件。
14.根據(jù)權(quán)利要求13所述的裝置,其特征在于,所述第一獲取子單元,包括: 第一接收子單元,用于接收所述編譯服務(wù)器發(fā)送的所述第二目錄樹(shù)中的各個(gè)依賴(lài)文件與路徑信息之間的映射關(guān)系; 第一查詢(xún)子單元,用于根據(jù)所述映射關(guān)系,查詢(xún)得到所述待編譯文件所依賴(lài)的依賴(lài)文件對(duì)應(yīng)的路徑信息。
15.根據(jù)權(quán)利要求12所述的裝置,其特征在于,所述第一獲取單元,包括: 發(fā)送單元,用于向所述編譯服務(wù)器發(fā)送所述待編譯文件所依賴(lài)的依賴(lài)文件的文件信息,所述文件信息至少包括所述依賴(lài)文件的文件名稱(chēng); 第二接收子單元,用于接收所述編譯服務(wù)器根據(jù)所述依賴(lài)文件的文件信息獲得的所述依賴(lài)文件;由編譯服務(wù)器查詢(xún)所述第二目錄樹(shù)中的各個(gè)依賴(lài)文件與路徑信息之間的映射關(guān)系,得到的所述依賴(lài)文件的路徑信息,并依據(jù)所述路徑信息獲得所述依賴(lài)文件;所述映射關(guān)系保存在所述編譯服務(wù)器中。
16.根據(jù)權(quán)利要求12所述的裝置,其特征在于,所述第一查詢(xún)單元,包括: 第三獲取子單元,用于獲取所述第一目錄樹(shù)中各個(gè)待編譯文件的依賴(lài)關(guān)系,所述依賴(lài)關(guān)系用于存儲(chǔ)各個(gè)待編譯文件和各個(gè)所述待編譯文件所依賴(lài)的依賴(lài)文件之間的對(duì)應(yīng)關(guān)系; 第二查詢(xún)子單元,用于根據(jù)所述依賴(lài)關(guān)系,查詢(xún)得到所述待編譯文件所依賴(lài)的依賴(lài)文件。
17.根據(jù)權(quán)利要求12所述的裝置,其特征在于,所述裝置還包括: 查找單元,用于在所述第一目錄樹(shù)中查找是否存在所述待編譯文件所依賴(lài)的依賴(lài)文件;當(dāng)所述第一目錄樹(shù)中不存在所述待編譯文件所依賴(lài)的依賴(lài)文件時(shí),輸出使所述第一獲取單元執(zhí)行相應(yīng)動(dòng)作的信號(hào)。
18.—種程序編譯裝置,其特征在于,包括: 第一獲取單元,用于獲取Android源代碼; 第一編譯單元,用于編譯所述Android源代碼得到第二目錄樹(shù),并保存所述第二目錄樹(shù)中的各個(gè)依賴(lài)文件與路徑信息的映射關(guān)系;所述映射關(guān)系用于使編譯主機(jī)獲取待編譯文件所依賴(lài)的依賴(lài)文件,并根據(jù)所述依賴(lài)文件編譯第一目錄樹(shù)中的待編譯文件得到目標(biāo)文件。
19.根據(jù)權(quán)利要求18所述的裝置,其特征在于,所述裝置還包括: 檢測(cè)單元,用于檢測(cè)編譯主機(jī)中存儲(chǔ)的Android源代碼是否被修改; 源代碼更新單元,用于當(dāng)檢測(cè)到編譯主機(jī)中的所述Android源代碼被修改時(shí),依據(jù)修改后的更新編譯服務(wù)器中存儲(chǔ)的Android源代碼;` 第二編譯單元,用于編譯更新后的Android源代碼,更新所述第二目錄樹(shù)中的各個(gè)依賴(lài)文件。
【文檔編號(hào)】G06F9/45GK103870310SQ201410055020
【公開(kāi)日】2014年6月18日 申請(qǐng)日期:2014年2月18日 優(yōu)先權(quán)日:2014年2月18日
【發(fā)明者】葛旭東, 汪文俊, 許瑞軍 申請(qǐng)人:小米科技有限責(zé)任公司