本發(fā)明屬于程序版本發(fā)布技術(shù)領(lǐng)域,具體涉及一種應(yīng)用程序版本的自動(dòng)化發(fā)布及更新的方法和系統(tǒng)。
背景技術(shù):
隨著計(jì)算機(jī)技術(shù)的迅速發(fā)展,大量應(yīng)用軟件被不斷開發(fā)出來,并且,對于每類應(yīng)用軟件,基本都存在軟件更新的問題,其中,軟件更新升級,是指軟件開發(fā)者在編寫軟件的時(shí)候,由于初始時(shí),設(shè)計(jì)人員考慮不全面或程序功能不完善,因此,在軟件發(fā)行后,需要對程序進(jìn)行修改或加入新功能,再將更新資源以補(bǔ)丁的形式發(fā)布,從而實(shí)現(xiàn)軟件的升級。
現(xiàn)有技術(shù)中,應(yīng)用軟件由數(shù)量眾多的資源文件構(gòu)成,并且,資源文件之間常常存在相同資源,由此導(dǎo)致應(yīng)用軟件的體積較大;另外,當(dāng)對軟件進(jìn)行升級時(shí),需要將不同資源文件中的相同資源進(jìn)行同步升級,導(dǎo)致應(yīng)用軟件升級過程繁雜,且耗費(fèi)了大量時(shí)間,降低了應(yīng)用軟件升級效率。
技術(shù)實(shí)現(xiàn)要素:
針對現(xiàn)有技術(shù)存在的缺陷,本發(fā)明提供一種應(yīng)用程序版本的自動(dòng)化發(fā)布及更新的方法和系統(tǒng),可有效解決上述問題。
本發(fā)明采用的技術(shù)方案如下:
本發(fā)明提供一種應(yīng)用程序版本的自動(dòng)化發(fā)布及更新方法,包括以下步驟:
S1,開發(fā)得到應(yīng)用程序版本文件;對所述應(yīng)用程序版本文件中的各個(gè)文件進(jìn)行分類,劃分為依賴文件和非依賴文件;
S2,從所述應(yīng)用程序版本文件中提取出所有的所述依賴文件;
S3,獲得各個(gè)所述依賴文件之間的層次關(guān)系和依賴關(guān)系,生成樹形結(jié)構(gòu);其中,所述樹形結(jié)構(gòu)中的任意一個(gè)非葉節(jié)點(diǎn)記為非葉節(jié)點(diǎn)A,設(shè)非葉節(jié)點(diǎn)A共有m個(gè)兒子節(jié)點(diǎn),將m個(gè)兒子節(jié)點(diǎn)依次記為B1、B2…Bm;則:非葉節(jié)點(diǎn)A和m個(gè)兒子節(jié)點(diǎn)之間的依賴關(guān)系具體指:非葉節(jié)點(diǎn)A的資源依賴m個(gè)兒子節(jié)點(diǎn)的資源,即:非葉節(jié)點(diǎn)A包含m個(gè)兒子節(jié)點(diǎn)的所有資源;
S4,對于所述樹形結(jié)構(gòu),按自下而上方向,依次將父節(jié)點(diǎn)文件中包含的所有兒子節(jié)點(diǎn)文件的資源刪除,同時(shí)記錄父節(jié)點(diǎn)文件與其所有的兒子節(jié)點(diǎn)文件之間的依賴關(guān)系,打包壓縮生成新的父節(jié)點(diǎn)文件;對于葉節(jié)點(diǎn)文件,其包含的資源保持不變,由此生成新的樹形結(jié)構(gòu);
S5,對于所述新的樹形結(jié)構(gòu)中的每個(gè)節(jié)點(diǎn)文件,計(jì)算每個(gè)節(jié)點(diǎn)文件的MD值;另外,對于S1中的所述非依賴文件,分別計(jì)算每個(gè)所述非依賴文件的MD值;
S6,如果所述應(yīng)用程序版本文件為首次發(fā)布版本文件,則將所述新的樹形結(jié)構(gòu)中的所有節(jié)點(diǎn)文件、以及所述非依賴文件進(jìn)行打包壓縮,生成具有版本號的安裝資源包,并將所述安裝資源包發(fā)布到各個(gè)平臺;
如果所述應(yīng)用程序版本文件為非首次發(fā)布版本文件,則將S5得到的每個(gè)節(jié)點(diǎn)文件的MD值以及每個(gè)所述非依賴文件的MD值分別與上一個(gè)版本對應(yīng)文件的MD值進(jìn)行比較,得到與上一個(gè)版本MD值不相同的文件,該文件即為本次被更新的文件;然后,從所述新應(yīng)用程序版本文件中提取到本次被更新的所有文件;
S7,將提取到的本次被更新的所有文件進(jìn)行打包壓縮,生成具有新版本號的更新資源包;
S8,將所述更新資源包發(fā)布到各個(gè)平臺。
優(yōu)選的,S2之前,還包括:
對于開發(fā)得到的所述應(yīng)用程序版本文件,首先對所述應(yīng)用程序版本文件進(jìn)行預(yù)處理操作,過濾不需要使用的臨時(shí)文件,再執(zhí)行后續(xù)步驟S2。
優(yōu)選的,所述依賴文件包括具有依賴屬性的二進(jìn)制文件和具有依賴屬性的文本文件;所述非依賴文件包括具有非依賴屬性的二進(jìn)制文件、具有非依賴屬性的文本文件和代碼文件。
優(yōu)選的,所述具有依賴屬性的二進(jìn)制文件為預(yù)設(shè)材質(zhì)文件;所述具有非依賴屬性的二進(jìn)制文件為聲音和流文件。
優(yōu)選的,S3中,利用Unity3D的API方法獲得各個(gè)所述依賴文件之間的層次關(guān)系和依賴關(guān)系。
優(yōu)選的,S4具體為:采用壓入棧依賴打包壓縮的方式,將所述父節(jié)點(diǎn)文件打包壓縮生成新的父節(jié)點(diǎn)文件。
優(yōu)選的,S6中,將所述安裝資源包發(fā)布到各個(gè)平臺,具體為:
向所述安裝資源包接入各個(gè)平臺的軟件開發(fā)工具包,利用Unity3D的API進(jìn)行編譯,生成對應(yīng)的應(yīng)用程序,并更新原應(yīng)用程序的版本號;
S8中,將所述更新資源包發(fā)布到各個(gè)平臺,具體為:
向所述更新資源包接入各個(gè)平臺的軟件開發(fā)工具包,并用所述更新資源包更新原應(yīng)用程序的對應(yīng)文件,利用Unity3D的API進(jìn)行編譯,生成對應(yīng)的新應(yīng)用程序,并更新原應(yīng)用程序的版本號。
本發(fā)明還提供一種應(yīng)用程序版本的自動(dòng)化發(fā)布及更新系統(tǒng),包括可視化的自動(dòng)化版本編輯器和自動(dòng)化版本處理器;
所述自動(dòng)化版本編輯器包括版本發(fā)布模塊和變量設(shè)置模塊;
所述版本發(fā)布模塊是在Unity中實(shí)現(xiàn)可視化的界面編輯功能,包括版本號配置單元、發(fā)布平臺選擇單元、運(yùn)營商選擇單元、資源打包方式選擇單元、編譯方式配置單元和發(fā)布安裝包配置單元;
所述變量設(shè)置模塊用于配置版本發(fā)布過程的相關(guān)變量,包括:網(wǎng)絡(luò)庫路徑選擇單元、版本庫路徑選擇單元、運(yùn)營商包路徑選擇單元和工程文件名稱設(shè)置單元;
所述自動(dòng)化版本處理器用于接收所述版本發(fā)布模塊和所述變量設(shè)置模塊所配置的版本發(fā)布參數(shù),并根據(jù)所述版本發(fā)布參數(shù),將應(yīng)用程序版本文件發(fā)布或更新到對應(yīng)的平臺,實(shí)現(xiàn)應(yīng)用程序版本的自動(dòng)化發(fā)布或更新過程。
優(yōu)選的,所述版本號配置單元用于配置舊版本號以及需要升級到的新版本號;
所述發(fā)布平臺選擇單元用于選擇應(yīng)用程序需要發(fā)布到的平臺,包括:安卓平臺、IOS平臺、windows平臺、Linux平臺或Unix平臺;
所述運(yùn)營商選擇單元用于配置應(yīng)用程序需要發(fā)布到的運(yùn)營商;
所述資源打包方式選擇單元用于配置資源打包方式,包括:打包所有資源、只打包配置文件、只打包作色器文件;
所述編譯方式配置單元用于配置文件編譯方式,包括是否編譯動(dòng)態(tài)庫的選擇項(xiàng);
所述發(fā)布安裝包配置單元用于配置是否發(fā)布安裝包,包括安裝包發(fā)布的確定按鈕;當(dāng)該確定按鈕被點(diǎn)擊后,即向所述自動(dòng)化版本處理器發(fā)送版本發(fā)布的指令。
本發(fā)明提供的應(yīng)用程序版本的自動(dòng)化發(fā)布及更新的方法和系統(tǒng)具有以下優(yōu)點(diǎn):
(1)將應(yīng)用軟件中各資源文件之間的相同資源合并,并通過記錄各資源文件之間的依賴關(guān)系,保證實(shí)現(xiàn)原應(yīng)用軟件的相關(guān)功能,減少了應(yīng)用軟件的體積;
(2)當(dāng)進(jìn)行應(yīng)用軟件升級時(shí),當(dāng)具有依賴關(guān)系的資源文件進(jìn)行升級時(shí),只需要升級一份資源文件即可,從而降低了應(yīng)用軟件升級繁瑣度,提高了應(yīng)用軟件升級效率。
(3)提供了可視化的自動(dòng)化版本編輯器,方便操作選擇各種應(yīng)用程序發(fā)布或更新的配置,自動(dòng)化版本編輯器根據(jù)該配置而進(jìn)行相應(yīng)的應(yīng)用程序發(fā)布過程,具有應(yīng)用程序發(fā)布或更新參數(shù)編輯方便易用和易于擴(kuò)展等優(yōu)點(diǎn)。
附圖說明
圖1為本發(fā)明提供的用程序版本的自動(dòng)化發(fā)布及更新方法的流程示意圖;
圖2為5個(gè)依賴文件之間資源引用關(guān)系的示意圖;
圖3為根據(jù)圖2中的5個(gè)依賴文件所建立的樹形結(jié)構(gòu)示意圖。
具體實(shí)施方式
以下結(jié)合附圖對本發(fā)明進(jìn)行詳細(xì)說明:
本發(fā)明提供一種應(yīng)用程序版本的自動(dòng)化發(fā)布及更新方法,包括以下步驟:
S1,開發(fā)得到應(yīng)用程序版本文件;對所述應(yīng)用程序版本文件中的各個(gè)文件進(jìn)行分類,劃分為依賴文件和非依賴文件;
本發(fā)明中,依賴文件指具有依賴屬性的文件,具體指:該文件包含有與其他文件相同的資源,或者,該文件的文件資源被其他文件所包含;對于非依賴文件,指完全獨(dú)立的文件,與應(yīng)用程序版本文件中其他所有文件的資源均不存在重合的文件。
對應(yīng)用程序版本文件進(jìn)行上述分類劃分,對于非依賴文件,由于其與其他文件不存在依賴關(guān)系,因此,不需要獲得其依賴關(guān)系,直接執(zhí)行到后續(xù)的S5, 從而可減少計(jì)算機(jī)對各文件處理次數(shù)。
具體的,依賴文件包括具有依賴屬性的二進(jìn)制文件和具有依賴屬性的文本文件;所述非依賴文件包括具有非依賴屬性的二進(jìn)制文件、具有非依賴屬性的文本文件和代碼文件,代碼文件為可編譯為動(dòng)態(tài)庫的文件。例如,具有依賴屬性的二進(jìn)制文件為預(yù)設(shè)材質(zhì)文件;所述具有非依賴屬性的二進(jìn)制文件為聲音和流文件。
當(dāng)然,對于開發(fā)得到的所述應(yīng)用程序版本文件,首先對所述應(yīng)用程序版本文件進(jìn)行預(yù)處理操作,過濾不需要使用的臨時(shí)文件,再執(zhí)行后續(xù)步驟S2。
S2,從所述應(yīng)用程序版本文件中提取出所有的所述依賴文件;
S3,獲得各個(gè)所述依賴文件之間的層次關(guān)系和依賴關(guān)系,生成樹形結(jié)構(gòu);其中,所述樹形結(jié)構(gòu)中的任意一個(gè)非葉節(jié)點(diǎn)記為非葉節(jié)點(diǎn)A,設(shè)非葉節(jié)點(diǎn)A共有m個(gè)兒子節(jié)點(diǎn),將m個(gè)兒子節(jié)點(diǎn)依次記為B1、B2…Bm;則:非葉節(jié)點(diǎn)A和m個(gè)兒子節(jié)點(diǎn)之間的依賴關(guān)系具體指:非葉節(jié)點(diǎn)A的資源依賴m個(gè)兒子節(jié)點(diǎn)的資源,即:非葉節(jié)點(diǎn)A包含m個(gè)兒子節(jié)點(diǎn)的所有資源;
實(shí)際應(yīng)用中,利用Unity3D的API方法獲得各個(gè)所述依賴文件之間的層次關(guān)系和依賴關(guān)系。
建立樹形結(jié)構(gòu)的主要目的為:提取各個(gè)依賴文件之間的公共資源,避免資源重復(fù)。
以共存在5個(gè)依賴文件為例,如圖2所示,為5個(gè)依賴文件之間資源引用關(guān)系的示意圖;從圖2可以看出,文件C中包含有文件D和文件E的所有資源,即:文件C依賴文件D和文件E;文件D中包含有文件F和文件G的所有資源,即:文件D依賴文件F和文件G;
如圖3所示,為根據(jù)圖2中的5個(gè)依賴文件所建立的樹形結(jié)構(gòu)示意圖。
S4,對于所述樹形結(jié)構(gòu),按自下而上方向,依次將父節(jié)點(diǎn)文件中包含的所有兒子節(jié)點(diǎn)文件的資源刪除,同時(shí)記錄父節(jié)點(diǎn)文件與其所有的兒子節(jié)點(diǎn)文件之間的依賴關(guān)系,打包壓縮生成新的父節(jié)點(diǎn)文件;對于葉節(jié)點(diǎn)文件,其包含的資源保持不變,由此生成新的樹形結(jié)構(gòu);
例如,對于圖3所示的樹形結(jié)構(gòu),對于葉節(jié)點(diǎn)文件,即文件F和文件G,其包 含的資源保持不變;對于D文件,將D文件中所包含的文件F資源和文件G資源刪除,同時(shí)記錄以下信息:對文件F和文件G具有依賴關(guān)系,由于生成D’文件;也就是說,D’文件不再包含有文件F資源和文件G資源,但記錄有與文件F和文件G具有依賴關(guān)系的記錄;同樣的,對于C文件,將C文件中所包含的文件D資源和文件E資源刪除,同時(shí)記錄以下信息:對文件D和文件E具有依賴關(guān)系,由于生成C’文件。
實(shí)際應(yīng)用中,可以采用壓入棧依賴打包壓縮的方式,將所述父節(jié)點(diǎn)文件打包壓縮生成新的父節(jié)點(diǎn)文件。
采用上述方法,主要目的為合并相同資源,減少應(yīng)用程序占用空間。
S5,對于所述新的樹形結(jié)構(gòu)中的每個(gè)節(jié)點(diǎn)文件,計(jì)算每個(gè)節(jié)點(diǎn)文件的MD值;另外,對于S1中的所述非依賴文件,分別計(jì)算每個(gè)所述非依賴文件的MD值;
S6,如果所述應(yīng)用程序版本文件為首次發(fā)布版本文件,則將所述新的樹形結(jié)構(gòu)中的所有節(jié)點(diǎn)文件、以及所述非依賴文件進(jìn)行打包壓縮,生成具有版本號的安裝資源包,并將所述安裝資源包發(fā)布到各個(gè)平臺;具體發(fā)布方法為:向所述安裝資源包接入各個(gè)平臺的軟件開發(fā)工具包,利用Unity3D的API進(jìn)行編譯,生成對應(yīng)的應(yīng)用程序,并更新原應(yīng)用程序的版本號;
如果所述應(yīng)用程序版本文件為非首次發(fā)布版本文件,則將S5得到的每個(gè)節(jié)點(diǎn)文件的MD值以及每個(gè)所述非依賴文件的MD值分別與上一個(gè)版本對應(yīng)文件的MD值進(jìn)行比較,得到與上一個(gè)版本MD值不相同的文件,該文件即為本次被更新的文件;然后,從所述新應(yīng)用程序版本文件中提取到本次被更新的所有文件;
S7,將提取到的本次被更新的所有文件進(jìn)行打包壓縮,生成具有新版本號的更新資源包;
S8,將所述更新資源包發(fā)布到各個(gè)平臺。具體發(fā)布方法為:向所述更新資源包接入各個(gè)平臺的軟件開發(fā)工具包,并用所述更新資源包更新原應(yīng)用程序的對應(yīng)文件,利用Unity3D的API進(jìn)行編譯,生成對應(yīng)的新應(yīng)用程序,并更新原應(yīng)用程序的版本號。
此外,在生成應(yīng)用程序后,也可以利用反編工具,對應(yīng)用程序進(jìn)行進(jìn)一步的壓縮,再次生成程序文件。從而可減少部分程序的大小。
本發(fā)明還提供一種應(yīng)用程序版本的自動(dòng)化發(fā)布及更新系統(tǒng),包括可視化的自動(dòng)化版本編輯器和自動(dòng)化版本處理器;
(一)自動(dòng)化版本編輯器
所述自動(dòng)化版本編輯器包括版本發(fā)布模塊和變量設(shè)置模塊;
(1)版本發(fā)布模塊
所述版本發(fā)布模塊是在Unity中實(shí)現(xiàn)可視化的界面編輯功能,包括版本號配置單元、發(fā)布平臺選擇單元、運(yùn)營商選擇單元、資源打包方式選擇單元、編譯方式配置單元和發(fā)布安裝包配置單元;
其中,所述版本號配置單元用于配置舊版本號以及需要升級到的新版本號;
所述發(fā)布平臺選擇單元用于選擇應(yīng)用程序需要發(fā)布到的平臺,包括:安卓平臺、IOS平臺、windows平臺、Linux平臺或Unix平臺;
所述運(yùn)營商選擇單元用于配置應(yīng)用程序需要發(fā)布到的運(yùn)營商;
所述資源打包方式選擇單元用于配置資源打包方式,包括:打包所有資源、只打包配置文件、只打包作色器文件;
所述編譯方式配置單元用于配置文件編譯方式,包括是否編譯動(dòng)態(tài)庫的選擇項(xiàng);
所述發(fā)布安裝包配置單元用于配置是否發(fā)布安裝包,包括安裝包發(fā)布的確定按鈕;當(dāng)該確定按鈕被點(diǎn)擊后,即向所述自動(dòng)化版本處理器發(fā)送版本發(fā)布的指令。
(2)變量設(shè)置模塊
所述變量設(shè)置模塊用于配置版本發(fā)布過程的相關(guān)變量,包括:網(wǎng)絡(luò)庫路徑選擇單元、版本庫路徑選擇單元、運(yùn)營商包路徑選擇單元和工程文件名稱設(shè)置單元;
(二)自動(dòng)化版本處理器
所述自動(dòng)化版本處理器用于接收所述版本發(fā)布模塊和所述變量設(shè)置模塊所配置的版本發(fā)布參數(shù),并根據(jù)所述版本發(fā)布參數(shù),將應(yīng)用程序版本文件發(fā)布或更新到對應(yīng)的平臺,實(shí)現(xiàn)應(yīng)用程序版本的自動(dòng)化發(fā)布或更新過程。自動(dòng)化版本處理器進(jìn)行應(yīng)用程序版本的自動(dòng)化發(fā)布或更新過程,與本申請上述介紹的應(yīng)用 程序版本的自動(dòng)化發(fā)布及更新方法的過程和原理完全相同,在此不再贅述。
由此可見,通過本發(fā)明提供的應(yīng)用程序版本的自動(dòng)化發(fā)布及更新系統(tǒng),只需程序開發(fā)者進(jìn)行幾步簡單的初始參數(shù)配置,即可自動(dòng)完成應(yīng)用程序版本發(fā)布或更新過程,具有簡單易用、操作簡單、發(fā)布準(zhǔn)確率高等優(yōu)點(diǎn)。
本發(fā)明提供的應(yīng)用程序版本的自動(dòng)化發(fā)布及更新的方法和系統(tǒng)具有以下優(yōu)點(diǎn):
(1)將應(yīng)用軟件中各資源文件之間的相同資源合并,并通過記錄各資源文件之間的依賴關(guān)系,保證實(shí)現(xiàn)原應(yīng)用軟件的相關(guān)功能,減少了應(yīng)用軟件的體積;
(2)當(dāng)進(jìn)行應(yīng)用軟件升級時(shí),當(dāng)具有依賴關(guān)系的資源文件進(jìn)行升級時(shí),只需要升級一份資源文件即可,從而降低了應(yīng)用軟件升級繁瑣度,提高了應(yīng)用軟件升級效率。
(3)提供了可視化的自動(dòng)化版本編輯器,方便操作選擇各種應(yīng)用程序發(fā)布或更新的配置,自動(dòng)化版本編輯器根據(jù)該配置而進(jìn)行相應(yīng)的應(yīng)用程序發(fā)布過程,具有應(yīng)用程序發(fā)布或更新參數(shù)編輯方便易用和易于擴(kuò)展等優(yōu)點(diǎn)。
以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視本發(fā)明的保護(hù)范圍。