本公開涉及計算機(jī)技術(shù)領(lǐng)域,特別涉及一種文件運(yùn)行方法及設(shè)備。
背景技術(shù):
隨著安卓(英文:Android)系統(tǒng)的不斷發(fā)展,很多生產(chǎn)商都會在搭載有安卓系統(tǒng)的終端上預(yù)置大量的第三方應(yīng)用。
目前安卓系統(tǒng)所使用的安卓運(yùn)行環(huán)境(英文:Android runtime;簡稱:ART)虛擬機(jī)在終端首次開機(jī)對預(yù)置的第三方應(yīng)用進(jìn)行安裝的過程中,需要將該第三方應(yīng)用的字節(jié)碼文件編譯成機(jī)器碼文件,這樣會增加終端首次開機(jī)的時長,降低終端首次開機(jī)的速度。
技術(shù)實(shí)現(xiàn)要素:
為了實(shí)現(xiàn)終端在首次開機(jī)時能夠快速開機(jī),本公開實(shí)施例提供了一種文件運(yùn)行方法及設(shè)備。
根據(jù)本公開實(shí)施例的第一方面,提供一種文件運(yùn)行方法,包括:
在運(yùn)行終端中預(yù)置的第三方應(yīng)用時,從所述終端的數(shù)據(jù)分區(qū)中提取所述第三方應(yīng)用的機(jī)器碼文件;
運(yùn)行所述機(jī)器碼文件;
其中,所述機(jī)器碼文件是在所述終端首次開機(jī)前,編譯裝置將所述第三方應(yīng)用的字節(jié)碼文件編譯得到的。
可選的,所述方法還包括:
在所述終端的系統(tǒng)升級后需要對所述第三方應(yīng)用進(jìn)行重新安裝時,從所述終端的數(shù)據(jù)分區(qū)獲取所述字節(jié)碼文件;
將所述字節(jié)碼文件編譯成機(jī)器碼文件;
其中,所述字節(jié)碼文件是所述編譯裝置預(yù)先存儲在所述終端的數(shù)據(jù)分區(qū)的。
可選的,所述機(jī)器碼文件存儲在所述終端的數(shù)據(jù)分區(qū);
所述方法還包括:在所述終端首次開機(jī)時,將所述第三方應(yīng)用安裝在所述終端的數(shù)據(jù)分區(qū)。
可選的,所述從所述終端的數(shù)據(jù)分區(qū)中提取所述第三方應(yīng)用的機(jī)器碼文件,包括:
在所述終端首次開機(jī)時,檢測所述終端的數(shù)據(jù)分區(qū)中的清除標(biāo)志位,所述清除標(biāo)志位用于指示所述終端禁止所述強(qiáng)制提取字節(jié)碼文件標(biāo)志位生效;
根據(jù)所述清楚標(biāo)志位所指示的內(nèi)容,從所述終端的數(shù)據(jù)分區(qū)中提取所述第三方應(yīng)用的機(jī)器碼文件;
在提取所述機(jī)器碼文件之后,設(shè)置所述清除標(biāo)志位失效。
根據(jù)本公開實(shí)施例的第二方面,提供一種文件運(yùn)行方法,包括:
在終端首次開機(jī)前,將所述第三方應(yīng)用的字節(jié)碼文件編譯成機(jī)器碼文件;
將所述機(jī)器碼文件存儲在所述終端的數(shù)據(jù)分區(qū)。
可選的,所述方法還包括:
在預(yù)設(shè)的系統(tǒng)框架源碼中存在強(qiáng)制提取字節(jié)碼文件標(biāo)志位時,通過修改所述系統(tǒng)框架源碼來禁止所述強(qiáng)制提取字節(jié)碼文件標(biāo)志位生效;
其中,所述強(qiáng)制提取字節(jié)碼文件標(biāo)志位用于指示所述終端提取所述字節(jié)碼文件。
可選的,所述將所述第三方應(yīng)用的字節(jié)碼文件編譯成機(jī)器碼文件,包括:
確定所述第三方應(yīng)用支持的操作系統(tǒng)類型;
根據(jù)所述操作類型將所述第三方應(yīng)用的字節(jié)碼文件編譯成機(jī)器碼文件。
可選的,所述操作系統(tǒng)類型包括32位操作系統(tǒng)和64位操作系統(tǒng);
所述根據(jù)所述操作系統(tǒng)類型將所述第三方應(yīng)用的字節(jié)碼文件編譯成機(jī)器碼文件,包括:
當(dāng)所述第三方應(yīng)用支持32位操作系統(tǒng)和64位操作系統(tǒng),將所述字節(jié)碼文件編譯為32位機(jī)器碼文件和64位機(jī)器碼文件;
或,當(dāng)所述第三方應(yīng)用支持32位操作系統(tǒng)且不支持64位操作系統(tǒng),將所述字節(jié)碼文件編譯為32位機(jī)器碼文件;
或,當(dāng)所述第三方應(yīng)用支持64位操作系統(tǒng)且不支持32位操作系統(tǒng),將所述字節(jié)碼文件編譯為64位機(jī)器碼文件。
可選的,所述確定所述第三方應(yīng)用支持的操作系統(tǒng)類型,包括:
分別檢測所述第三方應(yīng)用的解壓后的安裝包是否包括32位目錄和64位目錄;
當(dāng)所述解壓后的安裝包同時包括所述32位目錄和所述64位目錄,確定所述第三方應(yīng)用支持32位操作系統(tǒng)和64位操作系統(tǒng);
當(dāng)或,所述解壓后的安裝包包括所述32位目錄且不包括所述64位目錄,確定所述第三方應(yīng)用支持32位操作系統(tǒng)且不支持所述64位操作系統(tǒng);
或,當(dāng)所述解壓后的安裝包包括和所述64位目錄且不包括所述32位目錄,確定所述第三方應(yīng)用支持64位操作系統(tǒng)且不支持32位操作系統(tǒng)。
可選的,所述方法還包括:
在所述終端的數(shù)據(jù)分區(qū)存儲所述字節(jié)碼文件。
可選的,所述在所述終端的數(shù)據(jù)分區(qū)存儲所述字節(jié)碼文件,包括:
檢測預(yù)設(shè)的安卓編譯文件中,所述第三方應(yīng)用的應(yīng)用設(shè)置;
當(dāng)所述應(yīng)用設(shè)置為保留字節(jié)碼文件時,在所述終端的數(shù)據(jù)分區(qū)存儲所述字節(jié)碼文件;
當(dāng)所述應(yīng)用設(shè)置為不保留字節(jié)碼文件時,將所述應(yīng)用設(shè)置修改為保留字節(jié)碼文件,并在所述終端的數(shù)據(jù)分區(qū)存儲所述字節(jié)碼文件。
可選的,所述通過修改所述系統(tǒng)框架源碼來禁止所述強(qiáng)制提取字節(jié)碼文件標(biāo)志位生效,包括:
在所述終端的數(shù)據(jù)分區(qū)中設(shè)置清除標(biāo)志位,所述清除標(biāo)志位用于指示所述終端禁止所述強(qiáng)制提取字節(jié)碼文件標(biāo)志位生效。
根據(jù)本公開實(shí)施例的第三方面,提供一種文件運(yùn)行設(shè)備,包括:
提取模塊,被配置為在運(yùn)行終端中預(yù)置的第三方應(yīng)用時,從所述終端的數(shù)據(jù)分區(qū)中提取所述第三方應(yīng)用的機(jī)器碼文件;
運(yùn)行模塊,被配置為運(yùn)行所述機(jī)器碼文件;
其中,所述機(jī)器碼文件是在所述終端首次開機(jī)前,編譯裝置將所述第三方應(yīng)用的字節(jié)碼文件編譯得到的。
可選的,所述設(shè)備還包括:
獲取模塊,被配置為在所述終端的系統(tǒng)升級后需要對所述第三方應(yīng)用進(jìn)行重新安裝時,從所述終端的數(shù)據(jù)分區(qū)獲取所述字節(jié)碼文件;
編譯模塊,被配置為將所述字節(jié)碼文件編譯成機(jī)器碼文件;
其中,所述字節(jié)碼文件是所述編譯裝置預(yù)先存儲在所述終端的數(shù)據(jù)分區(qū)的。
可選的,所述機(jī)器碼文件存儲在所述終端的數(shù)據(jù)分區(qū);
所述設(shè)備還包括:安裝模塊,被配置為在所述終端首次開機(jī)時,將所述第三方應(yīng)用安裝在所述終端的數(shù)據(jù)分區(qū)。
可選的,所述提取模塊,被配置為:
在所述終端首次開機(jī)時,檢測所述終端的數(shù)據(jù)分區(qū)中的清除標(biāo)志位,所述清除標(biāo)志位用于指示所述終端禁止所述強(qiáng)制提取字節(jié)碼文件標(biāo)志位生效;
根據(jù)所述清楚標(biāo)志位所指示的內(nèi)容,從所述終端的數(shù)據(jù)分區(qū)中提取所述第三方應(yīng)用的機(jī)器碼文件;
在提取所述機(jī)器碼文件之后,設(shè)置所述清除標(biāo)志位失效。
根據(jù)本公開實(shí)施例的第四方面,提供一種文件運(yùn)行設(shè)備,包括:
編譯模塊,被配置為在終端首次開機(jī)前,將所述第三方應(yīng)用的字節(jié)碼文件編譯成機(jī)器碼文件;
第一存儲模塊,被配置為將所述機(jī)器碼文件存儲在所述終端的數(shù)據(jù)分區(qū)。
可選的,所述設(shè)備還包括:
修改模塊,被配置為在預(yù)設(shè)的系統(tǒng)框架源碼中存在強(qiáng)制提取字節(jié)碼文件標(biāo)志位時,通過修改所述系統(tǒng)框架源碼來禁止所述強(qiáng)制提取字節(jié)碼文件標(biāo)志位生效;
其中,所述強(qiáng)制提取字節(jié)碼文件標(biāo)志位用于指示所述終端提取所述字節(jié)碼文件。
可選的,所述編譯模塊,包括:
確定子模塊,被配置為確定所述第三方應(yīng)用支持的操作系統(tǒng)類型;
編譯子模塊,被配置為根據(jù)所述操作系統(tǒng)類型將所述第三方應(yīng)用的字節(jié)碼文件編譯成機(jī)器碼文件。
可選的,所述操作系統(tǒng)類型包括32位操作系統(tǒng)和64位操作系統(tǒng);
所述編譯子模塊,被配置為:
當(dāng)所述第三方應(yīng)用支持32位操作系統(tǒng)和64位操作系統(tǒng),將所述字節(jié)碼文件編譯為32位機(jī)器碼文件和64位機(jī)器碼文件;
或,當(dāng)所述第三方應(yīng)用支持32位操作系統(tǒng)且不支持64位操作系統(tǒng),將所述字節(jié)碼文件編譯為32位機(jī)器碼文件;
或,當(dāng)所述第三方應(yīng)用支持64位操作系統(tǒng)且不支持32位操作系統(tǒng),將所述字節(jié)碼文件編譯為64位機(jī)器碼文件。
可選的,所述確定子模塊,被配置為:
分別檢測所述第三方應(yīng)用的解壓后的安裝包是否包括32位目錄和64位目錄;
當(dāng)所述解壓后的安裝包同時包括所述32位目錄和所述64位目錄,確定所述第三方應(yīng)用支持32位操作系統(tǒng)和64位操作系統(tǒng);
或,當(dāng)所述解壓后的安裝包包括所述32位目錄且不包括所述64位目錄,確定所述第三方應(yīng)用支持32位操作系統(tǒng)且不支持64位操作系統(tǒng);
或,當(dāng)所述解壓后的安裝包包括和所述64位目錄且不包括所述32位目錄,確定所述第三方應(yīng)用支持64位操作系統(tǒng)且不支持32位操作系統(tǒng)。
可選的,所述設(shè)備還包括:
第二存儲模塊,被配置為在所述終端的數(shù)據(jù)分區(qū)存儲所述字節(jié)碼文件。
可選的,所述第二存儲模塊,被配置為:
檢測預(yù)設(shè)的安卓編譯文件中,所述第三方應(yīng)用的應(yīng)用設(shè)置;
當(dāng)所述應(yīng)用設(shè)置為保留字節(jié)碼文件時,在所述終端的數(shù)據(jù)分區(qū)存儲所述字節(jié)碼文件;
當(dāng)所述應(yīng)用設(shè)置為不保留字節(jié)碼文件時,將所述應(yīng)用設(shè)置修改為保留字節(jié)碼文件,并在所述終端的數(shù)據(jù)分區(qū)存儲所述字節(jié)碼文件。
可選的,所述修改模塊,被配置為:
在所述終端的數(shù)據(jù)分區(qū)中設(shè)置清除標(biāo)志位,所述清除標(biāo)志位用于指示所述終端禁止所述強(qiáng)制提取字節(jié)碼文件標(biāo)志位生效。
根據(jù)本公開實(shí)施例的第五方面,提供一種文件運(yùn)行設(shè)備,包括:
處理器;
用于存儲所述處理器的可執(zhí)行指令的存儲器;
其中,所述處理器被配置為:
在運(yùn)行終端中預(yù)置的第三方應(yīng)用時,從所述終端的數(shù)據(jù)分區(qū)中提取所述第三方應(yīng)用的機(jī)器碼文件;
運(yùn)行所述機(jī)器碼文件;
其中,所述機(jī)器碼文件是在所述終端首次開機(jī)前,編譯裝置將所述第三方應(yīng)用的字節(jié)碼文件編譯得到的。
根據(jù)本公開實(shí)施例的第六方面,提供一種文件運(yùn)行設(shè)備,包括:
處理器;
用于存儲所述處理器的可執(zhí)行指令的存儲器;
其中,所述處理器被配置為:
在終端首次開機(jī)前,將所述第三方應(yīng)用的字節(jié)碼文件編譯成機(jī)器碼文件;
將所述機(jī)器碼文件存儲在所述終端的數(shù)據(jù)分區(qū)。
本公開實(shí)施例提供的技術(shù)方案帶來的有益效果是:
本公開實(shí)施例提供的文件運(yùn)行方法及設(shè)備,在運(yùn)行預(yù)置的第三方應(yīng)用時,可以在數(shù)據(jù)分區(qū)中提取到終端首次開機(jī)前已經(jīng)編譯好的第三方應(yīng)用的機(jī)器碼文件,減少了終端首次開機(jī)的時長,提高了終端首次開機(jī)的速度。
應(yīng)當(dāng)理解的是,以上的一般描述和后文的細(xì)節(jié)描述僅是示例性的,并不能限制本公開。
附圖說明
為了更清楚地說明本公開實(shí)施例中的技術(shù)方案,下面將對實(shí)施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本公開的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1-1是根據(jù)本公開各個實(shí)施例提供的文件運(yùn)行方法所涉及的一種實(shí)施環(huán)境的示意圖;
圖1-2是根據(jù)一示例性實(shí)施例示出的一種文件運(yùn)行方法的流程圖;
圖1-3是根據(jù)一示例性實(shí)施例示出的一種文件運(yùn)行方法的流程圖;
圖2-1是根據(jù)一示例性實(shí)施例示出的一種文件運(yùn)行方法的流程圖;
圖2-2是根據(jù)一示例性實(shí)施例示出的一種編譯字節(jié)碼文件的方法的流程圖;
圖2-3是根據(jù)一示例性實(shí)施例示出的一種存儲字節(jié)碼文件的方法的流程圖;
圖2-4是根據(jù)一示例性實(shí)施例示出的一種重新安裝預(yù)置的第三方應(yīng)用的方法的流程圖;
圖3-1是根據(jù)一示例性實(shí)施例示出的一種文件運(yùn)行設(shè)備的框圖;
圖3-2是根據(jù)一示例性實(shí)施例示出的另一種文件運(yùn)行設(shè)備的框圖;
圖3-3是根據(jù)一示例性實(shí)施例示出的再一種文件運(yùn)行設(shè)備的框圖;
圖4-1是根據(jù)一示例性實(shí)施例示出的一種文件運(yùn)行設(shè)備的框圖;
圖4-2是根據(jù)一示例性實(shí)施例示出的另一種文件運(yùn)行設(shè)備的框圖;
圖4-3是根據(jù)一示例性實(shí)施例示出的一種編譯模塊的框圖;
圖4-4是根據(jù)一示例性實(shí)施例示出的再一種文件運(yùn)行設(shè)備的框圖;
圖5是根據(jù)一示例性實(shí)施例示出的一種文件運(yùn)行設(shè)備的框圖。
具體實(shí)施方式
為使本公開的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對本公開實(shí)施方式作進(jìn)一步地詳細(xì)描述。
請參見圖1-1,其示出了本公開部分實(shí)施例中提供的文件運(yùn)行方法所涉及的實(shí)施環(huán)境的示意圖。該實(shí)施環(huán)境可以包括:編譯裝置110和至少一個終端120。
編譯裝置110可以是一臺計算機(jī)。終端120可以為智能手機(jī)、電腦、多媒體播放器、電子閱讀器、可穿戴式設(shè)備等。編譯裝置110和終端120之間可以通過通信線建立連接,該通信線可以為通用串行總線(英文:Universal Serial Bus;簡稱:USB)線。編譯裝置110可以對終端120中的系統(tǒng)文件進(jìn)行操作。該系統(tǒng)文件可以包括第三方應(yīng)用的相關(guān)文件。
圖1-2是本公開一示意性實(shí)施例提供的一種文件運(yùn)行方法的流程圖,該方法可以應(yīng)用于圖1-1所示的終端120中,該方法包括:
步驟201、在運(yùn)行終端中預(yù)置的第三方應(yīng)用時,終端從終端的數(shù)據(jù)分區(qū)中提取第三方應(yīng)用的機(jī)器碼文件。
其中,機(jī)器碼文件是一種二進(jìn)制形式文件,該文件在第三方應(yīng)用運(yùn)行中可以被終端直接執(zhí)行。
步驟202、終端運(yùn)行機(jī)器碼文件。其中,該機(jī)器碼文件是在終端首次開機(jī)前,編譯裝置將第三方應(yīng)用的字節(jié)碼文件編譯得到的。
其中,該編譯裝置可以是計算機(jī)。字節(jié)碼文件本身也是一種二進(jìn)制形式的代碼文件,但是字節(jié)碼文件不能直接被終端執(zhí)行,被編譯成機(jī)器碼文件之后才能被終端執(zhí)行。
綜上所述,本公開實(shí)施例提供的文件運(yùn)行方法,在運(yùn)行預(yù)置的第三方應(yīng)用時,可以在數(shù)據(jù)分區(qū)中提取到終端首次開機(jī)前已經(jīng)編譯好的第三方應(yīng)用的機(jī)器碼文件,減少了終端首次開機(jī)的時長,提高了終端首次開機(jī)的速度。
圖1-3是本公開一示意性實(shí)施例提供的一種文件運(yùn)行方法的流程圖,該方法可以應(yīng)用于圖1-1所示的編譯裝置110中,該方法包括:
步驟301、在終端首次開機(jī)前,編譯裝置將第三方應(yīng)用的字節(jié)碼文件編譯成機(jī)器碼文件。
步驟302、編譯裝置將機(jī)器碼文件存儲在終端的數(shù)據(jù)分區(qū)。
綜上所述,本公開實(shí)施例提供的文件運(yùn)行方法,通過在終端首次開機(jī)前,將第三方應(yīng)用的字節(jié)碼文件編譯成機(jī)器碼文件,使得終端在首次開始過程中可以省略將字節(jié)碼文件編譯成機(jī)器碼文件的步驟,減少了終端首次開機(jī)的時長,提高了終端首次開機(jī)的速度。
圖2-1是本公開一示意性實(shí)施例提供的另一種文件運(yùn)行方法的流程圖,該方法包括:
步驟401、在終端首次開機(jī)前,編譯裝置將第三方應(yīng)用的字節(jié)碼文件編譯成機(jī)器碼文件。
可選的,如圖2-2所示,步驟401可以包括:
步驟4011、編譯裝置確定第三方應(yīng)用支持的操作系統(tǒng)類型。
其中,該操作系統(tǒng)類型包括32位操作系統(tǒng)和64位操作系統(tǒng)。一般情況下,如果該第三方應(yīng)用支持32位操作系統(tǒng),則該第三方應(yīng)用可以在搭載32位操作系統(tǒng)的終端上運(yùn)行,由于操作系統(tǒng)的向下兼容性,該第三方應(yīng)用也可以在搭載64位操作系統(tǒng)的終端上運(yùn)行;如果該第三方應(yīng)用支持64位操作系統(tǒng),則該第三方應(yīng)用只能在搭載64位操作系統(tǒng)的終端上運(yùn)行。
當(dāng)?shù)谌綉?yīng)用和終端搭載的操作系統(tǒng)不匹配時,例如,將支持64位操作系統(tǒng)的第三方應(yīng)用A安裝在搭載32位操作系統(tǒng)的終端上時,就會造成該第三方應(yīng)用A運(yùn)行異常。為了避免第三方應(yīng)用運(yùn)行異常的問題,需要確定第三方應(yīng)用支持的操作系統(tǒng)類型。
可選的,步驟4011可以包括:
步驟4011a、編譯裝置分別檢測第三方應(yīng)用的解壓后的安裝包是否包括32位目錄和64位目錄。
可選的,可以先通過解壓縮(英文:unzip)命令對第三方應(yīng)用的安裝包文件進(jìn)行解壓,然后檢測該解壓之后的安裝包文件中的庫(英文:library;簡稱lib)文件中是否包括“armeabi”目錄(即32位目錄)和“arm64”目錄(即64位目錄)。
步驟4011b、當(dāng)解壓后的安裝包中同時包括32位目錄和64位目錄,編譯裝置確定該第三方應(yīng)用支持32位操作系統(tǒng)和64位操作系統(tǒng)。
示例的,第三方應(yīng)用B預(yù)置在數(shù)據(jù)分區(qū)中,在對該第三方應(yīng)用B的安裝包文件進(jìn)行解壓之后,檢測到該第三方應(yīng)用B的安裝包文件中的lib庫中同時包含有“armeabi”目錄和“arm64”目錄,即同時包含有32位目錄和64位目錄時,編譯裝置確定該第三方應(yīng)用B支持32位操作系統(tǒng)和64位操作系統(tǒng)。
步驟4011c、當(dāng)解壓后的安裝包中包括32位目錄且不包括64位目錄,編譯裝置確定該第三方應(yīng)用支持32位操作系統(tǒng)且不支持64位操作系統(tǒng)。
示例的,第三方應(yīng)用C預(yù)置在數(shù)據(jù)分區(qū)中,在對該第三方應(yīng)用C的安裝包文件進(jìn)行解壓之后,檢測到該第三方應(yīng)用C的安裝包文件中的lib庫中包括有“armeabi”目錄且不包含“arm64”目錄,即包括32位目錄且不包括64位目錄時,編譯裝置確定該第三方應(yīng)用C支持32位操作系統(tǒng)且不支持64位操作系統(tǒng)。
步驟4011d、當(dāng)解壓后的安裝包中包括64位目錄且不包括32位目錄,編譯裝置確定該第三方應(yīng)用支持64位操作系統(tǒng)且不支持32位操作系統(tǒng)。
示例的,第三方應(yīng)用D預(yù)置在數(shù)據(jù)分區(qū)中,在對該第三方應(yīng)用D的安裝包文件進(jìn)行解壓之后,檢測到該第三方應(yīng)用D的安裝包文件中的lib庫中包括有“arm64”目錄且不包括“armeabi”目錄,即就是包括64位目錄且不包括32位目錄時,編譯裝置確定該第三方應(yīng)用D支持64位操作系統(tǒng)且不支持32位操作系統(tǒng)。
步驟4012、編譯裝置根據(jù)操作系統(tǒng)類型將第三方應(yīng)用的字節(jié)碼文件編譯成機(jī)器碼文件。
可選的,根據(jù)第三方應(yīng)用支持的操作系統(tǒng)類型,對第三方應(yīng)用的字節(jié)碼文件進(jìn)行相應(yīng)的編譯,可以保證終端能夠提取到和終端上搭載的操作系統(tǒng)類型對應(yīng)的機(jī)器碼文件,進(jìn)而保證第三方應(yīng)用能夠正常運(yùn)行。
可選的,步驟4012可以包括:
步驟4012a、當(dāng)?shù)谌綉?yīng)用支持32位操作系統(tǒng)和64位操作系統(tǒng),將字節(jié)碼文件編譯為32位機(jī)器碼文件和64位機(jī)器碼文件。
對于同時支持32位操作系統(tǒng)和64位操作系統(tǒng)的第三方應(yīng)用,可以將該第三方應(yīng)用的字節(jié)碼文件編譯為32位機(jī)器碼和64位機(jī)器碼,以保證在實(shí)際應(yīng)用的時候,無論該第三方應(yīng)用是安裝在搭載32位操作系統(tǒng)的終端上,還是安裝在搭載64位操作系統(tǒng)的終端上,都能正常運(yùn)行。
示例的,將同時支持32位操作系統(tǒng)和64位操作系統(tǒng)的第三方應(yīng)用E的字節(jié)碼文件編譯為32位機(jī)器碼文件和64位機(jī)器碼文件,然后將該第三方應(yīng)用E預(yù)置在搭載32位操作系統(tǒng)的終端上,在第三方應(yīng)用E安裝成功后,終端需要運(yùn)行該第三方應(yīng)用E的時候,可以提取到該第三方應(yīng)用E的32位機(jī)器碼文件;或者將該第三方應(yīng)用E預(yù)置在搭載64位操作系統(tǒng)的終端上,在第三方應(yīng)用E安裝成功后,終端需要運(yùn)行該第三方應(yīng)用E的時候,便可以提取到該第三方應(yīng)用E的64位機(jī)器碼文件。
實(shí)際應(yīng)用中,可以將第三方應(yīng)用預(yù)置在終端中,終端將第三方應(yīng)用安裝成功后,在運(yùn)行第三方應(yīng)用的過程中,可以對第三方應(yīng)用進(jìn)行分享,對于同時支持32位操作系統(tǒng)和64位操作系統(tǒng)的第三方應(yīng)用,如果在對該第三方應(yīng)用的字節(jié)碼文件進(jìn)行編譯的時候,將字節(jié)碼文件編譯為32位機(jī)器碼和64位機(jī)器碼,在終端將該第三方應(yīng)用進(jìn)行分享的時候,就可以將其分享至其他搭載32位操作系統(tǒng)的終端或者搭載64位操作系統(tǒng)的終端上,減小了第三方應(yīng)用的分享局限性。
示例的,搭載32位操作系統(tǒng)的終端A上安裝有同時支持32位操作系統(tǒng)和64位操作系統(tǒng)的第三方應(yīng)用F,在對該第三方應(yīng)用F的字節(jié)碼文件進(jìn)行編譯的時候,將字節(jié)碼文件編譯為32位機(jī)器碼和64位機(jī)器碼。在分享操作中,終端A可以將該第三方應(yīng)用F分享給搭載64位操作系統(tǒng)的終端B,該第三方應(yīng)用F可以在終端B上正常安裝及運(yùn)行。如果在對該第三方應(yīng)用F的字節(jié)碼文件進(jìn)行編譯的時候,只將字節(jié)碼文件編譯為32位機(jī)器碼,那么將該第三方應(yīng)用F分享給搭載64位操作系統(tǒng)的終端B之后,該第三方應(yīng)用F在終端B上安裝運(yùn)行時可能會出現(xiàn)異常。
步驟4012b、當(dāng)?shù)谌綉?yīng)用支持32位操作系統(tǒng)且不支持64位操作系統(tǒng),將字節(jié)碼文件編譯為32位機(jī)器碼文件。
示例的,將支持32位操作系統(tǒng)且不支持64位操作系統(tǒng)的第三方應(yīng)用G的字節(jié)碼文件編譯為32位機(jī)器碼文件,然后將該第三方應(yīng)用G預(yù)置在搭載32位操作系統(tǒng)的終端上,在第三方應(yīng)用G安裝成功后,終端需要運(yùn)行該第三方應(yīng)用G的時候,便可以提取到該第三方應(yīng)用G的32位機(jī)器碼文件。
步驟4012c、當(dāng)?shù)谌綉?yīng)用支持64位操作系統(tǒng)且不支持32位操作系統(tǒng),將字節(jié)碼文件編譯為64位機(jī)器碼文件。
示例的,將支持64位操作系統(tǒng)且不支持32位操作系統(tǒng)的第三方應(yīng)用H的字節(jié)碼文件編譯為64位機(jī)器碼文件,然后將該第三方應(yīng)用H預(yù)置在搭載64位操作系統(tǒng)的終端上,在第三方應(yīng)用H安裝成功后,終端需要運(yùn)行該第三方應(yīng)用H的時候,便可以提取到該第三方應(yīng)用H的64位機(jī)器碼文件。
步驟402、編譯裝置將機(jī)器碼文件存儲在終端的數(shù)據(jù)分區(qū)。
可選的,編譯裝置將第三方應(yīng)用的字節(jié)碼文件編譯成機(jī)器碼文件之后,編譯裝置可以將編譯好的機(jī)器碼文件存儲在終端的數(shù)據(jù)分區(qū)。將第三方應(yīng)用預(yù)置在數(shù)據(jù)分區(qū)中,可以保證該第三方應(yīng)用支持卸載。
步驟403、編譯裝置在終端的數(shù)據(jù)分區(qū)存儲第三方應(yīng)用的字節(jié)碼文件。
其中,該字節(jié)碼文件為預(yù)置在終端的數(shù)據(jù)分區(qū)的第三方應(yīng)用的字節(jié)碼文件。預(yù)置在終端的數(shù)據(jù)分區(qū)的第三方應(yīng)用在終端的系統(tǒng)升級后,需要重新進(jìn)行安裝。該安裝操作是在終端的系統(tǒng)升級完成后,終端的第一次開機(jī)過程中進(jìn)行的。在安裝過程中,需要重新提取該第三方應(yīng)用的字節(jié)碼文件。
為了防止在系統(tǒng)升級后終端第一次開機(jī)對第三方應(yīng)用進(jìn)行安裝的過程中無法找到字節(jié)碼文件,造成安裝異常的問題,編譯裝置需要在終端的數(shù)據(jù)分區(qū)中存儲第三方應(yīng)用的字節(jié)碼文件,以便后期系統(tǒng)升級后,第三方應(yīng)用重新安裝時使用,保證第三方應(yīng)用的順利安裝。對于編譯裝置在終端的數(shù)據(jù)分區(qū)中存儲第三方應(yīng)用的字節(jié)碼文件的順序本公開實(shí)施例不做限定,例如,可以是在將第三方應(yīng)用的字節(jié)碼文件編譯成機(jī)器碼文件之前,也可以是在將第三方應(yīng)用的字節(jié)碼文件編譯成機(jī)器碼之后。
可選的,如圖2-3所示,步驟403可以包括:
步驟4031、編譯裝置檢測預(yù)設(shè)的安卓編譯文件中,第三方應(yīng)用的應(yīng)用設(shè)置。
其中,該預(yù)設(shè)的安裝編譯文件是安卓系統(tǒng)中具有編譯功能的文件,該預(yù)設(shè)的安卓編譯文件可以為“Android.mk”文件。其中,該應(yīng)用設(shè)置用于指示是否保留字節(jié)碼文件的設(shè)置。
步驟4032、當(dāng)應(yīng)用設(shè)置為保留字節(jié)碼文件時,編譯裝置在終端的數(shù)據(jù)分區(qū)存儲字節(jié)碼文件。
示例的,對預(yù)置在終端的數(shù)據(jù)分區(qū)的第三方應(yīng)用D進(jìn)行編譯的時候,如果應(yīng)用設(shè)置為保留字節(jié)碼文件,那么在編譯操作完成之后,終端的數(shù)據(jù)分區(qū)中會保留該第三方應(yīng)用D的字節(jié)碼文件。
步驟4033、當(dāng)應(yīng)用設(shè)置為不保留字節(jié)碼文件時,編譯裝置將應(yīng)用設(shè)置修改為保留字節(jié)碼文件,并在終端的數(shù)據(jù)分區(qū)存儲字節(jié)碼文件。
可選的,可以通過對“Android.mk”文件進(jìn)行修改將應(yīng)用設(shè)置修改為保留字節(jié)碼文件,該修改操作可以是設(shè)置如下代碼:
LOCAL_DEX_PREOPT:=nostripping;
設(shè)置了該代碼后,在編譯裝置將字節(jié)碼文件編譯為機(jī)器碼文件之后,終端的數(shù)據(jù)分區(qū)中會保留第三方應(yīng)用的字節(jié)碼文件。
示例的,對預(yù)置在終端的數(shù)據(jù)分區(qū)的第三方應(yīng)用E進(jìn)行編譯的時候,如果應(yīng)用設(shè)置為不保留字節(jié)碼文件,那么在進(jìn)行編譯操作之前,對應(yīng)用設(shè)置進(jìn)行修改,將該應(yīng)用設(shè)置修改為保留字節(jié)碼文件,修改完成之后,進(jìn)行編譯操作,那么在該編譯操作完成之后,終端的數(shù)據(jù)分區(qū)中存儲有該第三方應(yīng)用E的字節(jié)碼文件。
步驟404、編譯裝置在預(yù)設(shè)的系統(tǒng)框架源碼中存在強(qiáng)制提取字節(jié)碼文件標(biāo)志位時,通過修改系統(tǒng)框架源碼來禁止強(qiáng)制提取字節(jié)碼文件標(biāo)志位生效。
其中,該強(qiáng)制提取字節(jié)碼文件標(biāo)志位用于指示終端提取字節(jié)碼文件。
可選的,該強(qiáng)制提取字節(jié)碼文件標(biāo)志位可以表示為“SCAN_FORCE_DEX”,可以通過對預(yù)設(shè)的系統(tǒng)框架(英文:framework)源碼進(jìn)行修改來禁止“SCAN_FORCE_DEX”標(biāo)志位生效,保證終端在出廠后首次開機(jī)對預(yù)置的第三方應(yīng)用進(jìn)行安裝的時候不會強(qiáng)制提取字節(jié)碼文件,而忽略已經(jīng)編譯好的機(jī)器碼文件。其中,該系統(tǒng)框架源碼是組成系統(tǒng)框架層的一種開源代碼。
示例的,編譯裝置可以在終端的數(shù)據(jù)分區(qū)中設(shè)置清除標(biāo)志位,該清除標(biāo)志位用于指示終端禁止強(qiáng)制提取字節(jié)碼文件標(biāo)志位生效。
可選的,可以將該清除標(biāo)志位設(shè)置在“/data/app”目錄下,該清除標(biāo)志位可以起到標(biāo)識作用。在該清除標(biāo)志位生效時,終端可以根據(jù)該清除標(biāo)志位禁止強(qiáng)制提取字節(jié)碼文件標(biāo)志位生效,在該清除標(biāo)志位無效或被刪除時,強(qiáng)制提取字節(jié)碼文件標(biāo)志位生效,終端可以在需要提取字節(jié)碼文件時,根據(jù)強(qiáng)制提取字節(jié)碼文件標(biāo)志位時,提取字節(jié)碼文件。
步驟405、編譯裝置將系統(tǒng)文件配置在終端內(nèi)。其中該系統(tǒng)文件包括第三方應(yīng)用的安裝文件。
可選的,編譯裝置可以先將包含有第三方應(yīng)用的安裝文件的系統(tǒng)文件打包成系統(tǒng)鏡像文件,然后將該系統(tǒng)鏡像文件配置在終端內(nèi)。其中,該第三方應(yīng)用的安裝文件中包含有該第三方應(yīng)用的字節(jié)碼文件及機(jī)器碼文件。
步驟406、在終端首次開機(jī)時,終端將第三方應(yīng)用安裝在終端的數(shù)據(jù)分區(qū)。
目前安卓系統(tǒng)所使用的ART虛擬機(jī)要求對于預(yù)置在終端的數(shù)據(jù)分區(qū)的第三方應(yīng)用,在該第三方應(yīng)用運(yùn)行提取機(jī)器碼文件的時候,該提取路徑要和該第三方應(yīng)用的安裝路徑保持一致,這樣才能保證該第三方應(yīng)用正常運(yùn)行。
第三方應(yīng)用默認(rèn)安裝在系統(tǒng)分區(qū)下,對于預(yù)置在終端的數(shù)據(jù)分區(qū)下的第三方應(yīng)用,由于其提取機(jī)器碼文件的路徑在數(shù)據(jù)分區(qū)下,因此需要設(shè)置將第三方應(yīng)用的安裝位置設(shè)置在數(shù)據(jù)分區(qū),以保證提取路徑和該安裝路徑一致。
具體的設(shè)置方法可以是對安卓編譯“Android.mk”文件進(jìn)行修改,該修改操作可以是在“Android.mk”文件中增加如下代碼:
LOCAL_MOUDLE_PATH:=$(TARGET_OUT_DATA_APPS);
該代碼指示將第三方應(yīng)用安裝在終端的數(shù)據(jù)分區(qū)的應(yīng)用程序(英文:Application;簡稱:APP)目錄下,即將該第三方應(yīng)用安裝在“/data/app”目錄下。
步驟407、在運(yùn)行終端中預(yù)置的第三方應(yīng)用時,終端從終端的數(shù)據(jù)分區(qū)中提取第三方應(yīng)用的機(jī)器碼文件。
具體的,步驟407可以包括:
步驟X1、終端在終端首次開機(jī)時,檢測終端的數(shù)據(jù)分區(qū)中的清除標(biāo)志位。
其中,該清除標(biāo)志位用于指示終端禁止強(qiáng)制提取字節(jié)碼文件標(biāo)志位生效。
步驟X2、終端根據(jù)清除標(biāo)志位所指示的內(nèi)容,從終端的數(shù)據(jù)分區(qū)中提取第三方應(yīng)用的機(jī)器碼文件。
由于清除標(biāo)志位指示終端禁止強(qiáng)制提取字節(jié)碼文件標(biāo)志位生效,在終端首次開機(jī)時,終端不會去提取第三方應(yīng)用的字節(jié)碼文件進(jìn)行編譯操作,可以直接從終端的數(shù)據(jù)分區(qū)中提取第三方應(yīng)用的機(jī)器碼文件。
實(shí)際應(yīng)用中,當(dāng)終端需要運(yùn)行某一第三方應(yīng)用,且該應(yīng)用為預(yù)置在終端中的第三方應(yīng)用時,終端也可以從終端的數(shù)據(jù)分區(qū)中提取該第三方應(yīng)用的機(jī)器碼文件。示例的,預(yù)置在終端的數(shù)據(jù)分區(qū)的第三方應(yīng)用A,終端首次開機(jī)時將該第三方應(yīng)用A安裝在終端的數(shù)據(jù)分區(qū),安裝成功后,在需要運(yùn)行該第三方應(yīng)用A時,終端從終端的數(shù)據(jù)分區(qū)中提取該第三方應(yīng)用A的機(jī)器碼文件。
步驟X3、終端在提取機(jī)器碼文件之后,設(shè)置清除標(biāo)志位失效。
實(shí)際應(yīng)用中,終端在提取機(jī)器碼文件之后,也可以將該清除標(biāo)志位刪除。示例的,如果終端在提取機(jī)器碼文件之后,設(shè)置該清除標(biāo)志位設(shè)置位失效,也即是將該清除標(biāo)志位設(shè)置為失效位,那么在終端非首次開機(jī)且需要提取字節(jié)碼文件的時候,需要先檢測該清除標(biāo)志位,檢測到該清除標(biāo)志位為失效位后,可以對字節(jié)碼文件進(jìn)行提取;如果終端在提取機(jī)器碼文件之后,將該清除標(biāo)志位刪除,那么在終端非首次開機(jī)且需要提取字節(jié)碼文件的時候,可以直接對字節(jié)碼文件進(jìn)行提取。
步驟408、終端運(yùn)行機(jī)器碼文件。其中,該機(jī)器碼文件是在終端首次開機(jī)前,編譯裝置將第三方應(yīng)用的字節(jié)碼文件編譯得到的。
其中,該編譯裝置可以是計算機(jī)。實(shí)際應(yīng)用中,終端的系統(tǒng)通常會進(jìn)行升級,在系統(tǒng)升級完成后,終端第一次開機(jī)的過程中,需要對預(yù)置在數(shù)據(jù)分區(qū)的第三方應(yīng)用進(jìn)行重新安裝,該重新安裝的方法可以為圖2-4所示的方法:
步驟420、在終端的系統(tǒng)升級后需要對第三方應(yīng)用進(jìn)行重新安裝時,終端從終端的數(shù)據(jù)分區(qū)獲取字節(jié)碼文件。
實(shí)際應(yīng)用中,數(shù)據(jù)分區(qū)的文件一般不參與升級,所以每次在終端的系統(tǒng)升級完成后的第一次開機(jī)過程中都需要對預(yù)置在數(shù)據(jù)分區(qū)的第三方應(yīng)用進(jìn)行重新安裝。在該安裝的過程中需要重新獲取該第三方應(yīng)用的字節(jié)碼文件,然后執(zhí)行步驟421。
步驟421、終端將字節(jié)碼文件編譯成機(jī)器碼文件。
可選的,將該字節(jié)碼文件編譯為機(jī)器碼文件,以便于該第三方應(yīng)用在后期的使用過程中能夠順利運(yùn)行。
綜上所述,本公開實(shí)施例提供的文件運(yùn)行方法,在運(yùn)行預(yù)置的第三方應(yīng)用時,可以在數(shù)據(jù)分區(qū)中提取到終端首次開機(jī)前已經(jīng)編譯好的第三方應(yīng)用的機(jī)器碼文件,減少了終端首次開機(jī)的時長,提高了終端首次開機(jī)的速度。
需要說明的是,本公開實(shí)施例提供的文件運(yùn)行方法步驟的先后順序可以進(jìn)行適當(dāng)調(diào)整,步驟也可以根據(jù)情況進(jìn)行相應(yīng)增減,例如,例如上述步驟403也可以在步驟401之前,只要保證在編譯裝置將第三方應(yīng)用的字節(jié)碼文件編譯成機(jī)器碼文件之后,數(shù)據(jù)分區(qū)中保留有第三方應(yīng)用的字節(jié)碼文件即可。當(dāng)步驟403位于步驟401之前時,可以先將第三方應(yīng)用的字節(jié)碼文件進(jìn)行復(fù)制,然后將其存儲在數(shù)據(jù)分區(qū)。完成該存儲操作之后,此時的數(shù)據(jù)分區(qū)中存在兩份第三方應(yīng)用的字節(jié)碼文件,然后編譯裝置將該兩份第三方應(yīng)用的字節(jié)碼文件中的其中一份字節(jié)碼文件編譯成機(jī)器碼文件,編譯操作完成后,數(shù)據(jù)分區(qū)中依然保留有該第三方應(yīng)用的字節(jié)碼文件。任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本公開揭露的技術(shù)范圍內(nèi),可輕易想到變化的方法,都應(yīng)涵蓋在本公開的保護(hù)范圍之內(nèi),因此不再贅述。
圖3-1是本公開一示意性實(shí)施例提供的一種文件運(yùn)行設(shè)備50的框圖,參見圖3-1,該文件運(yùn)行設(shè)備50可以包括:
提取模塊501,被配置為在運(yùn)行終端中預(yù)置的第三方應(yīng)用時,從終端的數(shù)據(jù)分區(qū)中提取第三方應(yīng)用的機(jī)器碼文件。
運(yùn)行模塊502,被配置為運(yùn)行機(jī)器碼文件。其中,該機(jī)器碼文件是在終端首次開機(jī)前,編譯裝置將第三方應(yīng)用的字節(jié)碼文件編譯得到的。
綜上所述,本公開實(shí)施例提供的文件運(yùn)行設(shè)備,在運(yùn)行預(yù)置的第三方應(yīng)用時,提取模塊可以在數(shù)據(jù)分區(qū)中提取到終端首次開機(jī)前已經(jīng)編譯好的第三方應(yīng)用的機(jī)器碼文件,運(yùn)行模塊可以運(yùn)行該機(jī)器碼文件,減少了終端首次開機(jī)的時長,提高了終端首次開機(jī)的速度。
可選的,提取模塊501還可以被配置為:
在終端首次開機(jī)時,檢測終端的數(shù)據(jù)分區(qū)中的清除標(biāo)志位,清除標(biāo)志位用于指示終端禁止強(qiáng)制提取字節(jié)碼文件標(biāo)志位生效。
根據(jù)清除標(biāo)志位所指示的內(nèi)容,從終端的數(shù)據(jù)分區(qū)中提取第三方應(yīng)用的機(jī)器碼文件。
在提取機(jī)器碼文件之后,設(shè)置清除標(biāo)志位失效。
圖3-2是本公開一示意性實(shí)施例提供的另一種文件運(yùn)行設(shè)備50的框圖,參見圖3-2,該文件運(yùn)行設(shè)備50可以包括:提取模塊501,運(yùn)行模塊502,獲取模塊503,編譯模塊504。
提取模塊501,被配置為在運(yùn)行終端中預(yù)置的第三方應(yīng)用時,從終端的數(shù)據(jù)分區(qū)中提取第三方應(yīng)用的機(jī)器碼文件。
運(yùn)行模塊502,被配置為運(yùn)行機(jī)器碼文件。其中,該機(jī)器碼文件是在終端首次開機(jī)前,編譯裝置將第三方應(yīng)用的字節(jié)碼文件編譯得到的。
獲取模塊503,被配置為在終端的系統(tǒng)升級需要對第三方應(yīng)用進(jìn)行重新安裝時,從終端的數(shù)據(jù)分區(qū)獲取字節(jié)碼文件。
編譯模塊504,被配置為將字節(jié)碼文件編譯成機(jī)器碼文件。
其中,該字節(jié)碼文件是編譯裝置在將預(yù)先存儲在終端的數(shù)據(jù)分區(qū)的。
圖3-3是本公開一示意性實(shí)施例提供的再一種文件運(yùn)行設(shè)備50的框圖,參見圖3-3,該文件運(yùn)行設(shè)備50可以包括:提取模塊501,運(yùn)行模塊502,安裝模塊505。
提取模塊501,被配置為在運(yùn)行終端中預(yù)置的第三方應(yīng)用時,從終端的數(shù)據(jù)分區(qū)中提取第三方應(yīng)用的機(jī)器碼文件。
運(yùn)行模塊502,被配置為運(yùn)行機(jī)器碼文件。其中,該機(jī)器碼文件是在終端首次開機(jī)前,編譯裝置將第三方應(yīng)用的字節(jié)碼文件編譯得到的。
安裝模塊505,被配置為在終端首次開機(jī)時,將第三方應(yīng)用安裝在終端的數(shù)據(jù)分區(qū)。
綜上所述,本公開實(shí)施例提供的文件運(yùn)行設(shè)備,在運(yùn)行預(yù)置的第三方應(yīng)用時,提取模塊可以在數(shù)據(jù)分區(qū)中提取到終端首次開機(jī)前已經(jīng)編譯好的第三方應(yīng)用的機(jī)器碼文件,運(yùn)行模塊可以運(yùn)行該機(jī)器碼文件,減少了終端首次開機(jī)的時長,提高了終端首次開機(jī)的速度。
圖4-1是本公開一示意性實(shí)施例提供的一種文件運(yùn)行設(shè)備60的框圖,參見圖4-1,該文件運(yùn)行設(shè)備60可以包括:
編譯模塊601,被配置為在終端首次開機(jī)前,將第三方應(yīng)用的字節(jié)碼文件編譯成機(jī)器碼文件。
第一存儲模塊602,被配置為將機(jī)器碼文件存儲在終端的數(shù)據(jù)分區(qū)。
綜上所述,本公開實(shí)施例提供的文件運(yùn)行設(shè)備,在終端首次開機(jī)前,通過編譯模塊將第三方應(yīng)用的字節(jié)碼文件編譯成機(jī)器碼文件,使得終端在首次開始過程中可以省略將字節(jié)碼文件編譯成機(jī)器碼文件的步驟,減少了終端首次開機(jī)的時長,提高了終端首次開機(jī)的速度。
圖4-2是本公開一示意性實(shí)施例提供的另一種文件運(yùn)行設(shè)備60的框圖,參見圖4-2,該文件運(yùn)行設(shè)備60可以包括:編譯模塊601,第一存儲模塊602,修改模塊603。
編譯模塊601,被配置為在終端首次開機(jī)前,將第三方應(yīng)用的字節(jié)碼文件編譯成機(jī)器碼文件。
第一存儲模塊602,被配置為將機(jī)器碼文件存儲在終端的數(shù)據(jù)分區(qū)。
修改模塊603,被配置為在預(yù)設(shè)的系統(tǒng)框架源碼中存在強(qiáng)制提取字節(jié)碼文件標(biāo)志位時,通過修改系統(tǒng)框架源碼來禁止強(qiáng)制提取字節(jié)碼文件標(biāo)志位生效。
其中,該強(qiáng)制提取字節(jié)碼文件標(biāo)志位用于指示終端提取字節(jié)碼文件。
可選的,修改模塊603還可以被配置為:在終端的數(shù)據(jù)分區(qū)中設(shè)置清除標(biāo)志位,該清除標(biāo)志位用于指示終端禁止強(qiáng)制提取字節(jié)碼文件標(biāo)志位生效。
圖4-3是本公開一示意性實(shí)施例提供的一種編譯模塊601的框圖,參見圖4-3,該編譯模塊601可以包括:
確定子模塊6011,被配置為確定第三方應(yīng)用支持的操作系統(tǒng)類型。
編譯子模塊6012,被配置為根據(jù)操作系統(tǒng)類型將第三方應(yīng)用的字節(jié)碼文件編譯成機(jī)器碼文件。
可選的,編譯子模塊6012,被配置為:
當(dāng)?shù)谌綉?yīng)用支持32位操作系統(tǒng)和64位操作系統(tǒng),將字節(jié)碼文件編譯為32位機(jī)器碼文件和64位機(jī)器碼文件。
或,當(dāng)?shù)谌綉?yīng)用支持32位操作系統(tǒng)且不支持64位操作系統(tǒng),將字節(jié)碼文件編譯為32位機(jī)器碼文件。
或,當(dāng)?shù)谌綉?yīng)用支持64位操作系統(tǒng)且不支持32位操作系統(tǒng),將字節(jié)碼文件編譯為64位機(jī)器碼文件。
可選的,確定子模塊6011,被配置為:
分別檢測第三方應(yīng)用的解壓后的安裝包是否包括32位目錄和64位目錄。
當(dāng)解壓后的安裝包同時包括32位目錄和64位目錄,確定第三方應(yīng)用支持32位操作系統(tǒng)和64位操作系統(tǒng)。
或,當(dāng)解壓后的安裝包包括32位目錄且不包括64位目錄,確定第三方應(yīng)用支持32位操作系統(tǒng)且不支持64位操作系統(tǒng)。
或,當(dāng)解壓后的安裝包包括和64位目錄且不包括32位目錄,確定第三方應(yīng)用支持64位操作系統(tǒng)且不支持32位操作系統(tǒng)。
圖4-4是本公開一示意性實(shí)施例提供的再一種文件運(yùn)行設(shè)備60的框圖,參見圖4-4,該文件運(yùn)行設(shè)備60可以包括:編譯模塊601,第一存儲模塊602,第二存儲模塊604。
編譯模塊601,被配置為在終端首次開機(jī)前,將第三方應(yīng)用的字節(jié)碼文件編譯成機(jī)器碼文件。
第一存儲模塊602,被配置為將機(jī)器碼文件存儲在終端的數(shù)據(jù)分區(qū)。
第二存儲模塊604,被配置為在終端的數(shù)據(jù)分區(qū)存儲字節(jié)碼文件。
可選的,第二存儲模塊604,被配置為:
檢測預(yù)設(shè)的安卓編譯文件中,第三方應(yīng)用的應(yīng)用設(shè)置。
當(dāng)應(yīng)用設(shè)置為保留字節(jié)碼文件時,在終端的數(shù)據(jù)分區(qū)存儲字節(jié)碼文件。
當(dāng)應(yīng)用設(shè)置為不保留字節(jié)碼文件時,將應(yīng)用設(shè)置修改為保留字節(jié)碼文件,并在終端的數(shù)據(jù)分區(qū)存儲字節(jié)碼文件。
綜上所述,本公開實(shí)施例提供的文件運(yùn)行設(shè)備,在終端首次開機(jī)前,通過編譯模塊將第三方應(yīng)用的字節(jié)碼文件編譯成機(jī)器碼文件,使得終端在首次開始過程中可以省略將字節(jié)碼文件編譯成機(jī)器碼文件的步驟,減少了終端首次開機(jī)的時長,提高了終端首次開機(jī)的速度。
本公開實(shí)施例提供一種文件運(yùn)行設(shè)備,可以用于圖1所示的終端,設(shè)備包括:
處理器;
用于存儲所述處理器的可執(zhí)行指令的存儲器;
其中,所述處理器被配置為:
在運(yùn)行終端中預(yù)置的第三方應(yīng)用時,從終端的數(shù)據(jù)分區(qū)中提取第三方應(yīng)用的機(jī)器碼文件。
運(yùn)行機(jī)器碼文件。
其中,該機(jī)器碼文件是在終端首次開機(jī)前,編譯裝置將第三方應(yīng)用的字節(jié)碼文件編譯得到的。
本公開實(shí)施例提供一種文件運(yùn)行設(shè)備,可以用于圖1所示的終端,設(shè)備包括:
處理器;
用于存儲所述處理器的可執(zhí)行指令的存儲器;
其中,所述處理器被配置為:
在終端首次開機(jī)前,將第三方應(yīng)用的字節(jié)碼文件編譯成機(jī)器碼文件。
將機(jī)器碼文件存儲在終端的數(shù)據(jù)分區(qū)。
圖5是本公開一示例性實(shí)施例示出的一種文件運(yùn)行設(shè)備700的框圖。設(shè)備700可以為終端,例如,設(shè)備700可以被提供為一移動終端,例如,移動電話,數(shù)字廣播終端,游戲控制臺,平板設(shè)備,醫(yī)療設(shè)備,健身設(shè)備,個人數(shù)字助理等。也可以為編譯裝置,例如,設(shè)備700可以被提供為一計算機(jī)或處理器。
例如,參照圖5,設(shè)備700可以包括以下一個或多個組件:處理組件702,存儲器704,電源組件706,多媒體組件708,音頻組件710,輸入/輸出(I/O)的接口712,傳感器組件714,以及通信組件716。
處理組件702通常控制設(shè)備700的整體操作,諸如與顯示,電話呼叫,數(shù)據(jù)通信,相機(jī)操作和記錄操作相關(guān)聯(lián)的操作。處理組件702可以包括一個或多個處理器720來執(zhí)行指令,以完成上述文件運(yùn)行方法的全部或部分步驟。此外,處理組件702可以包括一個或多個模塊,便于處理組件702和其他組件之間的交互。例如,處理組件702可以包括多媒體模塊,以方便多媒體組件708和處理組件702之間的交互。
存儲器704被配置為存儲各種類型的數(shù)據(jù)以支持在設(shè)備700的操作。這些數(shù)據(jù)的示例包括用于在設(shè)備700上操作的任何應(yīng)用程序或方法的指令,聯(lián)系人數(shù)據(jù),電話簿數(shù)據(jù),消息,圖片,視頻等。存儲器704可以由任何類型的易失性或非易失性存儲設(shè)備或者它們的組合實(shí)現(xiàn),如靜態(tài)隨機(jī)存取存儲器(SRAM),電可擦除可編程只讀存儲器(EEPROM),可擦除可編程只讀存儲器(EPROM),可編程只讀存儲器(PROM),只讀存儲器(ROM),磁存儲器,快閃存儲器,磁盤或光盤。
電源組件706為設(shè)備700的各種組件提供電力。電源組件706可以包括電源管理系統(tǒng),一個或多個電源,及其他與為設(shè)備700生成、管理和分配電力相關(guān)聯(lián)的組件。
多媒體組件708包括在所述設(shè)備700和用戶之間的提供一個輸出接口的屏幕。在一些實(shí)施例中,屏幕可以包括液晶顯示器(LCD)和觸摸面板(TP)。如果屏幕包括觸摸面板,屏幕可以被實(shí)現(xiàn)為觸摸屏,以接收來自用戶的輸入信號。觸摸面板包括一個或多個觸摸傳感器以感測觸摸、滑動和觸摸面板上的手勢。所述觸摸傳感器可以不僅感測觸摸或滑動動作的邊界,而且還檢測與所述觸摸或滑動操作相關(guān)的持續(xù)時間和壓力。在一些實(shí)施例中,多媒體組件708包括一個前置攝像頭和/或后置攝像頭。當(dāng)設(shè)備700處于操作模式,如拍攝模式或視頻模式時,前置攝像頭和/或后置攝像頭可以接收外部的多媒體數(shù)據(jù)。每個前置攝像頭和后置攝像頭可以是一個固定的光學(xué)透鏡系統(tǒng)或具有焦距和光學(xué)變焦能力。
音頻組件710被配置為輸出和/或輸入音頻信號。例如,音頻組件710包括一個麥克風(fēng)(MIC),當(dāng)設(shè)備700處于操作模式,如呼叫模式、記錄模式和語音識別模式時,麥克風(fēng)被配置為接收外部音頻信號。所接收的音頻信號可以被進(jìn)一步存儲在存儲器704或經(jīng)由通信組件716發(fā)送。在一些實(shí)施例中,音頻組件710還包括一個揚(yáng)聲器,用于輸出音頻信號。
I/O接口712為處理組件702和外圍接口模塊之間提供接口,上述外圍接口模塊可以是鍵盤,點(diǎn)擊輪,按鈕等。這些按鈕可包括但不限于:主頁按鈕、音量按鈕、啟動按鈕和鎖定按鈕。
傳感器組件714包括一個或多個傳感器,用于為設(shè)備700提供各個方面的狀態(tài)評估。例如,傳感器組件714可以檢測到設(shè)備700的打開/關(guān)閉狀態(tài),組件的相對定位,例如所述組件為設(shè)備700的顯示器和小鍵盤,傳感器組件714還可以檢測設(shè)備700或設(shè)備700一個組件的位置改變,用戶與設(shè)備700接觸的存在或不存在,設(shè)備700方位或加速/減速和設(shè)備700的溫度變化。傳感器組件714可以包括接近傳感器,被配置用來在沒有任何的物理接觸時檢測附近物體的存在。傳感器組件714還可以包括光傳感器,如CMOS或CCD圖像傳感器,用于在成像應(yīng)用中使用。在一些實(shí)施例中,該傳感器組件714還可以包括加速度傳感器,陀螺儀傳感器,磁傳感器,壓力傳感器或溫度傳感器。
通信組件716被配置為便于設(shè)備700和其他設(shè)備之間有線或無線方式的通信。設(shè)備700可以接入基于通信標(biāo)準(zhǔn)的無線網(wǎng)絡(luò),如WiFi,2G或3G,或它們的組合。在一個示例性實(shí)施例中,通信組件716經(jīng)由廣播信道接收來自外部廣播管理系統(tǒng)的廣播信號或廣播相關(guān)信息。在一個示例性實(shí)施例中,所述通信組件716還包括近場通信(NFC)模塊,以促進(jìn)短程通信。例如,在NFC模塊可基于射頻識別(RFID)技術(shù),紅外數(shù)據(jù)協(xié)會(IrDA)技術(shù),超寬帶(UWB)技術(shù),藍(lán)牙(BT)技術(shù)和其他技術(shù)來實(shí)現(xiàn)。
在示例性實(shí)施例中,設(shè)備700可以被一個或多個應(yīng)用專用集成電路(ASIC)、數(shù)字信號處理器(DSP)、數(shù)字信號處理設(shè)備(DSPD)、可編程邏輯器件(PLD)、現(xiàn)場可編程門陣列(FPGA)、控制器、微控制器、微處理器或其他電子元件實(shí)現(xiàn),用于執(zhí)行上述文件運(yùn)行方法。
在示例性實(shí)施例中,還提供了一種包括指令的非臨時性計算機(jī)可讀存儲介質(zhì),例如包括指令的存儲器704,上述指令可由設(shè)備700的處理器720執(zhí)行以完成上述文件運(yùn)行方法。例如,所述非臨時性計算機(jī)可讀存儲介質(zhì)可以是ROM、隨機(jī)存取存儲器(RAM)、CD-ROM、磁帶、軟盤和光數(shù)據(jù)存儲設(shè)備等。
當(dāng)設(shè)備700為終端時,設(shè)備700提供一種非臨時性計算機(jī)可讀存儲介質(zhì),當(dāng)所述存儲介質(zhì)中的指令由設(shè)備700的處理器執(zhí)行時,使得設(shè)備700能夠執(zhí)行本公開實(shí)施例提供的一種文件運(yùn)行方法,該方法至少可以包括:
在運(yùn)行終端中預(yù)置的第三方應(yīng)用時,從終端的數(shù)據(jù)分區(qū)中提取第三方應(yīng)用的機(jī)器碼文件。
運(yùn)行機(jī)器碼文件。其中,該機(jī)器碼文件是在終端首次開機(jī)前,編譯裝置將第三方應(yīng)用的字節(jié)碼文件編譯得到的。
當(dāng)設(shè)備700為編譯裝置時,設(shè)備700提供一種非臨時性計算機(jī)可讀存儲介質(zhì),當(dāng)所述存儲介質(zhì)中的指令由設(shè)備700的處理器執(zhí)行時,使得設(shè)備700能夠執(zhí)行本公開實(shí)施例提供的一種文件運(yùn)行方法,所述方法至少包括:
在終端首次開機(jī)前,將第三方應(yīng)用的字節(jié)碼文件編譯成機(jī)器碼文件。
將機(jī)器碼文件存儲在終端的數(shù)據(jù)分區(qū)。
以上所述僅為本公開的較佳實(shí)施例,并不用以限制本公開,凡在本公開的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本公開的保護(hù)范圍之內(nèi)。