本發(fā)明涉及互聯(lián)網(wǎng)技術領域,具體涉及一種安卓應用的運行管理方法和裝置。
背景技術:
現(xiàn)有技術中,應用軟件被安裝在安卓系統(tǒng)之后,每一個應用會有一個apk安裝包,且被系統(tǒng)分配一個UID。通常情況下,系統(tǒng)所分配的UID對于不同應用來說是不同的,對不同應用的權限進行管理,以實現(xiàn)權限的隔離和控制。在一些特殊的情況下,多個不同的應用可以共享UID,以使這些應用根據(jù)需要進行權限互通。
以及,在現(xiàn)有技術中,安卓系統(tǒng)中不能同時運行兩個相同的應用,當用戶想在同一個安卓系統(tǒng)中,并行運行兩個相同的應用程序時,由于兩個相同的應用程序中的注冊信息重復,系統(tǒng)無法接納兩個相同的應用程序的相同的注冊信息,會造成應用程序的運行失敗。
因此,如何實現(xiàn)安卓系統(tǒng)中兩個相同應用的并行運行,以及,在實現(xiàn)并行運行后,如何模擬安卓系統(tǒng)對安卓應用的運行權限進行管理,是亟需解決的問題。
技術實現(xiàn)要素:
鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的一種安卓應用的運行管理方法和裝置。
依據(jù)本發(fā)明的一個方面,提供了一種安卓應用的運行管理方法,該方法包括:
構造虛擬機環(huán)境,將安卓系統(tǒng)中的一個或多個指定安卓應用的分身應用安裝到虛擬機中;
在安裝每個指定安卓應用的分身應用時,為該指定安卓應用的分身應用分配虛擬UID;
根據(jù)各指定安卓應用的分身應用的虛擬UID,對各指定安卓應用的分身應用在虛擬機中的運行進行管理。
可選地,所述將安卓系統(tǒng)中的一個或多個指定安卓應用的分身應用安裝到虛擬機中包括:獲取各指定安卓應用的安裝包復件,作為各指定安卓應用的分身應用的安裝包,將各指定安卓應用的分身應用的安裝包安裝到虛擬機中;
在所述為該指定安卓應用的分身應用分配虛擬UID之前,該方法進一步包括:解析各指定安卓應用的分身應用的安裝包中的配置文件,獲得各指定安卓應用的分身應用的配置文件的相關信息。
可選地,所述為該指定安卓應用的分身應用分配虛擬UID包括:
根據(jù)該指定安卓應用的分身應用的的配置文件的相關信息,為該指定安卓應用的分身應用分配虛擬UID。
可選地,每個指定安卓應用的分身應用的配置文件的相關信息包括:該配置文件中的sharedUserId屬性;
所述根據(jù)該指定安卓應用的分身應用的安裝包中的配置文件,為該指定安卓應用的分身應用分配虛擬UID包括:
根據(jù)該指定安卓應用的分身應用的的配置文件中的sharedUserId屬性,為該指定安卓應用的分身應用分配虛擬UID;
當多個指定安卓應用的分身應用對應的sharedUserId屬性的值相同時,為所述多個指定安卓應用的分身應用分配相同的虛擬UID。
可選地,所述根據(jù)各指定安卓應用的分身應用的虛擬UID,對各指定安卓應用的分身應用在虛擬機中的運行進行管理包括:
在虛擬機中運行各指定安卓應用的分身應用時,將具有相同的虛擬UID的指定安卓應用的分身應用分配至同一進程中運行。
可選地,每個指定安卓應用的分身應用的配置文件的相關信息包括:該配置文件中聲明的組件信息和各組件對應的進程信息;
所述將具有相同的虛擬UID的指定安卓應用的分身應用分配至同一進程中運行包括:
在啟動一個指定安卓應用的分身應用時,根據(jù)該指定安卓應用的分身應用的配置文件中聲明的組件信息,確定需要啟動的目標組件;
根據(jù)該指定安卓應用的分身應用的配置文件中聲明的各組件對應的進程信息,確定需要啟動的目標組件對應的目標進程;
查找所述目標進程在虛擬機中是否處于運行狀態(tài),是則將所述目標組件分配到所述目標進程中運行。
可選地,在所述將具有相同的虛擬UID的指定安卓應用的分身應用分配至同一進程中運行之前,該方法進一步包括:將虛擬機中每個處于運行狀態(tài)的進程的信息記錄至進程維護表中;所述進程的信息包括:進程的名稱;
所述查找所述目標進程在虛擬機中是否處于運行狀態(tài)包括:查找所述目標進程的名稱是否命中所述進程維護表中的一個進程的名稱,是則確定所述目標進程在迅疾中處于運行狀態(tài)。
可選地,所述進程的信息還包括:進程對應的指定安卓應用的分身應用的UID;
在查找到所述目標進程的名稱命中所述進程維護表中的一個進程的名稱之后,所述將具有相同的虛擬UID的指定安卓應用的分身應用分配至同一進程中運行還包括:
判斷所述目標進程對應的指定安卓應用的分身應用的虛擬UID與命中的進程對應的指定安卓應用的分身應用的UID是否相同,是則,將所述目標組件分配到所述命中的進程中運行。
可選地,在所述在虛擬機中運行各指定安卓應用的分身應用之前,該方法進一步包括:在安卓系統(tǒng)中預先聲明用于運行各種組件的預留進程;
所述將具有相同的虛擬UID的指定安卓應用的分身應用分配至同一進程中運行還包括:
當查找到所述目標進程在虛擬機中未處于運行狀態(tài)時,從預先聲明的預留進程中選擇適于運行所述目標組件的預留進程,將所述目標組件分配至所選擇的預留進程中運行;
將所述目標進程的信息分配給所選擇的預留進程。
可選地,所述在安裝每個指定安卓應用的分身應用時,為該指定安卓應用的分身應用分配虛擬UID;根據(jù)各指定安卓應用的分身應用的虛擬UID,對各指定安卓應用的分身應用在虛擬機中的運行進行管理包括:
通過虛擬機中的常駐服務為每個被安裝的指定安卓應用的分身應用分配虛擬UID,并對各指定安卓應用的分身應用在虛擬機中的運行進行管理。
依據(jù)本發(fā)明的另一個方面,提供一種安卓應用的運行管理裝置,該裝置包括:
環(huán)境構造單元,適于構造虛擬機環(huán)境。
常駐服務單元,適于將安卓系統(tǒng)中的一個或多個指定安卓應用的分身應用安裝到虛擬機中;在安裝每個指定安卓應用的分身應用時,為該指定安卓應用的分身應用分配虛擬UID;根據(jù)各指定安卓應用的分身應用的虛擬UID,對各指定安卓應用的分身應用在虛擬機中的運行進行管理。
可選地,
所述常駐服務單元,適于獲取各指定安卓應用的安裝包復件,作為各指定安卓應用的分身應用的安裝包,將各指定安卓應用的分身應用的安裝包安裝到虛擬機中;
所述常駐服務單元,還適于在所述為該指定安卓應用的分身應用分配虛擬UID之前,解析各指定安卓應用的分身應用的安裝包中的配置文件,獲得各指定安卓應用的分身應用的配置文件的相關信息。
可選地,
所述常駐服務單元,適于根據(jù)該指定安卓應用的分身應用的的配置文件的相關信息,為該指定安卓應用的分身應用分配虛擬UID。
可選地,
每個指定安卓應用的分身應用的配置文件的相關信息包括:該配置文件中的sharedUserId屬性;
所述常駐服務單元,適于根據(jù)該指定安卓應用的分身應用的的配置文件中的sharedUserId屬性,為該指定安卓應用的分身應用分配虛擬UID;當多個指定安卓應用的分身應用對應的sharedUserId屬性的值相同時,為所述多個指定安卓應用的分身應用分配相同的虛擬UID。
可選地,
所述常駐服務單元,適于在虛擬機中運行各指定安卓應用的分身應用時,將具有相同的虛擬UID的指定安卓應用的分身應用分配至同一進程中運行。
可選地,每個指定安卓應用的分身應用的配置文件的相關信息包括:該配置文件中聲明的組件信息和各組件對應的進程信息;
所述常駐服務單元,適于在啟動一個指定安卓應用的分身應用時,根據(jù)該指定安卓應用的分身應用的配置文件中聲明的組件信息,確定需要啟動的目標組件;根據(jù)該指定安卓應用的分身應用的配置文件中聲明的各組件對應的進程信息,確定需要啟動的目標組件對應的目標進程;查找所述目標進程在虛擬機中是否處于運行狀態(tài),是則將所述目標組件分配到所述目標進程中運行。
可選地,
所述常駐服務單元,還適于在所述將具有相同的虛擬UID的指定安卓應用的分身應用分配至同一進程中運行之前,將虛擬機中每個處于運行狀態(tài)的進程的信息記錄至進程維護表中;所述進程的信息包括:進程的名稱;
所述常駐服務單元,適于查找所述目標進程的名稱是否命中所述進程維護表中的一個進程的名稱,是則確定所述目標進程在迅疾中處于運行狀態(tài)。
可選地,所述進程的信息還包括:進程對應的指定安卓應用的分身應用的UID;
所述常駐服務單元,還適于在查找到所述目標進程的名稱命中所述進程維護表中的一個進程的名稱之后,判斷所述目標進程對應的指定安卓應用的分身應用的虛擬UID與命中的進程對應的指定安卓應用的分身應用的UID是否相同,是則,將所述目標組件分配到所述命中的進程中運行。
可選地,該裝置進一步包括:信息配置單元,適于在安卓系統(tǒng)中預先聲明用于運行各種組件的預留進程;
所述常駐服務單元,還適于當查找到所述目標進程在虛擬機中未處于運行狀態(tài)時,從預先聲明的預留進程中選擇適于運行所述目標組件的預留進程,將所述目標組件分配至所選擇的預留進程中運行;將所述目標進程的信息分配給所選擇的預留進程。
可選地,
所述常駐服務單元,適于通過虛擬機中的常駐服務為每個被安裝的指定安卓應用的分身應用分配虛擬UID,并對各指定安卓應用的分身應用在虛擬機中的運行進行管理。
有上述可知,根據(jù)本發(fā)明的技術方案,所構造的虛擬機環(huán)境在系統(tǒng)中額外的提供了一個平臺,將安卓系統(tǒng)中的一個或多個指定安卓應用的分身應用放入虛擬機中運行,使得每個指定安卓應用的分身應用可以與相應的指定安卓應用并行運行,實現(xiàn)了指定安卓應用自身與指定安卓應用分身的并行運行,對于在虛擬機中運行的指定安卓應用的分身應用,由于這些虛擬機中運行的指定安卓應用的分身應用對于安卓系統(tǒng)來說是未知的,安卓系統(tǒng)不會對這些分身應用進行權限管理,為此,本方案為每個安裝的分身應用分配了一個虛擬UID,通過該虛擬UID來對各個分身應用的運行權限進行管理,實現(xiàn)了分身應用的正常運行。
上述說明僅是本發(fā)明技術方案的概述,為了能夠更清楚了解本發(fā)明的技術手段,而可依照說明書的內(nèi)容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本發(fā)明的具體實施方式。
附圖說明
通過閱讀下文優(yōu)選實施方式的詳細描述,各種其他的優(yōu)點和益處對于本領域普通技術人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
圖1示出了根據(jù)本發(fā)明一個實施例的一種安卓應用的運行管理方法的流程圖;
圖2示出了根據(jù)本發(fā)明一個實施例的一種安卓應用的運行管理裝置的示意圖;以及
圖3示出了根據(jù)本發(fā)明另一個實施例的一種安卓應用的運行管理裝置的示意圖。
具體實施方式
下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應當理解,可以以各種形式實現(xiàn)本公開而不應被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達給本領域的技術人員。
圖1示出了根據(jù)本發(fā)明一個實施例的一種安卓應用的運行管理方法的流程圖,如圖1所示,該方法包括:
步驟S110,構造虛擬機環(huán)境,將安卓系統(tǒng)中的一個或多個指定安卓應用的分身應用安裝到虛擬機中;
其中,指定安卓應用指的是能夠在安卓系統(tǒng)中正常運行的,類似于QQ聊天、UC瀏覽器等的應用軟件。而指定安卓應用的分身應用作為指定安卓應用的復制體,可以看做是指定安卓應用的分身?,F(xiàn)有技術中,每個指定安卓應用的分身應用可以與相應的指定安卓應用是不可以并行運行的,其原因是安卓系統(tǒng)無法認可兩個相同的應用所聲明的相同的注冊信息,因此,在指定安卓應用已安裝的情況下,指定安卓應用的分身應用是無法成功注冊到安卓系統(tǒng)中的,對于安卓系統(tǒng)來說,指定安卓應用的分身應用是未知的,安卓系統(tǒng)無法與其進行正常交互。
步驟S120,在安裝每個指定安卓應用的分身應用時,為該指定安卓應用的分身應用分配虛擬UID;
步驟S130,根據(jù)各指定安卓應用的分身應用的虛擬UID,對各指定安卓應用的分身應用在虛擬機中的運行進行管理。
可見,圖1所示的方法所構造的虛擬機環(huán)境在系統(tǒng)中額外的提供了一個平臺,將安卓系統(tǒng)中的一個或多個指定安卓應用的分身應用放入虛擬機中運行,使得每個指定安卓應用的分身應用可以與相應的指定安卓應用并行運行,實現(xiàn)了指定安卓應用自身與指定安卓應用分身的并行運行,對于在虛擬機中運行的指定安卓應用的分身應用,由于這些虛擬機中運行的指定安卓應用的分身應用對于安卓系統(tǒng)來說是未知的,安卓系統(tǒng)不會對這些分身應用進行權限管理,為此,本方案為每個安裝的分身應用分配了一個虛擬UID,通過該虛擬UID來對各個分身應用的運行權限進行管理,實現(xiàn)了分身應用的正常運行。
在本發(fā)明的一個實施例中,圖1所述方法的步驟S110中將安卓系統(tǒng)中的一個或多個指定安卓應用的分身應用安裝到虛擬機中包括:獲取各指定安卓應用的安裝包復件,作為各指定安卓應用的分身應用的安裝包,將各指定安卓應用的分身應用的安裝包安裝到虛擬機中;在步驟S120為該指定安卓應用的分身應用分配虛擬UID之前,該方法進一步包括:解析各指定安卓應用的分身應用的安裝包中的配置文件,獲得各指定安卓應用的分身應用的配置文件的相關信息。
在安卓系統(tǒng)中,每一個應用軟件在被安裝到安卓系統(tǒng)中時,該應用的安裝包被安裝在安卓系統(tǒng)中,安裝包中包含配置文件,配置文件中的配置信息被相應地注冊到安卓系統(tǒng)中,以向安卓系統(tǒng)聲明應用在運行過程中所需要用到的組件和資源等信息。該安裝包里包含了幾乎所有與該應用相關的信息,比如:該應用的名稱,功能數(shù)據(jù),用戶定義信息,配置文件等。這些信息描述了對應應用的屬性,并保證其在系統(tǒng)中正常的運行。
則在本發(fā)明的一個實施例中,圖1所述方法的步驟S120中為該指定安卓應用的分身應用分配虛擬UID包括:根據(jù)該指定安卓應用的分身應用的配置文件的相關信息,為該指定安卓應用的分身應用分配虛擬UID。
通常來說,安卓系統(tǒng)本身具有這樣的機制,即每一個應用在安卓系統(tǒng)中安裝時,系統(tǒng)都會為它分配一個唯一的UID。依據(jù)此機制,本方案對安卓系統(tǒng)所能實現(xiàn)的權限管理功能進行了模擬,雖然安卓系統(tǒng)不會為虛擬機中的指定安卓應用的分身應用分配UID以對其運行權限進行管理,本方案在將指定安卓應用的分身應用安裝在虛擬機中時可以通過對其分配虛擬UID來對其運行權限進行管理,實現(xiàn)了從安卓系統(tǒng)的接管。
具體地,在一些特殊情況下,一些開發(fā)方相同的應用可能會有希望獲得互通的權限的需求,或者希望在同一進程中運行的需求,為此,上述每個指定安卓應用的分身應用的配置文件的相關信息包括:該配置文件中的sharedUserId屬性;所述根據(jù)該指定安卓應用的分身應用的安裝包中的配置文件,為該指定安卓應用的分身應用分配虛擬UID包括:根據(jù)該指定安卓應用的分身應用的的配置文件中的sharedUserId屬性,為該指定安卓應用的分身應用分配虛擬UID;當多個指定安卓應用的分身應用對應的sharedUserId屬性的值相同時,為所述多個指定安卓應用的分身應用分配相同的虛擬UID。
該虛擬UID的作用就是為對應的應用,做區(qū)分權限的運算,例如:權限的驗證、校驗,權限的隔離、控制等。如果在安裝一個分身應用時沒有對該分身應用分配虛擬UID,則在后期該分身應用的運行過程中無法辨認該應用權限的區(qū)分。
上述為具有相同sharedUserId屬性的分身應用分配相同的虛擬UID的目的是控制這些分身應用具有一定程度互通的權限,使得這些分身應用能夠在同一個進程中運行,則在本發(fā)明的一個實施例中,上述根據(jù)各指定安卓應用的分身應用的虛擬UID,對各指定安卓應用的分身應用在虛擬機中的運行進行管理包括:在虛擬機中運行各指定安卓應用的分身應用時,將具有相同的虛擬UID的指定安卓應用的分身應用分配至同一進程中運行。
具體地,每個指定安卓應用的分身應用的配置文件的相關信息包括:該配置文件中聲明的組件信息和各組件對應的進程信息;所述將具有相同的虛擬UID的指定安卓應用的分身應用分配至同一進程中運行包括:在啟動一個指定安卓應用的分身應用時,根據(jù)該指定安卓應用的分身應用的配置文件中聲明的組件信息,確定需要啟動的目標組件;根據(jù)該指定安卓應用的分身應用的配置文件中聲明的各組件對應的進程信息,確定需要啟動的目標組件對應的目標進程;查找所述目標進程在虛擬機中是否處于運行狀態(tài),是則將所述目標組件分配到所述目標進程中運行。
例如,在谷歌服務里面,常常會有多個谷歌賬號應用,不同的谷歌賬號應用之間往往具有相同的sharedUserId屬性,需要在同一個進程中運行。相應地,谷歌賬號應用的分身應用也應當具有相同的sharedUserId屬性,需要在同一個進程中運行,根據(jù)此需求,在該方案的虛擬機環(huán)境中,為使得不同谷歌賬號應用的分身應用能夠在同一進程中運行,當谷歌服務應用被啟動,其中一個谷歌賬號應用A的分身應用某一組件a正在一進程1中運行。若再次啟動另一個谷歌賬號應用B的分身應用同一組件b,此時該本方案會自動檢測到谷歌賬號應用B的分身應用的b組件和谷歌賬號應用A的分身應用的組件a相匹配,且谷歌賬號應用A的組件a正在進程1中運行,則將谷歌賬號應用B的b組件也分配到進程1中。相匹配的含義是它們具有相同的虛擬UID,是因為在安裝谷歌賬號應用A的分身應用和谷歌賬號應用B的分身應用時檢測到它們具有相同的sharedUserId屬性,因此為其分配了相同的虛擬UID。進而實現(xiàn)了谷歌賬號應用的分身應用能夠滿足需求地進行權限控制地運行,十分合理有效。
在本發(fā)明的一個實施例中,在所述將具有相同的虛擬UID的指定安卓應用的分身應用分配至同一進程中運行之前,圖1所示的方法進一步包括:將虛擬機中每個處于運行狀態(tài)的進程的信息記錄至進程維護表中;所述進程的信息包括:進程的名稱;所述查找所述目標進程在虛擬機中是否處于運行狀態(tài)包括:查找所述目標進程的名稱是否命中所述進程維護表中的一個進程的名稱,是則確定所述目標進程在迅疾中處于運行狀態(tài)。
在本發(fā)明的一個實施例中,所述進程的信息還包括:進程對應的指定安卓應用的分身應用的UID;在查找到所述目標進程的名稱命中所述進程維護表中的一個進程的名稱之后,所述將具有相同的虛擬UID的指定安卓應用的分身應用分配至同一進程中運行還包括:判斷所述目標進程對應的指定安卓應用的分身應用的虛擬UID與命中的進程對應的指定安卓應用的分身應用的UID是否相同,是則,將所述目標組件分配到所述命中的進程中運行。
在本發(fā)明的一個實施例中,在所述在虛擬機中運行各指定安卓應用的分身應用之前,該方法進一步包括:在安卓系統(tǒng)中預先聲明用于運行各種組件的預留進程;所述將具有相同的虛擬UID的指定安卓應用的分身應用分配至同一進程中運行還包括:當查找到所述目標進程在虛擬機中未處于運行狀態(tài)時,從預先聲明的預留進程中選擇適于運行所述目標組件的預留進程,將所述目標組件分配至所選擇的預留進程中運行;將所述目標進程的信息分配給所選擇的預留進程。之所以要將目標進程的信息分配給所選擇的預留進程,是因為之后在進程維護表中找相應的目標進程的信息時,就可以找到此預留進程,符合前述實施例的邏輯。
在本發(fā)明的一個實施例中,圖1所述方法在安裝每個指定安卓應用的分身應用時,為該指定安卓應用的分身應用分配虛擬UID;根據(jù)各指定安卓應用的分身應用的虛擬UID,對各指定安卓應用的分身應用在虛擬機中的運行進行管理包括:通過虛擬機中的常駐服務為每個被安裝的指定安卓應用的分身應用分配虛擬UID,并對各指定安卓應用的分身應用在虛擬機中的運行進行管理。
圖2示出了根據(jù)本發(fā)明一個實施例的一種安卓應用的運行管理裝置的示意圖。如圖2所示,該安卓應用的運行管理裝置200包括:
環(huán)境構造單元210,適于構造虛擬機環(huán)境。
常駐服務單元220,適于將安卓系統(tǒng)中的一個或多個指定安卓應用的分身應用安裝到虛擬機中;在安裝每個指定安卓應用的分身應用時,為該指定安卓應用的分身應用分配虛擬UID;根據(jù)各指定安卓應用的分身應用的虛擬UID,對各指定安卓應用的分身應用在虛擬機中的運行進行管理。
可見,圖2所示的裝置所構造的虛擬機環(huán)境在系統(tǒng)中額外的提供了一個平臺,將安卓系統(tǒng)中的一個或多個指定安卓應用的分身應用放入虛擬機中運行,使得每個指定安卓應用的分身應用可以與相應的指定安卓應用并行運行,實現(xiàn)了指定安卓應用自身與指定安卓應用分身的并行運行,對于在虛擬機中運行的指定安卓應用的分身應用,由于這些虛擬機中運行的指定安卓應用的分身應用對于安卓系統(tǒng)來說是未知的,安卓系統(tǒng)不會對這些分身應用進行權限管理,為此,本方案為每個安裝的分身應用分配了一個虛擬UID,通過該虛擬UID來對各個分身應用的運行權限進行管理,實現(xiàn)了分身應用的正常運行。
在本發(fā)明的一個實施例中,常駐服務單元220,適于獲取各指定安卓應用的安裝包復件,作為各指定安卓應用的分身應用的安裝包,將各指定安卓應用的分身應用的安裝包安裝到虛擬機中;
所述常駐服務單元220,還適于在所述為該指定安卓應用的分身應用分配虛擬UID之前,解析各指定安卓應用的分身應用的安裝包中的配置文件,獲得各指定安卓應用的分身應用的配置文件的相關信息。
在本發(fā)明的一個實施例中,常駐服務單元220,適于根據(jù)該指定安卓應用的分身應用的的配置文件的相關信息,為該指定安卓應用的分身應用分配虛擬UID。
在本發(fā)明的一個實施例中,圖2所示裝置中,每個指定安卓應用的分身應用的配置文件的相關信息包括:該配置文件中的sharedUserId屬性;
所述常駐服務單元,適于根據(jù)該指定安卓應用的分身應用的的配置文件中的sharedUserId屬性,為該指定安卓應用的分身應用分配虛擬UID;當多個指定安卓應用的分身應用對應的sharedUserId屬性的值相同時,為所述多個指定安卓應用的分身應用分配相同的虛擬UID。
在本發(fā)明的一個實施例中,常駐服務單元220,適于在虛擬機中運行各指定安卓應用的分身應用時,將具有相同的虛擬UID的指定安卓應用的分身應用分配至同一進程中運行。
在本發(fā)明的一個實施例中,圖2所示裝置中,每個指定安卓應用的分身應用的配置文件的相關信息包括:該配置文件中聲明的組件信息和各組件對應的進程信息;所述常駐服務單元220,適于在啟動一個指定安卓應用的分身應用時,根據(jù)該指定安卓應用的分身應用的配置文件中聲明的組件信息,確定需要啟動的目標組件;根據(jù)該指定安卓應用的分身應用的配置文件中聲明的各組件對應的進程信息,確定需要啟動的目標組件對應的目標進程;查找所述目標進程在虛擬機中是否處于運行狀態(tài),是則將所述目標組件分配到所述目標進程中運行。
在本發(fā)明的一個實施例中,常駐服務單元220,還適于在所述將具有相同的虛擬UID的指定安卓應用的分身應用分配至同一進程中運行之前,將虛擬機中每個處于運行狀態(tài)的進程的信息記錄至進程維護表中;所述進程的信息包括:進程的名稱;所述常駐服務單元220,適于查找所述目標進程的名稱是否命中所述進程維護表中的一個進程的名稱,是則確定所述目標進程在迅疾中處于運行狀態(tài)。
在本發(fā)明的一個實施例中,圖2所示裝置中,所述進程的信息還包括:進程對應的指定安卓應用的分身應用的UID;所述常駐服務單元220,還適于在查找到所述目標進程的名稱命中所述進程維護表中的一個進程的名稱之后,判斷所述目標進程對應的指定安卓應用的分身應用的虛擬UID與命中的進程對應的指定安卓應用的分身應用的UID是否相同,是則,將所述目標組件分配到所述命中的進程中運行。
在本發(fā)明的一個實施例中,常駐服務單元320,適于通過虛擬機中的常駐服務為每個被安裝的指定安卓應用的分身應用分配虛擬UID,并對各指定安卓應用的分身應用在虛擬機中的運行進行管理。
圖3示出了根據(jù)本發(fā)明的另一個實施例的一種安卓應用的運行管理裝置的示意圖。如圖3所示,該安卓應用的運行管理裝置300包括:環(huán)境構造單元310、常駐服務單元320和信息配置單元330。
其中,環(huán)境構造單元310、常駐服務單元320具有與上述環(huán)境構造單元210、常駐服務單元220對應相同的功能,相同的部分在此不再贅述。
信息配置單元330,適于在安卓系統(tǒng)中預先聲明用于運行各種組件的預留進程。
則在本發(fā)明的一個實施例中,所述常駐服務單元320,還適于當查找到所述目標進程在虛擬機中未處于運行狀態(tài)時,從預先聲明的預留進程中選擇適于運行所述目標組件的預留進程,將所述目標組件分配至所選擇的預留進程中運行;將所述目標進程的信息分配給所選擇的預留進程。
需要說明的是,圖2和圖3所示裝置的各實施例與圖1所示方法的各實施例對應相同,上文已有詳細說明,在此不再贅述。
綜上所述,在本發(fā)明的技術方案中,所構造的虛擬機環(huán)境在系統(tǒng)中額外的提供了一個平臺,將安卓系統(tǒng)中的一個或多個指定安卓應用的分身應用放入虛擬機中運行,使得每個指定安卓應用的分身應用可以與相應的指定安卓應用并行運行,實現(xiàn)了指定安卓應用自身與指定安卓應用分身的并行運行,對于在虛擬機中運行的指定安卓應用的分身應用,由于這些虛擬機中運行的指定安卓應用的分身應用對于安卓系統(tǒng)來說是未知的,安卓系統(tǒng)不會對這些分身應用進行權限管理,為此,本方案為每個安裝的分身應用分配了一個虛擬UID,通過該虛擬UID來對各個分身應用的運行權限進行管理,實現(xiàn)了分身應用的正常運行。
需要說明的是:
在此提供的算法和顯示不與任何特定計算機、虛擬裝置或者其它設備固有相關。各種通用裝置也可以與基于在此的示教一起使用。根據(jù)上面的描述,構造這類裝置所要求的結構是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應當明白,可以利用各種編程語言實現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對特定語言所做的描述是為了披露本發(fā)明的最佳實施方式。
在此處所提供的說明書中,說明了大量具體細節(jié)。然而,能夠理解,本發(fā)明的實施例可以在沒有這些具體細節(jié)的情況下實踐。在一些實例中,并未詳細示出公知的方法、結構和技術,以便不模糊對本說明書的理解。
類似地,應當理解,為了精簡本公開并幫助理解各個發(fā)明方面中的一個或多個,在上面對本發(fā)明的示例性實施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應將該公開的方法解釋成反映如下意圖:即所要求保護的本發(fā)明要求比在每個權利要求中所明確記載的特征更多的特征。更確切地說,如下面的權利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實施例的所有特征。因此,遵循具體實施方式的權利要求書由此明確地并入該具體實施方式,其中每個權利要求本身都作為本發(fā)明的單獨實施例。
本領域那些技術人員可以理解,可以對實施例中的設備中的模塊進行自適應性地改變并且把它們設置在與該實施例不同的一個或多個設備中??梢园褜嵤├械哪K或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設備的所有過程或單元進行組合。除非另外明確陳述,本說明書(包括伴隨的權利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。
此外,本領域的技術人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實施例。例如,在下面的權利要求書中,所要求保護的實施例的任意之一都可以以任意的組合方式來使用。
本發(fā)明的各個部件實施例可以以硬件實現(xiàn),或者以在一個或者多個處理器上運行的軟件模塊實現(xiàn),或者以它們的組合實現(xiàn)。本領域的技術人員應當理解,可以在實踐中使用微處理器或者數(shù)字信號處理器(DSP)來實現(xiàn)根據(jù)本發(fā)明實施例的安卓應用的運行管理裝置中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設備或者裝置程序(例如,計算機程序和計算機程序產(chǎn)品)。這樣的實現(xiàn)本發(fā)明的程序可以存儲在計算機可讀介質(zhì)上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。
應該注意的是上述實施例對本發(fā)明進行說明而不是對本發(fā)明進行限制,并且本領域技術人員在不脫離所附權利要求的范圍的情況下可設計出替換實施例。在權利要求中,不應將位于括號之間的任何參考符號構造成對權利要求的限制。單詞“包含”不排除存在未列在權利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當編程的計算機來實現(xiàn)。在列舉了若干裝置的單元權利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。
本發(fā)明公開了A1、一種安卓應用的運行管理方法,其中,包括:
構造虛擬機環(huán)境,將安卓系統(tǒng)中的一個或多個指定安卓應用的分身應用安裝到虛擬機中;
在安裝每個指定安卓應用的分身應用時,為該指定安卓應用的分身應用分配虛擬UID;
根據(jù)各指定安卓應用的分身應用的虛擬UID,對各指定安卓應用的分身應用在虛擬機中的運行進行管理。
A2、如A1所述的方法,其中,所述將安卓系統(tǒng)中的一個或多個指定安卓應用的分身應用安裝到虛擬機中包括:獲取各指定安卓應用的安裝包復件,作為各指定安卓應用的分身應用的安裝包,將各指定安卓應用的分身應用的安裝包安裝到虛擬機中;
在所述為該指定安卓應用的分身應用分配虛擬UID之前,該方法進一步包括:解析各指定安卓應用的分身應用的安裝包中的配置文件,獲得各指定安卓應用的分身應用的配置文件的相關信息。
A3、如A2所述的方法,其中,所述為該指定安卓應用的分身應用分配虛擬UID包括:
根據(jù)該指定安卓應用的分身應用的的配置文件的相關信息,為該指定安卓應用的分身應用分配虛擬UID。
A4、如A3所述的方法,其中,每個指定安卓應用的分身應用的配置文件的相關信息包括:該配置文件中的sharedUserId屬性;
所述根據(jù)該指定安卓應用的分身應用的安裝包中的配置文件,為該指定安卓應用的分身應用分配虛擬UID包括:
根據(jù)該指定安卓應用的分身應用的的配置文件中的sharedUserId屬性,為該指定安卓應用的分身應用分配虛擬UID;
當多個指定安卓應用的分身應用對應的sharedUserId屬性的值相同時,為所述多個指定安卓應用的分身應用分配相同的虛擬UID。
A5、如A2所述的方法,其中,所述根據(jù)各指定安卓應用的分身應用的虛擬UID,對各指定安卓應用的分身應用在虛擬機中的運行進行管理包括:
在虛擬機中運行各指定安卓應用的分身應用時,將具有相同的虛擬UID的指定安卓應用的分身應用分配至同一進程中運行。
A6、如A5所述的方法,其中,每個指定安卓應用的分身應用的配置文件的相關信息包括:該配置文件中聲明的組件信息和各組件對應的進程信息;
所述將具有相同的虛擬UID的指定安卓應用的分身應用分配至同一進程中運行包括:
在啟動一個指定安卓應用的分身應用時,根據(jù)該指定安卓應用的分身應用的配置文件中聲明的組件信息,確定需要啟動的目標組件;
根據(jù)該指定安卓應用的分身應用的配置文件中聲明的各組件對應的進程信息,確定需要啟動的目標組件對應的目標進程;
查找所述目標進程在虛擬機中是否處于運行狀態(tài),是則將所述目標組件分配到所述目標進程中運行。
A7、如A6所述的方法,其中,在所述將具有相同的虛擬UID的指定安卓應用的分身應用分配至同一進程中運行之前,該方法進一步包括:將虛擬機中每個處于運行狀態(tài)的進程的信息記錄至進程維護表中;所述進程的信息包括:進程的名稱;
所述查找所述目標進程在虛擬機中是否處于運行狀態(tài)包括:查找所述目標進程的名稱是否命中所述進程維護表中的一個進程的名稱,是則確定所述目標進程在迅疾中處于運行狀態(tài)。
A8、如A6所述的方法,其中,所述進程的信息還包括:進程對應的指定安卓應用的分身應用的UID;
在查找到所述目標進程的名稱命中所述進程維護表中的一個進程的名稱之后,所述將具有相同的虛擬UID的指定安卓應用的分身應用分配至同一進程中運行還包括:
判斷所述目標進程對應的指定安卓應用的分身應用的虛擬UID與命中的進程對應的指定安卓應用的分身應用的UID是否相同,是則,將所述目標組件分配到所述命中的進程中運行。
A9、如A6所述的方法,其中,在所述在虛擬機中運行各指定安卓應用的分身應用之前,該方法進一步包括:在安卓系統(tǒng)中預先聲明用于運行各種組件的預留進程;
所述將具有相同的虛擬UID的指定安卓應用的分身應用分配至同一進程中運行還包括:
當查找到所述目標進程在虛擬機中未處于運行狀態(tài)時,從預先聲明的預留進程中選擇適于運行所述目標組件的預留進程,將所述目標組件分配至所選擇的預留進程中運行;
將所述目標進程的信息分配給所選擇的預留進程。
A10、如A1所述的方法,其中,所述在安裝每個指定安卓應用的分身應用時,為該指定安卓應用的分身應用分配虛擬UID;根據(jù)各指定安卓應用的分身應用的虛擬UID,對各指定安卓應用的分身應用在虛擬機中的運行進行管理包括:
通過虛擬機中的常駐服務為每個被安裝的指定安卓應用的分身應用分配虛擬UID,并對各指定安卓應用的分身應用在虛擬機中的運行進行管理。
本發(fā)明還公開了B11、一種安卓應用的運行管理裝置,其中,包括:
環(huán)境構造單元,適于構造虛擬機環(huán)境。
常駐服務單元,適于將安卓系統(tǒng)中的一個或多個指定安卓應用的分身應用安裝到虛擬機中;在安裝每個指定安卓應用的分身應用時,為該指定安卓應用的分身應用分配虛擬UID;根據(jù)各指定安卓應用的分身應用的虛擬UID,對各指定安卓應用的分身應用在虛擬機中的運行進行管理。
B12、如B11所述的裝置,其中,
所述常駐服務單元,適于獲取各指定安卓應用的安裝包復件,作為各指定安卓應用的分身應用的安裝包,將各指定安卓應用的分身應用的安裝包安裝到虛擬機中;
所述常駐服務單元,還適于在所述為該指定安卓應用的分身應用分配虛擬UID之前,解析各指定安卓應用的分身應用的安裝包中的配置文件,獲得各指定安卓應用的分身應用的配置文件的相關信息。
B13、如B12所述的裝置,其中,
所述常駐服務單元,適于根據(jù)該指定安卓應用的分身應用的的配置文件的相關信息,為該指定安卓應用的分身應用分配虛擬UID。
B14、如B13所述的裝置,其中,每個指定安卓應用的分身應用的配置文件的相關信息包括:該配置文件中的sharedUserId屬性;
所述常駐服務單元,適于根據(jù)該指定安卓應用的分身應用的的配置文件中的sharedUserId屬性,為該指定安卓應用的分身應用分配虛擬UID;當多個指定安卓應用的分身應用對應的sharedUserId屬性的值相同時,為所述多個指定安卓應用的分身應用分配相同的虛擬UID。
B15、如B12所述的裝置,其中,
所述常駐服務單元,適于在虛擬機中運行各指定安卓應用的分身應用時,將具有相同的虛擬UID的指定安卓應用的分身應用分配至同一進程中運行。
B16、如B15所述的裝置,其中,每個指定安卓應用的分身應用的配置文件的相關信息包括:該配置文件中聲明的組件信息和各組件對應的進程信息;
所述常駐服務單元,適于在啟動一個指定安卓應用的分身應用時,根據(jù)該指定安卓應用的分身應用的配置文件中聲明的組件信息,確定需要啟動的目標組件;根據(jù)該指定安卓應用的分身應用的配置文件中聲明的各組件對應的進程信息,確定需要啟動的目標組件對應的目標進程;查找所述目標進程在虛擬機中是否處于運行狀態(tài),是則將所述目標組件分配到所述目標進程中運行。
B17、如B16所述的裝置,其中,
所述常駐服務單元,還適于在所述將具有相同的虛擬UID的指定安卓應用的分身應用分配至同一進程中運行之前,將虛擬機中每個處于運行狀態(tài)的進程的信息記錄至進程維護表中;所述進程的信息包括:進程的名稱;
所述常駐服務單元,適于查找所述目標進程的名稱是否命中所述進程維護表中的一個進程的名稱,是則確定所述目標進程在迅疾中處于運行狀態(tài)。
B18、如B16所述的裝置,其中,所述進程的信息還包括:進程對應的指定安卓應用的分身應用的UID;
所述常駐服務單元,還適于在查找到所述目標進程的名稱命中所述進程維護表中的一個進程的名稱之后,判斷所述目標進程對應的指定安卓應用的分身應用的虛擬UID與命中的進程對應的指定安卓應用的分身應用的UID是否相同,是則,將所述目標組件分配到所述命中的進程中運行。
B19、如B16所述的裝置,其中,該裝置進一步包括:信息配置單元,適于在安卓系統(tǒng)中預先聲明用于運行各種組件的預留進程;
所述常駐服務單元,還適于當查找到所述目標進程在虛擬機中未處于運行狀態(tài)時,從預先聲明的預留進程中選擇適于運行所述目標組件的預留進程,將所述目標組件分配至所選擇的預留進程中運行;將所述目標進程的信息分配給所選擇的預留進程。
B20、如B11所述的裝置,其中,
所述常駐服務單元,適于通過虛擬機中的常駐服務為每個被安裝的指定安卓應用的分身應用分配虛擬UID,并對各指定安卓應用的分身應用在虛擬機中的運行進行管理。