在x86架構(gòu)上運(yùn)行ARM APK的模擬器裝置和方法
【專利摘要】提供了一種在x86架構(gòu)上運(yùn)行ARM?APK的模擬器裝置和方法。一種Android模擬器裝置,包括:APK安裝模塊,解析安裝的APK并對(duì)包含ARM的動(dòng)態(tài)鏈接庫(kù)的APK進(jìn)行標(biāo)記;APK運(yùn)行模塊,根據(jù)APK安裝模塊所做的標(biāo)記使被啟動(dòng)的APK運(yùn)行在對(duì)應(yīng)的虛擬機(jī)上,其中,虛擬機(jī)包括基于x86架構(gòu)的虛擬機(jī)和基于ARM架構(gòu)的虛擬機(jī);CPU指令翻譯模塊,將運(yùn)行在基于ARM架構(gòu)的虛擬機(jī)上的APK的CPU指令翻譯成x86指令。
【專利說(shuō)明】在x86架構(gòu)上運(yùn)行ARM APK的模擬器裝置和方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及模擬器【技術(shù)領(lǐng)域】,更具體地,涉及一種在x86架構(gòu)上運(yùn)行包含ARM動(dòng)態(tài)鏈接庫(kù)的APK的Android模擬器裝置和方法。
【背景技術(shù)】
[0002]目前,Android操作系統(tǒng)被廣泛應(yīng)用于移動(dòng)計(jì)算領(lǐng)域。在Android操作系統(tǒng)的應(yīng)用程序開(kāi)發(fā)中,通常會(huì)使用Android模擬器。Android模擬器能夠模擬除了接聽(tīng)和撥打電話外的所有移動(dòng)設(shè)備上的典型功能和行為。Android模擬器提供了大量的導(dǎo)航和控制鍵,從而使用戶可以通過(guò)鼠標(biāo)或鍵盤(pán)點(diǎn)擊這些按鍵來(lái)為應(yīng)用程序產(chǎn)生事件。同時(shí),Android模擬器還可顯示Android自帶應(yīng)用程序和用戶的應(yīng)用程序。為了便于模擬和測(cè)試應(yīng)用程序,Android模擬器允許用戶的應(yīng)用程序通過(guò)Android平臺(tái)服務(wù)調(diào)用其他程序、訪問(wèn)網(wǎng)絡(luò)、播放音頻和視頻、保存和傳輸數(shù)據(jù)、通知用戶、渲染圖像過(guò)渡和場(chǎng)景。Android模擬器同樣具有強(qiáng)大的調(diào)試能力,例如能夠記錄內(nèi)核輸出的控制臺(tái)、模擬程序中斷(比如接收短信或打入電話)、模擬數(shù)據(jù)通道中的延時(shí)效果和遺失。因此,Android模擬器的使用對(duì)于Android應(yīng)用程序的開(kāi)發(fā)具有重要的意義。
[0003]Android模擬器分為ARM架構(gòu)和x86架構(gòu)兩種。其中,x86架構(gòu)下的Android模擬器的性能是ARM架構(gòu)下的Android模擬器(以下簡(jiǎn)稱“ARM模擬器”)的10倍以上。但是,x86架構(gòu)下的Android模擬器無(wú)法運(yùn)行包含ARM動(dòng)態(tài)鏈接庫(kù)的APK (以下簡(jiǎn)稱為“ARM APK"),原因是x86架構(gòu)的CPU指令集與ARM架構(gòu)的CPU指令集不兼容。
[0004]因此,需要一種在X86架構(gòu)的模擬器上運(yùn)行包含ARM動(dòng)態(tài)鏈接庫(kù)的APK的Android模擬器裝置和方法。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的一方面提供一種在x86架構(gòu)上運(yùn)行包含ARM動(dòng)態(tài)鏈接庫(kù)的APK的Android模擬器裝置,包括:APK安裝模塊,解析安裝的APK并對(duì)包含ARM的動(dòng)態(tài)鏈接庫(kù)的APK進(jìn)行標(biāo)記;APK運(yùn)行模塊,根據(jù)APK安裝模塊所做的標(biāo)記使被啟動(dòng)的APK運(yùn)行在對(duì)應(yīng)的虛擬機(jī)上,其中,虛擬機(jī)包括基于x86架構(gòu)的虛擬機(jī)和基于ARM架構(gòu)的虛擬機(jī);CPU指令翻譯模塊,將運(yùn)行在基于ARM架構(gòu)的虛擬機(jī)上的APK的CPU指令翻譯成x86指令。
[0006]根據(jù)本發(fā)明的一方面,APK安裝模塊通過(guò)判斷在APK的Iib目錄下是否包含“arm”目錄來(lái)確定APK是否包含ARM動(dòng)態(tài)鏈接庫(kù)。
[0007]根據(jù)本發(fā)明的一方面,APK安裝模塊在確定安裝的APK包含ARM動(dòng)態(tài)鏈接庫(kù)的情況下,在該APK的目錄下新建用于指示ARM動(dòng)態(tài)鏈接庫(kù)的存在的文件。
[0008]根據(jù)本發(fā)明的一方面,Android模擬器裝置還包括:虛擬機(jī)模塊,根據(jù)APK運(yùn)行模塊發(fā)出的通知消息來(lái)初始化對(duì)應(yīng)的虛擬機(jī),并使用對(duì)應(yīng)的虛擬機(jī)來(lái)運(yùn)行被啟動(dòng)的APK,其中,基于x86架構(gòu)的虛擬機(jī)和基于ARM架構(gòu)的虛擬機(jī)被實(shí)現(xiàn)為Android Dalvik虛擬機(jī)的Zygote 進(jìn)程。[0009]根據(jù)本發(fā)明的一方面,基于ARM架構(gòu)的虛擬機(jī)運(yùn)行在CPU指令翻譯模塊啟動(dòng)的進(jìn)程之上。
[0010]根據(jù)本發(fā)明的另一方面,一種在X86架構(gòu)的Android模擬器上運(yùn)行包含ARM動(dòng)態(tài)鏈接庫(kù)的APK的方法包括:解析安裝的APK并對(duì)包含ARM的動(dòng)態(tài)鏈接庫(kù)的APK進(jìn)行標(biāo)記;根據(jù)APK安裝模塊所做的標(biāo)記使被啟動(dòng)的APK運(yùn)行在對(duì)應(yīng)的虛擬機(jī)上其中,虛擬機(jī)包括基于x86架構(gòu)的虛擬機(jī)和基于ARM架構(gòu)的虛擬機(jī);將運(yùn)行在基于ARM架構(gòu)的虛擬機(jī)上的APK的CPU指令翻譯成x86指令。
[0011 ] 根據(jù)本發(fā)明的另一方面,對(duì)包含ARM的動(dòng)態(tài)鏈接庫(kù)的APK進(jìn)行標(biāo)記包括:通過(guò)判斷在APK的Iib目錄下是否包含“arm”目錄來(lái)確定APK是否包含ARM動(dòng)態(tài)鏈接庫(kù)。
[0012]根據(jù)本發(fā)明的另一方面,對(duì)包含ARM的動(dòng)態(tài)鏈接庫(kù)的APK進(jìn)行標(biāo)記包括:如果確定安裝的APK包含ARM動(dòng)態(tài)鏈接庫(kù),則在該APK的目錄下新建用于指示ARM動(dòng)態(tài)鏈接庫(kù)的存在的文件。
[0013]根據(jù)本發(fā)明的另一方面,根據(jù)APK安裝模塊所做的標(biāo)記使被啟動(dòng)的APK運(yùn)行在對(duì)應(yīng)的虛擬機(jī)上包括:發(fā)出通知消息以通知Android模擬器使用不同的虛擬機(jī)來(lái)運(yùn)行被啟動(dòng)的APK,其中,基于x86的虛擬機(jī)和基于ARM的虛擬機(jī)分別實(shí)現(xiàn)為Android Dalvik虛擬機(jī)的Zygote 進(jìn)程。
[0014]根據(jù)本發(fā)明的另一方面,基于ARM架構(gòu)的虛擬機(jī)運(yùn)行在CPU指令翻譯模塊啟動(dòng)的進(jìn)程之上。
【專利附圖】
【附圖說(shuō)明】
[0015]通過(guò)下面結(jié)合附圖進(jìn)行的描述,本發(fā)明的上述和其他目的和特點(diǎn)將會(huì)變得更加清楚,其中:
[0016]圖1是示出根據(jù)本發(fā)明實(shí)施例的在x86架構(gòu)上運(yùn)行包含ARM動(dòng)態(tài)鏈接庫(kù)的APK的Android模擬器裝置的配置框圖;
[0017]圖2是示出根據(jù)本發(fā)明實(shí)施例的在x86架構(gòu)的Android模擬器上運(yùn)行包含ARM動(dòng)態(tài)鏈接庫(kù)的APK的方法的流程圖。
【具體實(shí)施方式】
[0018]下面提供參照附圖進(jìn)行的描述以有助于全面理解如權(quán)利要求及其等同物所限定的本發(fā)明的示例性實(shí)施例。在所述描述中,除非明確指明,否則相同的變量具有相同的定義。所述描述包括各種詳細(xì)的細(xì)節(jié)以有助于理解,而這些描述將被認(rèn)為僅為示例性的。因此,本領(lǐng)域的普通技術(shù)人員將意識(shí)到在不脫離本發(fā)明的范圍和精神的情況下可做出在此描述的各種改變和變型。另外,為了清晰和簡(jiǎn)潔,可省略對(duì)公知功能和構(gòu)造的描述。
[0019]圖1是示出根據(jù)本發(fā)明實(shí)施例的用于在x86架構(gòu)上運(yùn)行包含ARM動(dòng)態(tài)鏈接庫(kù)的APK的Android模擬器裝置的配置框圖。
[0020]如圖1所示,根據(jù)本發(fā)明實(shí)施例的于在x86架構(gòu)上運(yùn)行包含ARM動(dòng)態(tài)鏈接庫(kù)的APK的Android模擬器裝置100包括:APK安裝模塊110、APK啟動(dòng)模塊120、虛擬機(jī)模塊130和CPU指令翻譯模塊140。
[0021]APK安裝模塊110用于解析用戶所安裝的APK,并在安裝的APK包含ARM的動(dòng)態(tài)鏈接庫(kù)時(shí)對(duì)該APK進(jìn)行特殊的標(biāo)記。
[0022]通常,在x86架構(gòu)的Android模擬器上運(yùn)行的Android系統(tǒng)中,其支持的指令集變量被設(shè)置為“x86”。在用戶安裝APK時(shí),Android模擬器會(huì)將APK文件解壓,然后查詢Iib目錄下是否有x86目錄。如果有,則Android模擬器將x86目錄下的動(dòng)態(tài)鏈接庫(kù)文件拷貝到Android系統(tǒng)中;如果沒(méi)有,則不進(jìn)行任何操作。
[0023]根據(jù)本發(fā)明實(shí)施例的用于在x86架構(gòu)上運(yùn)行包含ARM動(dòng)態(tài)鏈接庫(kù)的APK的模擬器裝置100的APK安裝模塊110在此基礎(chǔ)上進(jìn)行了擴(kuò)展。根據(jù)本發(fā)明實(shí)施例的APK安裝模塊110判斷安裝的APK是否是包含有ARM動(dòng)態(tài)鏈接庫(kù)。[0024]具體地,根據(jù)本發(fā)明的一個(gè)實(shí)施例,APK安裝模塊110可根據(jù)以下方式來(lái)判斷APK中是否存在ARM動(dòng)態(tài)鏈接庫(kù)。APK安裝模塊110將模擬器100支持的指令集變量設(shè)置為“x86”和“arm”兩個(gè)值。在用戶安裝APK時(shí),在對(duì)APK進(jìn)行解壓之后,APK安裝模塊110會(huì)優(yōu)先判斷在APK的Iib目錄下是否包含x86目錄。如果有,則APK安裝模塊110將x86目錄下的動(dòng)態(tài)鏈接庫(kù)文件拷貝到Android系統(tǒng)中。如果不存在x86目錄,則APK安裝模塊110還判斷安裝的APK的Iib目錄下是否存在“arm”目錄。如果存在“arm”目錄,則APK安裝模塊110確定安裝的APK中存在ARM動(dòng)態(tài)鏈接庫(kù)。
[0025]接下來(lái),在確定存在ARM動(dòng)態(tài)鏈接庫(kù)之后,APK安裝模塊110將arm目錄下的庫(kù)文件拷貝到android系統(tǒng)中,并且對(duì)該安裝的APK進(jìn)行標(biāo)記。根據(jù)本發(fā)明的一個(gè)實(shí)施例,APK安裝模塊110可以在APK的目錄下新建一個(gè)用于指示ARM動(dòng)態(tài)鏈接庫(kù)的存在的文件。例如,可以將該文件命名為“ARM_FLAG”,并且文件內(nèi)容為空。這樣,在后續(xù)的處理中,如果APK包含“ARM_FLAG”文件,就表明該APK包含ARM的動(dòng)態(tài)鏈接庫(kù)(以下,稱為ARM APK);反之,如果不存在該文件,則表明該APK不包含ARM動(dòng)態(tài)鏈接庫(kù)。
[0026]在安裝完成之后運(yùn)行該安裝的APK時(shí),APK運(yùn)行模塊120根據(jù)APK安裝模塊110做的標(biāo)記來(lái)相應(yīng)地運(yùn)行該APK。具體地,APK運(yùn)行模塊120可檢查運(yùn)行的APK的目錄下是否存在名稱為“ARM_FLAG”的文件。如果存在該文件,則APK運(yùn)行模塊120發(fā)送消息通知虛擬機(jī)模塊130使用ARM架構(gòu)的虛擬機(jī)來(lái)運(yùn)行APK。如果不存在該文件,則APK運(yùn)行模塊120發(fā)送消息通知虛擬機(jī)模塊130使用x86架構(gòu)的虛擬機(jī)來(lái)運(yùn)行該APK。應(yīng)理解,在APK中添加指示包含ARM動(dòng)態(tài)鏈接庫(kù)的標(biāo)記的方式不限于上述的方法,例如,還可在APK中添加指示ARM動(dòng)態(tài)鏈接庫(kù)的語(yǔ)句等方式。
[0027]虛擬機(jī)模塊130包括基于x86架構(gòu)的虛擬機(jī)和基于ARM架構(gòu)的虛擬機(jī),虛擬機(jī)模塊130可根據(jù)APK運(yùn)行模塊120的通知消息來(lái)初始化并使用不同的虛擬機(jī)來(lái)運(yùn)行APK?;趚86的虛擬機(jī)和基于ARM的虛擬機(jī)可分別實(shí)現(xiàn)為Android Dalvik虛擬機(jī)的Zygote進(jìn)程。這樣,包含ARM動(dòng)態(tài)鏈接庫(kù)的APK可運(yùn)行在基于ARM架構(gòu)的虛擬機(jī)上,從而無(wú)論APK包含x86或是ARM的動(dòng)態(tài)鏈接庫(kù),都可以在模擬器100中被啟動(dòng)。
[0028]CPU指令翻譯模塊140用于將ARM架構(gòu)下的CPU指令翻譯成x86指令。基于ARM架構(gòu)的虛擬機(jī)可運(yùn)行在CPU指令翻譯模塊140之上。當(dāng)APK運(yùn)行模塊120確定要運(yùn)行ARMAPK時(shí),其通知CPU指令翻譯模塊140啟動(dòng)一個(gè)進(jìn)程,并將運(yùn)行在基于ARM的虛擬機(jī)上的ARMAPK的程序加載入該進(jìn)程,開(kāi)始運(yùn)行主函數(shù)main。這樣,CPU指令翻譯模塊140可將每一條ARM指令翻譯成x86指令,從而可以在x86的Android模擬器上執(zhí)行。例如,在ARM動(dòng)態(tài)鏈接庫(kù)被加載后給出vadd.?16指令,則CPU指令翻譯模塊140將該指令翻譯成paddw指令,然后通過(guò)x86的Android模擬器使x86架構(gòu)的CPU執(zhí)行該指令。又例如,當(dāng)ARM動(dòng)態(tài)鏈接庫(kù)給出vshl.u8指令時(shí),CPU指令翻譯模塊140將該指令翻譯成psllw、movd、pinsrw、pand四個(gè)指令,然后讓x86的CPU執(zhí)行該組指令。
[0029]應(yīng)理解,以上的APK安裝模塊110、APK啟動(dòng)模塊120、虛擬機(jī)模塊130和CPU指令翻譯模塊140可根據(jù)實(shí)際需求被劃分為更多的模塊,或者被組合為更少的模塊。
[0030]下面將參照?qǐng)D2的流程圖來(lái)說(shuō)明根據(jù)本發(fā)明實(shí)施例的在x86架構(gòu)的Android模擬器上運(yùn)行包含ARM動(dòng)態(tài)鏈接庫(kù)的APK的方法。
[0031]首先,在步驟S201,對(duì)安裝的APK進(jìn)行分析并對(duì)包含ARM動(dòng)態(tài)鏈接庫(kù)的APK進(jìn)行標(biāo)記。具體地,在安裝模塊對(duì)APK進(jìn)行解壓之后,首先可判斷安裝的APK的Iib目錄下是否存在“arm”目錄。如果存在“arm”目錄,則確定安裝的APK中存在ARM動(dòng)態(tài)鏈接庫(kù)。這時(shí),可將ARM動(dòng)態(tài)鏈接庫(kù)拷貝到Android系統(tǒng),并在APK的目錄下新建一個(gè)文件,命名為“ARM_FLAG”,文件內(nèi)容為空,該文件可以用于指示ARM動(dòng)態(tài)鏈接庫(kù)的存在。當(dāng)然,可以采用其它本領(lǐng)域的技術(shù)人員已知的任何方式來(lái)對(duì)APK進(jìn)行標(biāo)記以指示ARM動(dòng)態(tài)鏈接庫(kù)的存在。相反,如果不存在“arm”目錄而存在“x86”目錄,則將x86的動(dòng)態(tài)鏈接庫(kù)拷貝到Android系統(tǒng)中。
[0032]接下來(lái),在步驟S203,確定當(dāng)前運(yùn)行的APK是否存在指示ARM動(dòng)態(tài)鏈接庫(kù)的標(biāo)記。具體地,檢查當(dāng)前運(yùn)行的APK的目錄下是否存在指示ARM動(dòng)態(tài)鏈接庫(kù)的存在的標(biāo)記。例如,可檢查APK的目錄下是否存在名稱為“ARM_FLAG”的文件。如果不存在該文件,則在步驟S205,使用x86架構(gòu)的虛擬機(jī)來(lái)運(yùn)行該APK。如果在步驟S203確定APK包含指示ARM動(dòng)態(tài)鏈接庫(kù)的標(biāo)記,則在步驟S207使用ARM架構(gòu)的虛擬機(jī)來(lái)運(yùn)行APK。
[0033]這里,基于x86的虛擬機(jī)和基于ARM的虛擬機(jī)可分別實(shí)現(xiàn)為Android Dalvik虛擬機(jī)的Zygote進(jìn)程。包含ARM動(dòng)態(tài)鏈接庫(kù)的APK可運(yùn)行在基于ARM架構(gòu)的虛擬機(jī)上。
[0034]然后,在步驟S209,將運(yùn)行在基于ARM架構(gòu)的虛擬機(jī)上的APK的CPU指令翻譯成x86指令?;贏RM架構(gòu)的虛擬機(jī)可運(yùn)行在CPU指令翻譯的進(jìn)程之上。
[0035]通過(guò)以上過(guò)程,基于x86架構(gòu)的Android模擬器可運(yùn)行包含ARM動(dòng)態(tài)鏈接庫(kù)的APK,從而可以在具有更高性能的平臺(tái)上實(shí)現(xiàn)APK的運(yùn)行,從而極大地方便了 APK的開(kāi)發(fā)和調(diào)試。
[0036]根據(jù)本發(fā)明的方法可被記錄在包括執(zhí)行由計(jì)算機(jī)實(shí)現(xiàn)的各種操作的程序指令的計(jì)算機(jī)可讀介質(zhì)中。介質(zhì)也可以只包括程序指令或者包括與程序指令相結(jié)合的數(shù)據(jù)文件、數(shù)據(jù)結(jié)構(gòu)等。計(jì)算機(jī)可讀介質(zhì)的例子包括磁介質(zhì)(例如硬盤(pán)、軟盤(pán)和磁帶);光學(xué)介質(zhì)(例如CD-ROM和DVD);磁光介質(zhì)(例如,光盤(pán));以及特別配制用于存儲(chǔ)并執(zhí)行程序指令的硬件裝置(例如,只讀存儲(chǔ)器(ROM)、隨機(jī)存取存儲(chǔ)器(RAM)、閃存等)。介質(zhì)也可以是包括傳輸規(guī)定程序指令、數(shù)據(jù)結(jié)構(gòu)等的信號(hào)的載波的傳輸介質(zhì)(例如光學(xué)線或金屬線、波導(dǎo)等)。程序指令的例子包括例如由編譯器產(chǎn)生的機(jī)器碼和包含可使用解釋器由計(jì)算機(jī)執(zhí)行的高級(jí)代碼的文件。
[0037]盡管已經(jīng)參照本發(fā)明的示例性實(shí)施例具體顯示和描述了本發(fā)明,但是本領(lǐng)域的技術(shù)人員應(yīng)該理解,在不脫離由權(quán)利要求限定的本發(fā)明的精神和范圍的情況下,可以對(duì)其進(jìn)行形式和細(xì)節(jié)上的各種改變。
【權(quán)利要求】
1.一種在X86架構(gòu)上運(yùn)行包含ARM動(dòng)態(tài)鏈接庫(kù)的APK的Android模擬器裝置,包括: APK安裝模塊,解析安裝的APK并對(duì)包含ARM的動(dòng)態(tài)鏈接庫(kù)的APK進(jìn)行標(biāo)記; APK運(yùn)行模塊,根據(jù)APK安裝模塊所做的標(biāo)記使被啟動(dòng)的APK運(yùn)行在對(duì)應(yīng)的虛擬機(jī)上,其中,虛擬機(jī)包括基于x86架構(gòu)的虛擬機(jī)和基于ARM架構(gòu)的虛擬機(jī); CPU指令翻譯模塊,將運(yùn)行在基于ARM架構(gòu)的虛擬機(jī)上的APK的CPU指令翻譯成x86指令。
2.如權(quán)利要求1所述的Android模擬器裝置,其中,APK安裝模塊通過(guò)判斷在APK的Iib目錄下是否包含“arm”目錄來(lái)確定APK是否包含ARM動(dòng)態(tài)鏈接庫(kù)。
3.如權(quán)利要求1所述的Android模擬器裝置,其中,APK安裝模塊在確定安裝的APK包含ARM動(dòng)態(tài)鏈接庫(kù)的情況下,在該APK的目錄下新建用于指示ARM動(dòng)態(tài)鏈接庫(kù)的存在的文件。
4.如權(quán)利要求1所述的Android模擬器裝置,還包括:虛擬機(jī)模塊,根據(jù)APK運(yùn)行模塊發(fā)出的通知消息來(lái)初始化對(duì)應(yīng)的虛擬機(jī),并使用對(duì)應(yīng)的虛擬機(jī)來(lái)運(yùn)行被啟動(dòng)的APK,其中,基于x86架構(gòu)的虛擬機(jī)和基于ARM架構(gòu)的虛擬機(jī)被實(shí)現(xiàn)為Android Dalvik虛擬機(jī)的Zygote 進(jìn)程。
5.如權(quán)利要求4所述的Android模擬器裝置,其中,基于ARM架構(gòu)的虛擬機(jī)運(yùn)行在CPU指令翻譯模塊啟動(dòng)的進(jìn)程之上。
6.一種在x86架構(gòu)的Android模擬器上運(yùn)行包含ARM動(dòng)態(tài)鏈接庫(kù)的APK的方法,包括: 解析安裝的APK并對(duì)包含ARM的動(dòng)態(tài)鏈接庫(kù)的APK進(jìn)行標(biāo)記; 根據(jù)APK安裝模塊所做的標(biāo)記使被啟動(dòng)的APK運(yùn)行在對(duì)應(yīng)的虛擬機(jī)上其中,虛擬機(jī)包括基于x86架構(gòu)的虛擬機(jī)和基于ARM架構(gòu)的虛擬機(jī); 將運(yùn)行在基于ARM架構(gòu)的虛擬機(jī)上的APK的CPU指令翻譯成x86指令。
7.如權(quán)利要求6所述的方法,其中,對(duì)包含ARM的動(dòng)態(tài)鏈接庫(kù)的APK進(jìn)行標(biāo)記包括:通過(guò)判斷在APK的Iib目錄下是否包含“arm”目錄來(lái)確定APK是否包含ARM動(dòng)態(tài)鏈接庫(kù)。
8.如權(quán)利要求6所述的方法,其中,對(duì)包含ARM的動(dòng)態(tài)鏈接庫(kù)的APK進(jìn)行標(biāo)記包括:如果確定安裝的APK包含ARM動(dòng)態(tài)鏈接庫(kù),則在該APK的目錄下新建用于指示ARM動(dòng)態(tài)鏈接庫(kù)的存在的文件。
9.如權(quán)利要求6所述的方法,其中,根據(jù)APK安裝模塊所做的標(biāo)記使被啟動(dòng)的APK運(yùn)行在對(duì)應(yīng)的虛擬機(jī)上包括:發(fā)出通知消息以通知Android模擬器使用不同的虛擬機(jī)來(lái)運(yùn)行被啟動(dòng)的APK,其中,基于x86的虛擬機(jī)和基于ARM的虛擬機(jī)分別實(shí)現(xiàn)為Android Dalvik虛擬機(jī)的Zygote進(jìn)程。
10.如權(quán)利要求9所述的方法,其中,基于ARM架構(gòu)的虛擬機(jī)運(yùn)行在CPU指令翻譯模塊啟動(dòng)的進(jìn)程之上。
【文檔編號(hào)】G06F9/455GK103885814SQ201410104264
【公開(kāi)日】2014年6月25日 申請(qǐng)日期:2014年3月20日 優(yōu)先權(quán)日:2014年3月20日
【發(fā)明者】孫元臻, 張蔚, 禤彪 申請(qǐng)人:百度在線網(wǎng)絡(luò)技術(shù)(北京)有限公司