本發(fā)明涉及通信領(lǐng)域,具體而言,涉及一種odex文件生成方法及裝置。
背景技術(shù):
安卓(android)5.0引入安卓運行時(androidruntime,簡稱為art)虛擬機后,需要將apk中的class.dex文件轉(zhuǎn)換成art可識別的odex文件才能運行。這個轉(zhuǎn)化過程可以在版本編譯的時候執(zhí)行,也可以在設(shè)備第一次開機的時候執(zhí)行,圖1是相關(guān)技術(shù)中轉(zhuǎn)化odex文件的流程圖,如圖1所示,該流程包括如下步驟:
步驟s102,啟動版本編譯;
步驟s104,判斷apk是否要預(yù)編碼出odex文件,在判斷結(jié)果為是的情況下,進(jìn)入步驟s106,否則進(jìn)入步驟s110;
步驟s106,掃描出所有apk;
步驟s108,運行dex2oat生成odex文件;
步驟s110,完成版本編譯;
步驟s112,將版本下載到設(shè)備中;
步驟s114,設(shè)備第一次開機播放開機動畫;
步驟s116,判斷是否已經(jīng)存在odex文件,在判斷結(jié)果為是的情況下,進(jìn)入步驟s122,否則進(jìn)入步驟s118;
步驟s118,掃描出所有apk;
步驟s120,運行dex2oat生成odex文件;
步驟s122,啟動完成進(jìn)入待機界面;
步驟s124,從主菜單點出應(yīng)用圖標(biāo);
步驟s126,開始使用apk。
在上述流程中,采用兩種方式來生成odex文件:第一種,是在版本編譯的時候一次性掃描所有apk并生成odex文件,即上述步驟s104至步驟s108;第二種,是在第一次開機時一次性掃描所有apk并生成odex文件,即上述步驟s116至步驟s120。
然而,在上述兩種方式中,一種方式中,由于需要在編譯的時候完成所有apk的odex文件生成,導(dǎo)致編譯時間變長;其次,版本中會多出很多odex文件,導(dǎo)致版本變大,需要占用設(shè)備更多的存儲空間。而另一種方式中,由于需要在第一次開機的時候掃描apk并生成所有 odex文件,導(dǎo)致第一次開機等待時間顯著增加,而且預(yù)制的apk越多時間越長。
因此,在相關(guān)技術(shù)中,生成odex文件存在時間成本高,耗費存儲空間大,導(dǎo)致用戶體驗低的問題。
技術(shù)實現(xiàn)要素:
本發(fā)明提供了一種odex文件生成及裝置,以至少解決相關(guān)技術(shù)中生成odex文件存在時間成本高,耗費存儲空間大,導(dǎo)致用戶體驗低的問題。
根據(jù)本發(fā)明的一個方面,提供了一種odex文件生成方法,包括:確定單個待運行文件;判斷所述單個待運行文件的文件類型是否為odex類型;在判斷結(jié)果為否的情況下,將所述單個待運行文件生成odex文件。
優(yōu)選地,所述單個待運行文件包括以下至少之一:開機系統(tǒng)文件、應(yīng)用程序文件。
優(yōu)選地,在所述單個待運行文件為所述應(yīng)用程序文件的情況下,通過以下方式,確定所述單個待運行文件:接收對應(yīng)用圖標(biāo)的點擊操作,其中,所述應(yīng)用圖標(biāo)為所述應(yīng)用程序文件對應(yīng)的應(yīng)用程序的圖標(biāo),所述點擊操作用于啟動所述應(yīng)用程序文件對應(yīng)的所述應(yīng)用程序。
優(yōu)選地,判斷所述單個待運行文件的文件類型是否為所述odex類型包括:判斷所述單個待運行文件是否是第一次被運行;當(dāng)所述單個待運行文件是第一次被運行的情況下,判斷所述單個待運行文件中是否包括擴展名為.doex的文件;當(dāng)所述單個待運行文件中包括擴展名為.doex的文件的情況下,確定所述單個待運行文件的文件類型為所述odex類型;和/或,當(dāng)所述單個待運行文件中不包括擴展名為.doex的文件的情況下,確定所述單個待運行文件的文件類型不為所述odex類型。
優(yōu)選地,該方法還包括:在判斷所述單個待運行文件的文件類型為所述odex類型的情況下,運行所述單個待運行文件;和/或,在將所述單個待運行文件生成所述odex文件之后,運行生成的所述odex文件。
根據(jù)本發(fā)明的另一方面,提供了一種odex文件生成裝置,包括:確定模塊,用于確定單個待運行文件;判斷模塊,用于判斷所述單個待運行文件的文件類型是否為odex類型;生成模塊,用于在判斷結(jié)果為否的情況下,將所述單個待運行文件生成odex文件。
優(yōu)選地,所述單個待運行文件包括以下至少之一:開機系統(tǒng)文件、應(yīng)用程序文件。
優(yōu)選地,所述確定模塊包括:接收單元,用于接收對應(yīng)用圖標(biāo)的點擊操作,其中,所述應(yīng)用圖標(biāo)為所述應(yīng)用程序文件對應(yīng)的應(yīng)用程序的圖標(biāo),所述點擊操作用于啟動所述應(yīng)用程序文件對應(yīng)的所述應(yīng)用程序。
優(yōu)選地,所述判斷模塊包括:第一判斷單元,用于判斷所述單個待運行文件是否是第一次被運行;第二判斷單元,用于當(dāng)所述單個待運行文件是第一次被運行的情況下,判斷所述單個待運行文件中是否包括擴展名為.doex的文件;第一確定單元,用于當(dāng)所述單個待運行文 件中包括擴展名為.doex的文件的情況下,確定所述單個待運行文件的文件類型為所述odex類型;和/或,第二確定單元,用于當(dāng)所述單個待運行文件中不包括擴展名為.doex的文件的情況下,確定所述單個待運行文件的文件類型不為所述odex類型。
優(yōu)選地,該裝置還包括:運行模塊,用于在判斷所述單個待運行文件的文件類型為所述odex類型的情況下,運行所述單個待運行文件;和/或,在將所述單個待運行文件生成所述odex文件之后,運行生成的所述odex文件。
通過本發(fā)明,采用確定單個待運行文件;判斷所述單個待運行文件的文件類型是否為odex類型;在判斷結(jié)果為否的情況下,將所述單個待運行文件生成odex文件,解決了相關(guān)技術(shù)中生成odex文件存在時間成本高,耗費存儲空間大,導(dǎo)致用戶體驗低的問題,進(jìn)而達(dá)到了節(jié)省時間成本,減少存儲空間的占用,從而提高用戶體驗的效果。
附圖說明
此處所說明的附圖用來提供對本發(fā)明的進(jìn)一步理解,構(gòu)成本申請的一部分,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中:
圖1是相關(guān)技術(shù)中轉(zhuǎn)化odex文件的流程圖;
圖2是根據(jù)本發(fā)明實施例的odex文件生成方法的流程圖;
圖3是根據(jù)本發(fā)明實施例的優(yōu)化使用art虛擬機的方法的流程圖;
圖4是根據(jù)本發(fā)明實施例的odex文件生成裝置的結(jié)構(gòu)框圖;
圖5是根據(jù)本發(fā)明實施例的odex文件生成裝置中確定模塊42的優(yōu)選結(jié)構(gòu)框圖;
圖6是根據(jù)本發(fā)明實施例的odex文件生成裝置中判斷模塊44的優(yōu)選結(jié)構(gòu)框圖;
圖7是根據(jù)本發(fā)明實施例的odex文件生成裝置的優(yōu)選結(jié)構(gòu)框圖。
具體實施方式
下文中將參考附圖并結(jié)合實施例來詳細(xì)說明本發(fā)明。需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。
需要說明的是,本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”等是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。
在本實施例中提供了一種odex文件生成方法,圖2是根據(jù)本發(fā)明實施例的odex文件生成方法的流程圖,如圖2所示,該流程包括如下步驟:
步驟s202,確定單個待運行文件,其中,該單個待運行文件可以包括以下至少之一:開機系統(tǒng)文件、應(yīng)用程序文件;
步驟s204,判斷單個待運行文件的文件類型是否為odex類型;
步驟s206,在判斷結(jié)果為否的情況下,將單個待運行文件生成odex文件。
通過上述步驟,采用對單個待運行文件進(jìn)行判斷,而后生成odex文件,相對于相關(guān)技術(shù)而言,將原有的編譯時一次性掃描apk并生成odex文件或開機時一次性掃描apk并生成所有odex文件的方法,改成使用單個apk的時候就生成單個odex文件,將原先一次性odex轉(zhuǎn)化過程變成分散在每個apk使用時的odex轉(zhuǎn)化過程,節(jié)省了開機時間,縮短了編譯時間,另外,還減少了設(shè)備存儲空間的占用,還方便了預(yù)制apk的調(diào)試開發(fā),提升了用戶體驗。
在確定單個待運行文件時,依據(jù)單個待運行文件的類型不同,可以采用不同的處理方式,例如,在單個待運行文件為應(yīng)用程序文件的情況下,可以通過以下方式確定單個待運行文件:接收對應(yīng)用圖標(biāo)的點擊操作,其中,應(yīng)用圖標(biāo)為應(yīng)用程序文件對應(yīng)的應(yīng)用程序的圖標(biāo),點擊操作用于啟動應(yīng)用程序文件對應(yīng)的應(yīng)用程序。即通過用戶點擊對應(yīng)的應(yīng)用程序的應(yīng)用圖標(biāo)的方式來確定單個待運行文件。這樣由用戶來觸發(fā)的方式,清楚簡單。
在判斷單個待運行文件的文件類型是否為odex類型時,也可以依據(jù)多種方式來判斷,例如,可以依據(jù)單個待運行文件的文件擴展名來判斷。另外,在采用這種方式判斷時,為了提高判斷的準(zhǔn)確性,可以先對待運行文件的文件類型時行預(yù)判,例如,在判斷單個待運行文件的文件擴展名之前,先判斷單個待運行文件是否是第一次被運行;當(dāng)單個待運行文件是第一次被運行的情況下,判斷單個待運行文件中是否包括擴展名為.doex的文件;當(dāng)單個待運行文件中包括擴展名為.doex的文件的情況下,確定單個待運行文件的文件類型為odex類型;和/或,當(dāng)單個待運行文件中不包括擴展名為.doex的文件的情況下,確定單個待運行文件的文件類型不為odex類型。采用這樣的方式,即通過兩次判斷來確定該單個待運行文件的文件類型為odex類型,從而有效地提高了判斷的準(zhǔn)確性。
優(yōu)選地,在判斷單個待運行文件的文件類型為odex類型的情況下,運行單個待運行文件;和/或,在將單個待運行文件生成odex文件之后,運行生成的odex文件。采用這樣的處理,完成對單個待運行文件的運行。
在相關(guān)技術(shù)中,android5.0開始已經(jīng)完全切換到art虛擬機,相對于之前的dalvik虛擬機,提高了系統(tǒng)運行時性能、提高了應(yīng)用啟動速度、整體體驗更流暢等,不過為了達(dá)到這些提升所付出的代價就是需要更大的存儲空間、更長的版本編譯時間、首次開機時間顯著增加、降低了預(yù)制apk調(diào)試的便利性。為解決上述問題,在本實施例中,基于上述odex文件生成方法,還提供了一種優(yōu)化使用art虛擬機的方法。
在該方法中,對相關(guān)技術(shù)中掃描apk并生成odex文件的時機及方式做了調(diào)整,將原有的編譯時一次性掃描apk并生成odex文件或開機時一次性掃描apk并生成所有odex文件的方法,改成開機后用戶第一次使用單個apk的時候就生成單個odex文件,將原有的兩種odex生成方式統(tǒng)一成一種方式。即通過分而治之的方式,將原先一次性odex轉(zhuǎn)化過程變成分散在每個apk第一次使用時的odex轉(zhuǎn)化過程,節(jié)省了開機時間,縮短了編譯時間,另外,還減少了設(shè)備存儲空間的占用,還方便了預(yù)制apk的調(diào)試開發(fā),提升了用戶體驗。
下面對本發(fā)明方法實施例的流程作一下說明,圖3是根據(jù)本發(fā)明實施例的優(yōu)化使用art虛擬機的方法的流程圖,如圖3所示,該流程包括如下步驟:
步驟s302,在電腦上啟動設(shè)備版本的編譯;
步驟s304,版本編譯完成,期間沒有執(zhí)行apk掃描以及odex文件的生成;
步驟s306,將編譯好的版本下載到設(shè)備中,此時版本里沒有包含odex文件;
步驟s308,版本下載完成后開機,開機過程中也沒有執(zhí)行apk掃描以及odex文件的生成;
步驟s310,完成開機過程并進(jìn)入待機界面;
步驟s312,從主菜單點擊應(yīng)用圖標(biāo)來啟動應(yīng)用;
步驟s314,啟動應(yīng)用時判斷此應(yīng)用對應(yīng)的文件中是否已經(jīng)存在odex文件,如果已經(jīng)存在執(zhí)行步驟s318,否則執(zhí)行步驟s316;
步驟s316,運行dex2oat生成此應(yīng)用的odex文件;
步驟s318,開始正常使用此應(yīng)用。
在該方法中,與相關(guān)技術(shù)相比,去掉了相關(guān)技術(shù)中,編譯時一次性掃描apk并生成odex文件的步驟;這樣減少了版本編譯時間,同時節(jié)省了設(shè)備的存儲空間;去掉了相關(guān)技術(shù)中第一次開機時一次性掃描apk并生成odex文件的步驟;這樣減少了第一次開機時用戶漫長的等待時間,提升了用戶體驗;在用戶點擊應(yīng)用圖標(biāo)時增加了判斷此apk是否存在odex文件的步驟,如果不存在就運行dex2oat生成odex文件;由于對單個apk生成odex的時間并不會很長,在用戶可以接受范圍內(nèi),因而有效避免了之前長時間等待的情況。
通過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到根據(jù)上述實施例的方法可借助軟件加必需的通用硬件平臺的方式來實現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者是更佳的實施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)(如rom/ram、磁碟、光盤)中,包括若干指令用以使得一臺終端設(shè)備(可以是手機,計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例的方法。
在本實施例中還提供了一種odex文件生成裝置,該裝置用于實現(xiàn)上述實施例及優(yōu)選實施方式,已經(jīng)進(jìn)行過說明的不再贅述。如以下所使用的,術(shù)語“模塊”可以實現(xiàn)預(yù)定功能的軟件和/或硬件的組合。盡管以下實施例所描述的裝置較佳地以軟件來實現(xiàn),但是硬件,或者軟件和硬件的組合的實現(xiàn)也是可能并被構(gòu)想的。
圖4是根據(jù)本發(fā)明實施例的odex文件生成裝置的結(jié)構(gòu)框圖,如圖4所示,該裝置包括確定模塊42、判斷模塊44和生成模塊46,下面對該裝置進(jìn)行說明。
確定模塊42,用于確定單個待運行文件;判斷模塊44,連接至上述確定模塊42,用于判斷單個待運行文件的文件類型是否為odex類型;生成模塊46,連接至上述判斷模塊44,用于 在判斷結(jié)果為否的情況下,將單個待運行文件生成odex文件。
優(yōu)選地,單個待運行文件包括以下至少之一:開機系統(tǒng)文件、應(yīng)用程序文件。
圖5是根據(jù)本發(fā)明實施例的odex文件生成裝置中確定模塊42的優(yōu)選結(jié)構(gòu)框圖,如圖5所示,該確定模塊42包括接收單元52,下面對該接收單元52進(jìn)行說明。
接收單元52,用于接收對應(yīng)用圖標(biāo)的點擊操作,其中,應(yīng)用圖標(biāo)為應(yīng)用程序文件對應(yīng)的應(yīng)用程序的圖標(biāo),點擊操作用于啟動應(yīng)用程序文件對應(yīng)的應(yīng)用程序。
圖6是根據(jù)本發(fā)明實施例的odex文件生成裝置中判斷模塊44的優(yōu)選結(jié)構(gòu)框圖,如圖6所示,該判斷模塊44包括:第一判斷單元62、第二判斷單元64、第一確定單元66和第二確定單元68,下面對該判斷模塊44進(jìn)行說明。
第一判斷單元62,用于判斷單個待運行文件是否是第一次被運行;第二判斷單元64,連接至上述第一判斷單元62,用于當(dāng)單個待運行文件是第一次被運行的情況下,判斷單個待運行文件中是否包括擴展名為.doex的文件;第一確定單元66,連接至上述第二判斷單元64,用于當(dāng)單個待運行文件中包括擴展名為.doex的文件的情況下,確定單個待運行文件的文件類型為odex類型;和/或,第二確定單元68,連接至上述第二判斷單元64,用于當(dāng)單個待運行文件中不包括擴展名為.doex的文件的情況下,確定單個待運行文件的文件類型不為odex類型。
圖7是根據(jù)本發(fā)明實施例的odex文件生成裝置的優(yōu)選結(jié)構(gòu)框圖,如圖7所示,該裝置除包括圖4所示的所有結(jié)構(gòu)外,還包括:運行模塊72,下面對該運行模塊72進(jìn)行說明。
運行模塊72,連接至上述判斷模塊44和生成模塊46,用于在判斷單個待運行文件的文件類型為odex類型的情況下,運行單個待運行文件;和/或,在將單個待運行文件生成odex文件之后,運行生成的odex文件。
需要說明的是,上述各個模塊是可以通過軟件或硬件來實現(xiàn)的,對于后者,可以通過以下方式實現(xiàn),但不限于此:上述模塊均位于同一處理器中;或者,上述模塊分別位于多個處理器中。
本發(fā)明的實施例還提供了一種存儲介質(zhì)??蛇x地,在本實施例中,上述存儲介質(zhì)可以被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:
s1,確定單個待運行文件;
s2,判斷單個待運行文件的文件類型是否為odex類型;
s3,在判斷結(jié)果為否的情況下,將單個待運行文件生成odex文件。
可選地,存儲介質(zhì)還被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:
s1,單個待運行文件包括以下至少之一:開機系統(tǒng)文件、應(yīng)用程序文件。
可選地,存儲介質(zhì)還被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:
s1,在單個待運行文件為應(yīng)用程序文件的情況下,通過以下方式,確定單個待運行文件:接收對應(yīng)用圖標(biāo)的點擊操作,其中,應(yīng)用圖標(biāo)為應(yīng)用程序文件對應(yīng)的應(yīng)用程序的圖標(biāo),點擊操作用于啟動應(yīng)用程序文件對應(yīng)的應(yīng)用程序。
可選地,存儲介質(zhì)還被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:判斷單個待運行文件的文件類型是否為odex類型包括:
s1,判斷單個待運行文件是否是第一次被運行;
s2,當(dāng)單個待運行文件是第一次被運行的情況下,判斷單個待運行文件中是否包括擴展名為.doex的文件;
s3,當(dāng)單個待運行文件中包括擴展名為.doex的文件的情況下,確定單個待運行文件的文件類型為odex類型;和/或,當(dāng)單個待運行文件中不包括擴展名為.doex的文件的情況下,確定單個待運行文件的文件類型不為odex類型。
可選地,存儲介質(zhì)還被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:
s1,在判斷單個待運行文件的文件類型為odex類型的情況下,運行單個待運行文件;和/或,在將單個待運行文件生成odex文件之后,運行生成的odex文件。
可選地,在本實施例中,上述存儲介質(zhì)可以包括但不限于:u盤、只讀存儲器(rom,read-onlymemory)、隨機存取存儲器(ram,randomaccessmemory)、移動硬盤、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
可選地,在本實施例中,處理器根據(jù)存儲介質(zhì)中已存儲的程序代碼執(zhí)行:確定單個待運行文件;判斷單個待運行文件的文件類型是否為odex類型;在判斷結(jié)果為否的情況下,將單個待運行文件生成odex文件。
可選地,在本實施例中,處理器根據(jù)存儲介質(zhì)中已存儲的程序代碼執(zhí)行:單個待運行文件包括以下至少之一:開機系統(tǒng)文件、應(yīng)用程序文件。
可選地,在本實施例中,處理器根據(jù)存儲介質(zhì)中已存儲的程序代碼執(zhí)行:在單個待運行文件為應(yīng)用程序文件的情況下,通過以下方式,確定單個待運行文件:接收對應(yīng)用圖標(biāo)的點擊操作,其中,應(yīng)用圖標(biāo)為應(yīng)用程序文件對應(yīng)的應(yīng)用程序的圖標(biāo),點擊操作用于啟動應(yīng)用程序文件對應(yīng)的應(yīng)用程序。
可選地,在本實施例中,處理器根據(jù)存儲介質(zhì)中已存儲的程序代碼執(zhí)行:判斷單個待運行文件的文件類型是否為odex類型包括:判斷單個待運行文件是否是第一次被運行;當(dāng)單個待運行文件是第一次被運行的情況下,判斷單個待運行文件中是否包括擴展名為.doex的文件;當(dāng)單個待運行文件中包括擴展名為.doex的文件的情況下,確定單個待運行文件的文件類型為odex類型;和/或,當(dāng)單個待運行文件中不包括擴展名為.doex的文件的情況下,確定單個待運行文件的文件類型不為odex類型。
可選地,在本實施例中,處理器根據(jù)存儲介質(zhì)中已存儲的程序代碼執(zhí)行:在判斷單個待 運行文件的文件類型為odex類型的情況下,運行單個待運行文件;和/或,在將單個待運行文件生成odex文件之后,運行生成的odex文件。
可選地,本實施例中的具體示例可以參考上述實施例及可選實施方式中所描述的示例,本實施例在此不再贅述。
顯然,本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以用通用的計算裝置來實現(xiàn),它們可以集中在單個的計算裝置上,或者分布在多個計算裝置所組成的網(wǎng)絡(luò)上,可選地,它們可以用計算裝置可執(zhí)行的程序代碼來實現(xiàn),從而,可以將它們存儲在存儲裝置中由計算裝置來執(zhí)行,并且在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟,或者將它們分別制作成各個集成電路模塊,或者將它們中的多個模塊或步驟制作成單個集成電路模塊來實現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。
以上僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。