亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

獲取及傳輸應(yīng)用程序數(shù)據(jù)、運(yùn)行應(yīng)用程序的方法及裝置與流程

文檔序號(hào):12362999閱讀:369來源:國知局
獲取及傳輸應(yīng)用程序數(shù)據(jù)、運(yùn)行應(yīng)用程序的方法及裝置與流程

本發(fā)明涉及終端設(shè)備技術(shù)領(lǐng)域,具體而言,本發(fā)明涉及一種獲取及傳輸應(yīng)用程序數(shù)據(jù)的方法、一種獲取及傳輸應(yīng)用程序數(shù)據(jù)的裝置、一種運(yùn)行應(yīng)用程序的方法及一種運(yùn)行應(yīng)用程序的裝置。



背景技術(shù):

隨著科技的不斷發(fā)展,智能手機(jī)更新?lián)Q代的速度也在加快。如果更換新手機(jī),用戶需要手動(dòng)將舊手機(jī)中的聯(lián)系人信息、電話記錄、短信記錄、聊天記錄等通通搬到新手機(jī)上,更加麻煩的是,用戶還需要在新手機(jī)上一個(gè)一個(gè)地登錄驗(yàn)證在舊手機(jī)上已經(jīng)驗(yàn)證成功的應(yīng)用程序的賬號(hào),然而如果需要將舊手機(jī)中的游戲存檔等一些高級(jí)別權(quán)限才能讀取的數(shù)據(jù)搬到新手機(jī)上更是難上加難。

與此同時(shí),沙箱是一種按照安全策略限制程序行為的執(zhí)行環(huán)境,目前已經(jīng)廣泛實(shí)用于各種操作系統(tǒng)中。通過沙箱技術(shù)提供的執(zhí)行環(huán)境,由沙箱對(duì)系統(tǒng)的資源、權(quán)限進(jìn)行管理,讓應(yīng)用程序于該沙箱中運(yùn)行,應(yīng)用程序的訪問先經(jīng)沙箱按安全策略進(jìn)行審查,由此,形成一種相對(duì)于系統(tǒng)本身的隔離運(yùn)行效果,可以有效地保護(hù)系統(tǒng)的安全。對(duì)于沙箱中所用到的安全策略,適應(yīng)各種不同的操作系統(tǒng)有不同的細(xì)節(jié)考慮,這些有關(guān)技術(shù)實(shí)現(xiàn)的基本知識(shí),均已為本領(lǐng)域技術(shù)人員所掌握。



技術(shù)實(shí)現(xiàn)要素:

為克服上述技術(shù)問題或者至少部分地解決上述技術(shù)問題,特提出以下技術(shù)方案:

本發(fā)明的一個(gè)實(shí)施例提出了一種獲取及傳輸應(yīng)用程序數(shù)據(jù)的方法,包括:

通過安裝于宿主應(yīng)用程序內(nèi)的目標(biāo)應(yīng)用程序獲取原生應(yīng)用程序的相關(guān)數(shù)據(jù),宿主應(yīng)用程序和原生應(yīng)用程序安裝于第一終端設(shè)備;

將原生應(yīng)用程序的相關(guān)數(shù)據(jù)和第一終端設(shè)備的安裝環(huán)境信息通過預(yù)定的發(fā)送方式發(fā)送至第二終端設(shè)備。

可選地,該方法還包括:

反射調(diào)用與宿主應(yīng)用程序具有相同包名的作為宿主應(yīng)用程序附帶資源的安裝包,以加載該安裝包所實(shí)現(xiàn)的目標(biāo)應(yīng)用程序,其中,目標(biāo)應(yīng)用程序的所需資源與原生應(yīng)用程序的所需資源一一對(duì)應(yīng);

其中,通過安裝于宿主應(yīng)用程序內(nèi)的目標(biāo)應(yīng)用程序獲取原生應(yīng)用程序的相關(guān)數(shù)據(jù),包括:

調(diào)用目標(biāo)應(yīng)用程序的活動(dòng)進(jìn)程的數(shù)據(jù)讀取指令;

通過鉤子函數(shù)鉤取目標(biāo)應(yīng)用程序執(zhí)行數(shù)據(jù)讀取指令需要讀取數(shù)據(jù)的資源對(duì)應(yīng)的原生應(yīng)用程序需要讀取數(shù)據(jù)的資源;

執(zhí)行鉤取到的資源,以獲取原生應(yīng)用程序的相關(guān)數(shù)據(jù)。

優(yōu)選地,加載該安裝包所實(shí)現(xiàn)的目標(biāo)應(yīng)用程序,包括:

通過宿主應(yīng)用程序來建立目標(biāo)應(yīng)用程序的所需資源與原生應(yīng)用程序的所需資源的一一對(duì)應(yīng)關(guān)系。

優(yōu)選地,建立目標(biāo)應(yīng)用程序的所需資源與原生應(yīng)用程序的所需資源的一一對(duì)應(yīng)關(guān)系,包括:

解析安裝包以確定目標(biāo)應(yīng)用程序的所需資源的資源名;

根據(jù)目標(biāo)應(yīng)用程序的所需資源的資源名,加載與原生應(yīng)用程序的所需資源一一對(duì)應(yīng)的資源。

優(yōu)選地,將原生應(yīng)用程序的相關(guān)數(shù)據(jù)和第一終端設(shè)備的安裝環(huán)境信息通過預(yù)定的發(fā)送方式發(fā)送至第二終端設(shè)備,包括:

將原生應(yīng)用程序的相關(guān)數(shù)據(jù)和第一終端設(shè)備的安裝環(huán)境信息通過預(yù)先建立的單向數(shù)據(jù)鏈路發(fā)送至第二終端設(shè)備。

優(yōu)選地,原生應(yīng)用程序的相關(guān)數(shù)據(jù)包括用戶歷史行為數(shù)據(jù)、應(yīng)用配置信息、加密數(shù)據(jù)中的至少一項(xiàng),第一終端設(shè)備的安裝環(huán)境信息包括CPU型號(hào)、內(nèi)核版本號(hào)、系統(tǒng)版本號(hào)、系統(tǒng)配置信息中的至少一項(xiàng)。

本發(fā)明的另一實(shí)施例提出了一種運(yùn)行應(yīng)用程序的方法,包括:

接收第一終端設(shè)備發(fā)送的原生應(yīng)用程序的相關(guān)數(shù)據(jù)和第一終端設(shè)備的安裝環(huán)境信息;

基于接收到的原生應(yīng)用程序的相關(guān)數(shù)據(jù)和第一終端設(shè)備的安裝環(huán)境信息安裝和/或運(yùn)行第二終端設(shè)備中的繼生應(yīng)用程序。

優(yōu)選地,基于接收到的原生應(yīng)用程序的相關(guān)數(shù)據(jù)和第一終端設(shè)備的安裝環(huán)境信息安裝和/或運(yùn)行第二終端設(shè)備中的繼生應(yīng)用程序,包括:

通過鉤子函數(shù)監(jiān)控繼生應(yīng)用程序的安裝和/或運(yùn)行活動(dòng);

當(dāng)通過鉤子函數(shù)監(jiān)測到繼生應(yīng)用程序讀取第二終端設(shè)備的安裝環(huán)境信息和/或繼生應(yīng)用的相關(guān)數(shù)據(jù)時(shí),調(diào)用接收到的與第二終端設(shè)備的安裝環(huán)境信息和/或繼生應(yīng)用的相關(guān)數(shù)據(jù)一一對(duì)應(yīng)的第一終端設(shè)備的安裝環(huán)境信息和/或原生應(yīng)用程序的相關(guān)數(shù)據(jù)。

優(yōu)選地,基于接收到的原生應(yīng)用程序的相關(guān)數(shù)據(jù)和第一終端設(shè)備的安裝環(huán)境信息運(yùn)行第二終端設(shè)備中的繼生應(yīng)用程序,包括:

當(dāng)監(jiān)測到繼生應(yīng)用程序讀取與其相應(yīng)的相關(guān)數(shù)據(jù)時(shí),檢測預(yù)定目錄下是否存在原生應(yīng)用程序的相關(guān)數(shù)據(jù);

若是,則讀取原生應(yīng)用程序的相關(guān)數(shù)據(jù)。

優(yōu)選地,原生應(yīng)用程序的相關(guān)數(shù)據(jù)包括用戶歷史行為數(shù)據(jù)、應(yīng)用配置信息、加密數(shù)據(jù)中的至少一項(xiàng),第一終端設(shè)備的安裝環(huán)境信息包括CPU型號(hào)、內(nèi)核版本號(hào)、系統(tǒng)版本號(hào)、系統(tǒng)配置信息中的至少一項(xiàng)。

本發(fā)明的再一實(shí)施例提出了一種獲取及傳輸應(yīng)用程序數(shù)據(jù)的裝置,包括:

獲取模塊,用于通過安裝于宿主應(yīng)用程序內(nèi)的目標(biāo)應(yīng)用程序獲取原生應(yīng)用程序的相關(guān)數(shù)據(jù),宿主應(yīng)用程序和原生應(yīng)用程序安裝于第一終端設(shè)備;

發(fā)送模塊,用于將原生應(yīng)用程序的相關(guān)數(shù)據(jù)和第一終端設(shè)備的安裝環(huán)境信息通過預(yù)定的發(fā)送方式發(fā)送至第二終端設(shè)備。

可選地,該裝置還包括:

加載模塊,用于反射調(diào)用與宿主應(yīng)用程序具有相同包名的作為宿主應(yīng)用程序附帶資源的安裝包,以加載該安裝包所實(shí)現(xiàn)的目標(biāo)應(yīng)用程序,其中,目標(biāo)應(yīng)用程序的所需資源與原生應(yīng)用程序的所需資源一一對(duì)應(yīng);

其中,獲取模塊包括:

指令調(diào)用單元,用于調(diào)用目標(biāo)應(yīng)用程序的活動(dòng)進(jìn)程的數(shù)據(jù)讀取指令;

資源鉤取單元,用于通過鉤子函數(shù)鉤取目標(biāo)應(yīng)用程序執(zhí)行數(shù)據(jù)讀取指令需要讀取數(shù)據(jù)的資源對(duì)應(yīng)的原生應(yīng)用程序需要讀取數(shù)據(jù)的資源;

資源執(zhí)行單元,用于執(zhí)行鉤取到的資源,以獲取原生應(yīng)用程序的相關(guān)數(shù)據(jù)。

優(yōu)選地,加載模塊包括:

關(guān)系建立單元,用于通過宿主應(yīng)用程序來建立目標(biāo)應(yīng)用程序的所需資源與原生應(yīng)用程序的所需資源的一一對(duì)應(yīng)關(guān)系。

優(yōu)選地,關(guān)系建立單元包括:

資源名確定子單元,用于解析安裝包以確定目標(biāo)應(yīng)用程序的所需資源的資源名;

資源加載子單元,用于根據(jù)目標(biāo)應(yīng)用程序的所需資源的資源名,加載與原生應(yīng)用程序的所需資源一一對(duì)應(yīng)的資源。

優(yōu)選地,發(fā)送模塊具體用于將原生應(yīng)用程序的相關(guān)數(shù)據(jù)和第一終端設(shè)備的安裝環(huán)境信息通過預(yù)先建立的單向數(shù)據(jù)鏈路發(fā)送至第二終端設(shè)備。

優(yōu)選地,原生應(yīng)用程序的相關(guān)數(shù)據(jù)包括用戶歷史行為數(shù)據(jù)、應(yīng)用配置信息、加密數(shù)據(jù)中的至少一項(xiàng),第一終端設(shè)備的安裝環(huán)境信息包括CPU型號(hào)、內(nèi)核版本號(hào)、系統(tǒng)版本號(hào)、系統(tǒng)配置信息中的至少一項(xiàng)。

本發(fā)明的再一實(shí)施例提出了一種運(yùn)行應(yīng)用程序的裝置,包括:

接收模塊,用于接收第一終端設(shè)備發(fā)送的原生應(yīng)用程序的相關(guān)數(shù)據(jù)和第一終端設(shè)備的安裝環(huán)境信息;

安裝及運(yùn)行模塊,用于基于接收到的原生應(yīng)用程序的相關(guān)數(shù)據(jù)和第一終端設(shè)備的安裝環(huán)境信息安裝和/或運(yùn)行第二終端設(shè)備中的繼生應(yīng)用程序。

優(yōu)選地,安裝及運(yùn)行模塊包括:

活動(dòng)監(jiān)控單元,用于通過鉤子函數(shù)監(jiān)控繼生應(yīng)用程序的安裝和/或運(yùn)行活動(dòng);

數(shù)據(jù)調(diào)用單元,用于當(dāng)通過鉤子函數(shù)監(jiān)測到繼生應(yīng)用程序讀取第二終端設(shè)備的安裝環(huán)境信息和/或繼生應(yīng)用的相關(guān)數(shù)據(jù)時(shí),調(diào)用接收到的與第二終端設(shè)備的安裝環(huán)境信息和/或繼生應(yīng)用的相關(guān)數(shù)據(jù)一一對(duì)應(yīng)的第一終端設(shè)備的安裝環(huán)境信息和/或原生應(yīng)用程序的相關(guān)數(shù)據(jù)。

優(yōu)選地,安裝及運(yùn)行模塊包括:

數(shù)據(jù)檢測單元,用于當(dāng)監(jiān)測到繼生應(yīng)用程序讀取與其相應(yīng)的相關(guān)數(shù)據(jù)時(shí),檢測預(yù)定目錄下是否存在原生應(yīng)用程序的相關(guān)數(shù)據(jù);

數(shù)據(jù)讀取單元,用于當(dāng)檢測到預(yù)定目錄下存在原生應(yīng)用程序的相關(guān)數(shù)據(jù)時(shí),讀取原生應(yīng)用程序的相關(guān)數(shù)據(jù)。

優(yōu)選地,原生應(yīng)用程序的相關(guān)數(shù)據(jù)包括用戶歷史行為數(shù)據(jù)、應(yīng)用配置信息、加密數(shù)據(jù)中的至少一項(xiàng),第一終端設(shè)備的安裝環(huán)境信息包括CPU型號(hào)、內(nèi)核版本號(hào)、系統(tǒng)版本號(hào)、系統(tǒng)配置信息中的至少一項(xiàng)。

本發(fā)明的技術(shù)方案解決了如何將第一終端設(shè)備中的應(yīng)用程序的相關(guān)數(shù)據(jù)搬移到第二終端設(shè)備中。通過安裝于宿主應(yīng)用程序內(nèi)的目標(biāo)應(yīng)用程序獲取原生應(yīng)用程序的相關(guān)數(shù)據(jù),宿主應(yīng)用程序和原生應(yīng)用程序安裝于第一終端設(shè)備,在該步驟中通過具有與原生應(yīng)用程序全部相同的功能與服務(wù)的目標(biāo)應(yīng)用程序去執(zhí)行數(shù)據(jù)讀取操作,以獲取原生應(yīng)用程序的全部相關(guān)數(shù)據(jù),在上述數(shù)據(jù)中包括高操作權(quán)限才能獲取到的數(shù)據(jù)。

進(jìn)一步地,本發(fā)明的技術(shù)方案還解決了如何基于第一終端設(shè)備接收到的數(shù)據(jù)對(duì)第二終端設(shè)備的應(yīng)用程序的安裝和運(yùn)行過程進(jìn)行控制的問題?;诮邮盏降脑鷳?yīng)用程序的相關(guān)數(shù)據(jù)和第一終端設(shè)備的安裝環(huán)境信息安裝和/或運(yùn)行第二終端設(shè)備中的繼生應(yīng)用程序,基于接收到的第一終端設(shè)備的安裝環(huán)境信息為繼生應(yīng)用程序營造一個(gè)類似于第一終端設(shè)備的安裝環(huán)境,以保障繼生應(yīng)用程序后續(xù)的安裝以及運(yùn)行的順利進(jìn)行,另外,通過接收到的原生應(yīng)用程序的相關(guān)數(shù)據(jù)安裝和/或運(yùn)行第二終端設(shè)備中的繼生應(yīng)用程序,用戶無需手動(dòng)導(dǎo)入第一終端設(shè)備的歷史數(shù)據(jù)或者登錄驗(yàn)證賬戶,避免了復(fù)雜而又冗余的操作過程,提升了用戶體驗(yàn)度。

本發(fā)明附加的方面和優(yōu)點(diǎn)將在下面的描述中部分給出,這些將從下面的描述中變得明顯,或通過本發(fā)明的實(shí)踐了解到。

附圖說明

本發(fā)明上述的和/或附加的方面和優(yōu)點(diǎn)從下面結(jié)合附圖對(duì)實(shí)施例的描述中將變得明顯和容易理解,其中:

圖1為本發(fā)明一個(gè)實(shí)施例的獲取及傳輸應(yīng)用程序數(shù)據(jù)的方法的流程示意圖;

圖2為本發(fā)明一個(gè)實(shí)施例的運(yùn)行應(yīng)用程序的方法的流程示意圖;

圖3為本發(fā)明一個(gè)實(shí)施例的獲取及傳輸應(yīng)用程序數(shù)據(jù)的裝置的結(jié)構(gòu)示意圖;

圖4為本發(fā)明一個(gè)實(shí)施例的運(yùn)行應(yīng)用程序的裝置的結(jié)構(gòu)示意圖。

具體實(shí)施方式

下面詳細(xì)描述本發(fā)明的實(shí)施例,所述實(shí)施例的示例在附圖中示出,其中自始至終相同或類似的標(biāo)號(hào)表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實(shí)施例是示例性的,僅用于解釋本發(fā)明,而不能解釋為對(duì)本發(fā)明的限制。

本技術(shù)領(lǐng)域技術(shù)人員可以理解,除非特意聲明,這里使用的單數(shù)形式“一”、“一個(gè)”、“所述”和“該”也可包括復(fù)數(shù)形式。應(yīng)該進(jìn)一步理解的是,本發(fā)明的說明書中使用的措辭“包括”是指存在所述特征、整數(shù)、步驟、操作、元件和/或組件,但是并不排除存在或添加一個(gè)或多個(gè)其他特征、整數(shù)、步驟、操作、元件、組件和/或它們的組。應(yīng)該理解,當(dāng)我們稱元件被“連接”或“耦接”到另一元件時(shí),它可以直接連接或耦接到其他元件,或者也可以存在中間元件。此外,這里使用的“連接”或“耦接”可以包括無線連接或無線耦接。這里使用的措辭“和/或”包括一個(gè)或更多個(gè)相關(guān)聯(lián)的列出項(xiàng)的全部或任一單元和全部組合。

本技術(shù)領(lǐng)域技術(shù)人員可以理解,除非另外定義,這里使用的所有術(shù)語(包括技術(shù)術(shù)語和科學(xué)術(shù)語),具有與本發(fā)明所屬領(lǐng)域中的普通技術(shù)人員的一般理解相同的意義。還應(yīng)該理解的是,諸如通用字典中定義的那些術(shù)語,應(yīng)該被理解為具有與現(xiàn)有技術(shù)的上下文中的意義一致的意義,并且除非像這里一樣被特定定義,否則不會(huì)用理想化或過于正式的含義來解釋。

本技術(shù)領(lǐng)域技術(shù)人員可以理解,這里所使用的“終端”、“終端設(shè)備”既包括無線信號(hào)接收器的設(shè)備,其僅具備無發(fā)射能力的無線信號(hào)接收器的設(shè)備,又包括接收和發(fā)射硬件的設(shè)備,其具有能夠在雙向通信鏈路上,進(jìn)行雙向通信的接收和發(fā)射硬件的設(shè)備。這種設(shè)備可以包括:蜂窩或其他通信設(shè)備,其具有單線路顯示器或多線路顯示器或沒有多線路顯示器的蜂窩或其他通信設(shè)備;PCS(Personal Communications Service,個(gè)人通信系統(tǒng)),其可以組合語音、數(shù)據(jù)處理、傳真和/或數(shù)據(jù)通信能力;PDA(Personal Digital Assistant,個(gè)人數(shù)字助理),其可以包括射頻接收器、尋呼機(jī)、互聯(lián)網(wǎng)/內(nèi)聯(lián)網(wǎng)訪問、網(wǎng)絡(luò)瀏覽器、記事本、日歷和/或GPS(Global Positioning System,全球定位系統(tǒng))接收器;常規(guī)膝上型和/或掌上型計(jì)算機(jī)或其他設(shè)備,其具有和/或包括射頻接收器的常規(guī)膝上型和/或掌上型計(jì)算機(jī)或其他設(shè)備。這里所使用的“終端”、“終端設(shè)備”可以是便攜式、可運(yùn)輸、安裝在交通工具(航空、海運(yùn)和/或陸地)中的,或者適合于和/或配置為在本地運(yùn)行,和/或以分布形式,運(yùn)行在地球和/或空間的任何其他位置運(yùn)行。這里所使用的“終端”、“終端設(shè)備”還可以是通信終端、上網(wǎng)終端、音樂/視頻播放終端,例如可以是PDA、MID(Mobile Internet Device,移動(dòng)互聯(lián)網(wǎng)設(shè)備)和/或具有音樂/視頻播放功能的移動(dòng)電話,也可以是智能電視、機(jī)頂盒等設(shè)備。

圖1為本發(fā)明一個(gè)實(shí)施例的獲取及傳輸應(yīng)用程序數(shù)據(jù)的方法的流程示意圖。

本實(shí)施以下描述的獲取及傳輸應(yīng)用程序數(shù)據(jù)的方法所實(shí)施的應(yīng)用場景,是安裝在移動(dòng)終端上的基于Android操作系統(tǒng)的運(yùn)行環(huán)境。

本領(lǐng)域技術(shù)人員應(yīng)當(dāng)知曉,本發(fā)明是基于免Root提權(quán)而提出的,然而,提權(quán)操作只是Android系統(tǒng)所實(shí)施的權(quán)限管理控制,本發(fā)明也當(dāng)然地適用于已經(jīng)Root提權(quán)的Android操作系統(tǒng)中。

本發(fā)明是基于沙箱原理而提出的,故而,本領(lǐng)域技術(shù)人員得以結(jié)合公知的沙箱實(shí)現(xiàn)原理來理解本發(fā)明的實(shí)施。沙箱的作用是為目標(biāo)應(yīng)用程序提供相對(duì)封閉的運(yùn)行環(huán)境,使得目標(biāo)應(yīng)用程序是在借助沙箱中的安全策略的情況下對(duì)系統(tǒng)資源進(jìn)行訪問,從而目標(biāo)應(yīng)用程序的活動(dòng)被限制在規(guī)定的范圍之內(nèi)。

需要說明的是,本發(fā)明通過一種沙箱實(shí)例構(gòu)造目標(biāo)應(yīng)用程序,并且控制目標(biāo)應(yīng)用程序進(jìn)行相應(yīng)的運(yùn)行活動(dòng),以獲取原生應(yīng)用程序的相關(guān)數(shù)據(jù)。具體地,通過沙箱技術(shù)來執(zhí)行目標(biāo)應(yīng)用程序的運(yùn)行活動(dòng),使得運(yùn)行于沙箱中的目標(biāo)應(yīng)用程序可實(shí)現(xiàn)與原生應(yīng)用程序相應(yīng)的服務(wù),繼而通過目標(biāo)應(yīng)用程序執(zhí)行可實(shí)現(xiàn)的與原生應(yīng)用程序相應(yīng)的服務(wù)來獲取原生應(yīng)用程序的相關(guān)數(shù)據(jù)。值得注意的是,獲取到的原生應(yīng)用程序的相關(guān)數(shù)據(jù)包括擁有系統(tǒng)高操作權(quán)限才能獲取到的數(shù)據(jù)。

步驟S110:通過安裝于宿主應(yīng)用程序內(nèi)的目標(biāo)應(yīng)用程序獲取原生應(yīng)用程序的相關(guān)數(shù)據(jù),宿主應(yīng)用程序和原生應(yīng)用程序安裝于第一終端設(shè)備。

其中,宿主應(yīng)用程序是指實(shí)現(xiàn)目標(biāo)應(yīng)用程序的加殼應(yīng)用程序,可以通過宿主應(yīng)用程序完成目標(biāo)應(yīng)用程序的安裝與運(yùn)行。此外,目標(biāo)應(yīng)用程序需要具有原生應(yīng)用程序的全部功能,能夠提供與原生應(yīng)用程序完全相同的服務(wù)。通過在宿主應(yīng)用程序中建立目標(biāo)應(yīng)用程序與沙箱運(yùn)行環(huán)境之間的通信,使得目標(biāo)應(yīng)用程序的活動(dòng)過程可以進(jìn)一步被沙箱運(yùn)行環(huán)境監(jiān)視,從而對(duì)其適用安全策略,并通過在宿主應(yīng)用程序中建立目標(biāo)應(yīng)用程序的所需資源與原生應(yīng)用程序的所需資源一一對(duì)應(yīng),可在宿主應(yīng)用程序中通過鉤子函數(shù)調(diào)用目標(biāo)應(yīng)用程序的所需的對(duì)應(yīng)資源,確保目標(biāo)應(yīng)用程序能被宿主應(yīng)用程序正常加載并保持安全運(yùn)行。

需要說明的是,由于需要獲取的原生應(yīng)用程序的相關(guān)數(shù)據(jù)包括擁有系統(tǒng)高操作權(quán)限才能獲取到的數(shù)據(jù),因此不進(jìn)行任何處理去直接獲取原生應(yīng)用程序的相關(guān)數(shù)據(jù)是不可行的。本發(fā)明實(shí)施例提供的方案是通過具有與原生應(yīng)用程序全部相同的功能與服務(wù)的目標(biāo)應(yīng)用程序去執(zhí)行數(shù)據(jù)讀取操作,來獲取原生應(yīng)用程序的全部相關(guān)數(shù)據(jù)。

可選地,本發(fā)明實(shí)施例提供的方法還包括步驟S130:反射調(diào)用與宿主應(yīng)用程序具有相同包名的作為宿主應(yīng)用程序附帶資源的安裝包,以加載該安裝包所實(shí)現(xiàn)的目標(biāo)應(yīng)用程序,其中,目標(biāo)應(yīng)用程序的所需資源與原生應(yīng)用程序的所需資源一一對(duì)應(yīng)。

需要說明的是,通過上述操作步驟可以實(shí)現(xiàn)在宿主應(yīng)用程序中加載目標(biāo)應(yīng)用程序的功能。然而,應(yīng)用程序在終端設(shè)備的系統(tǒng)環(huán)境中僅可以唯一的形式安裝并運(yùn)行,即對(duì)于一種即時(shí)通信類應(yīng)用程序,在一臺(tái)終端設(shè)備中僅可以安裝并運(yùn)行一個(gè)該即時(shí)通信類應(yīng)用程序,因此若在已安裝了原生應(yīng)用程序的系統(tǒng)中,再安裝具有與原生應(yīng)用程序全部相同的功能與服務(wù)的目標(biāo)應(yīng)用程序時(shí),不經(jīng)過任何處理直接安裝目標(biāo)應(yīng)用程序是不可行的。本發(fā)明實(shí)施例提供的方法通過對(duì)目標(biāo)應(yīng)用程序進(jìn)行加殼操作,以使得系統(tǒng)不能感知目標(biāo)應(yīng)用程序的存在,故而在同一系統(tǒng)中實(shí)現(xiàn)同時(shí)安裝原生應(yīng)用程序與目標(biāo)應(yīng)用程序的目的。

具體地,目標(biāo)應(yīng)用程序的所需資源包括但不限于ActivityManagerService資源、PackageManagerService資源、Activity組件、Service組件、Broadcast Receiver組件、Content Provider組件等。

本實(shí)施例所采用的反射機(jī)制可以為Java反射機(jī)制,Java反射機(jī)制是在運(yùn)行狀態(tài)中,對(duì)于任意一個(gè)類,都能夠知道這個(gè)類的所有屬性和方法;對(duì)于任意一個(gè)對(duì)象,都能夠調(diào)用它的任意一個(gè)方法;這種動(dòng)態(tài)獲取信息以及動(dòng)態(tài)調(diào)用對(duì)象的方法的功能即為JAVA語言的反射機(jī)制。

通過反射機(jī)制,調(diào)用AssetManager中的addAssetPath方法,將宿主應(yīng)用程序安裝文件中的資源加載到Resource中,通過Resource對(duì)象調(diào)用宿主應(yīng)用程序安裝文件中的資源。在獲取宿主應(yīng)用程序安裝文件資源之前,首先要由宿主程序新建DexClassLoader加載宿主應(yīng)用程序安裝包,隨后新建AssetManager加載宿主應(yīng)用程序安裝文件的資源,最后通過Resource對(duì)象讀取宿主應(yīng)用程序安裝文件的資源。

優(yōu)選地,加載該安裝包所實(shí)現(xiàn)的目標(biāo)應(yīng)用程序的步驟包括步驟S131:通過宿主應(yīng)用程序來建立目標(biāo)應(yīng)用程序的所需資源與原生應(yīng)用程序的所需資源的一一對(duì)應(yīng)關(guān)系。

例如,終端設(shè)備的操作系統(tǒng)為Android系統(tǒng),目標(biāo)應(yīng)用程序?yàn)锳pp1’,該目標(biāo)應(yīng)用程序欲實(shí)現(xiàn)原生應(yīng)用程序App1的全部功能與相應(yīng)服務(wù);在終端設(shè)備的宿主應(yīng)用程序中,“App1’.apk”為宿主應(yīng)用程序附帶資源的安裝包,通過Java反射機(jī)制調(diào)用安裝包“App1’.apk”,隨后加載“App1’.apk”所實(shí)現(xiàn)的目標(biāo)應(yīng)用程序App1’,在宿主應(yīng)用程序中加載“App1’.apk”的過程中,創(chuàng)建目標(biāo)應(yīng)用程序App1’的所需全部資源如ActivityManagerService資源、PackageManagerService資源、Activity組件、Service組件、Broadcast Receiver組件和Content Provider組件。其中,目標(biāo)應(yīng)用程序App1’的所需全部資源一一對(duì)應(yīng)且相同于原生應(yīng)用程序在終端設(shè)備Android操作系統(tǒng)中運(yùn)行App1所需的全部資源。

更優(yōu)選地,建立目標(biāo)應(yīng)用程序的所需資源與原生應(yīng)用程序的所需資源的一一對(duì)應(yīng)關(guān)系的步驟包括步驟S1311和步驟S1312:步驟S1311:解析安裝包以確定目標(biāo)應(yīng)用程序的所需資源的資源名;步驟S1312:根據(jù)目標(biāo)應(yīng)用程序的所需資源的資源名,加載與原生應(yīng)用程序的所需資源一一對(duì)應(yīng)的資源。

需要說明的是,解析應(yīng)用程序的原安裝包的手段,為本領(lǐng)域技術(shù)人員所熟知。安裝包APK文件本質(zhì)上是利用ZIP壓縮技術(shù)結(jié)合簽名技術(shù)實(shí)現(xiàn)的壓縮包,因此,一方面可以通過解壓技術(shù)釋放其內(nèi)部文件,另一方面還可通過Apktool之類的工具軟件獲取其內(nèi)部文件。

具體地,Android應(yīng)用程序在運(yùn)行的過程中,是通過一個(gè)稱為AssetsManager資源管理器來讀取打包在APK文件里面的資源文件的。應(yīng)用程序的每一個(gè)Activity組件都關(guān)聯(lián)一個(gè)ContextImpl對(duì)象,這個(gè)ContextImpl對(duì)象就是用來描述Activity組件的運(yùn)行上下文環(huán)境的。調(diào)用這個(gè)ContextImpl對(duì)象的成員函數(shù)init來執(zhí)行初始化Activity組件運(yùn)行上下文環(huán)境的工作,其中就包括創(chuàng)建用來訪問應(yīng)用程序資源的Resources對(duì)象和AssetsManager對(duì)象的工作。其中,ContextImpl.init函數(shù)就定義在文件frameworks/base/core/java/android/app/ContextImpl.java中。ContextImpl.init函數(shù)中的參數(shù)packageInfo指向的是一個(gè)loadedApk對(duì)象,這個(gè)loadedApk對(duì)象描述的是當(dāng)前正在啟動(dòng)組件所屬的Apk。用來訪問應(yīng)用程序資源的Resources對(duì)象是通過調(diào)用參數(shù)packageInfo所指向的是一個(gè)loadedApk對(duì)象的成員函數(shù)getResources來創(chuàng)建的。由此可知,可以通過創(chuàng)建Resources對(duì)象提取或訪問應(yīng)用程序資源。

通過上述操作方式即可在宿主應(yīng)用程序中加載目標(biāo)應(yīng)用程序,以備后續(xù)通過具有與原生應(yīng)用程序全部相同的功能與服務(wù)的目標(biāo)應(yīng)用程序獲取原生應(yīng)用程序的全部相關(guān)數(shù)據(jù)。下文將會(huì)具體描述如何通過目標(biāo)應(yīng)用程序獲取原生應(yīng)用程序的全部相關(guān)數(shù)據(jù)。

優(yōu)選地,通過安裝于宿主應(yīng)用程序內(nèi)的目標(biāo)應(yīng)用程序獲取原生應(yīng)用程序的相關(guān)數(shù)據(jù)的步驟包括步驟S111、步驟S112和步驟S113:步驟S111:調(diào)用目標(biāo)應(yīng)用程序的活動(dòng)進(jìn)程的數(shù)據(jù)讀取指令;步驟S112:通過鉤子函數(shù)鉤取目標(biāo)應(yīng)用程序執(zhí)行數(shù)據(jù)讀取指令需要讀取數(shù)據(jù)的資源對(duì)應(yīng)的原生應(yīng)用程序需要讀取數(shù)據(jù)的資源;步驟S113:執(zhí)行鉤取到的資源,以獲取原生應(yīng)用程序的相關(guān)數(shù)據(jù)。

首先,調(diào)用目標(biāo)應(yīng)用程序的活動(dòng)進(jìn)程的數(shù)據(jù)讀取指令。

具體地,主動(dòng)通過目標(biāo)應(yīng)用程序的活動(dòng)進(jìn)程發(fā)送調(diào)用數(shù)據(jù)讀取指令。

隨后,通過鉤子函數(shù)鉤取目標(biāo)應(yīng)用程序執(zhí)行數(shù)據(jù)讀取指令需要讀取數(shù)據(jù)的資源對(duì)應(yīng)的原生應(yīng)用程序需要讀取數(shù)據(jù)的資源。

需要說明的是,術(shù)語“鉤子”涵蓋了用于通過攔截在軟件組件之間傳遞的函數(shù)調(diào)用、消息、或事件來改變或增加操作系統(tǒng)、應(yīng)用程序、或其他軟件組件的行為的技術(shù)。而處理這種被攔截的函數(shù)調(diào)用、事件或消息的代碼就被稱為鉤子hook函數(shù)。鉤子通常用于各種目標(biāo),包括對(duì)功能進(jìn)行調(diào)試和對(duì)功能進(jìn)行擴(kuò)展。其示例可以包括在鍵盤或鼠標(biāo)事件傳遞到應(yīng)用程序之前攔截它們,或者攔截系統(tǒng)調(diào)用、系統(tǒng)函數(shù)行為、函數(shù)執(zhí)行結(jié)果等,以監(jiān)視或修改應(yīng)用程序或其他組件的功能等等。本實(shí)施例即可采用鉤子hook函數(shù)接管所述應(yīng)用程序運(yùn)行時(shí)所需的安裝自校驗(yàn)操作。

作為一個(gè)沙箱實(shí)例,使目標(biāo)應(yīng)用程序運(yùn)行于沙箱運(yùn)行環(huán)境中,監(jiān)控目標(biāo)應(yīng)用程序的活動(dòng)進(jìn)程是沙箱運(yùn)行環(huán)境的核心實(shí)現(xiàn)目標(biāo),負(fù)責(zé)實(shí)現(xiàn)以下的功能:通過監(jiān)控目標(biāo)應(yīng)用程序?qū)Y源的訪問,使目標(biāo)應(yīng)用程序進(jìn)程能夠?qū)崿F(xiàn)對(duì)對(duì)應(yīng)資源的正常調(diào)用。例如,上述有關(guān)進(jìn)行對(duì)目標(biāo)應(yīng)用程序App1’安裝包資源的調(diào)用,可以通過監(jiān)控具體調(diào)用資源的調(diào)用指令,利用hook技術(shù)來實(shí)現(xiàn)??蓪⑼ㄟ^鉤子函數(shù)對(duì)目標(biāo)應(yīng)用程序的活動(dòng)進(jìn)程進(jìn)行監(jiān)控的方式注冊(cè)專用服務(wù)進(jìn)程,以鉤子函數(shù)關(guān)聯(lián)目標(biāo)應(yīng)用程序App1’活動(dòng)進(jìn)程的調(diào)用指令來實(shí)現(xiàn)對(duì)目標(biāo)應(yīng)用程序App1’的活動(dòng)監(jiān)控。

當(dāng)鉤子函數(shù)監(jiān)控到調(diào)用目標(biāo)應(yīng)用程序的活動(dòng)進(jìn)程的數(shù)據(jù)讀取指令時(shí),鉤取目標(biāo)應(yīng)用程序執(zhí)行數(shù)據(jù)讀取指令需要讀取數(shù)據(jù)的資源對(duì)應(yīng)的原生應(yīng)用程序需要讀取數(shù)據(jù)的資源。

例如,利用鉤子函數(shù)對(duì)數(shù)據(jù)讀取指令的入口點(diǎn)進(jìn)行監(jiān)視,截獲此一調(diào)用指令,并獲取目標(biāo)應(yīng)用程序App1’訪問的資源的名稱,如鉤子函數(shù)獲取到目標(biāo)應(yīng)用程序App1’訪問的資源為Service組件,隨后轉(zhuǎn)向執(zhí)行相應(yīng)鉤取資源操作的鉤子函數(shù),由該鉤子函數(shù)鉤取與原生應(yīng)用程序?qū)?yīng)的Service組件。

最后,執(zhí)行鉤取到的資源,以獲取原生應(yīng)用程序的相關(guān)數(shù)據(jù)。

需要說明的是,通過執(zhí)行目標(biāo)應(yīng)用程序的相關(guān)資源,能夠?qū)崿F(xiàn)與執(zhí)行原生應(yīng)用程序的相關(guān)資源完全相同的執(zhí)行結(jié)果,因此,通過執(zhí)行鉤取到的資源,使得目標(biāo)應(yīng)用程序可以替代原生應(yīng)用程序讀取原生應(yīng)用程序的相關(guān)數(shù)據(jù)。

步驟S120:將原生應(yīng)用程序的相關(guān)數(shù)據(jù)和第一終端設(shè)備的安裝環(huán)境信息通過預(yù)定的發(fā)送方式發(fā)送至第二終端設(shè)備。

具體地,可以通過本文上述描述方式獲取原生應(yīng)用程序的相關(guān)數(shù)據(jù),隨后,獲取第一終端設(shè)備的安裝環(huán)境信息;接著,將原生應(yīng)用程序的相關(guān)數(shù)據(jù)和第一終端設(shè)備的安裝環(huán)境信息通過預(yù)定的發(fā)送方式發(fā)送至第二終端設(shè)備。

優(yōu)選地,原生應(yīng)用程序的相關(guān)數(shù)據(jù)包括但不限于用戶歷史行為數(shù)據(jù)、應(yīng)用配置信息、加密數(shù)據(jù)中的至少一項(xiàng),第一終端設(shè)備的安裝環(huán)境信息包括但不限于CPU型號(hào)、內(nèi)核版本號(hào)、系統(tǒng)版本號(hào)、系統(tǒng)配置信息中的至少一項(xiàng)。如表1所示,是第一終端設(shè)備的安裝環(huán)境信息。

表1

需要說明的是,存在多種方式將原生應(yīng)用程序的相關(guān)數(shù)據(jù)和第一終端設(shè)備的安裝環(huán)境信息發(fā)送至第二終端設(shè)備,如通過Wi-Fi熱點(diǎn)、藍(lán)牙、云端服務(wù)器等方式發(fā)送數(shù)據(jù),本發(fā)明實(shí)施例提供一種優(yōu)選方式進(jìn)行數(shù)據(jù)的傳輸,具體如下描述:

優(yōu)選地,將原生應(yīng)用程序的相關(guān)數(shù)據(jù)和第一終端設(shè)備的安裝環(huán)境信息通過預(yù)定的發(fā)送方式發(fā)送至第二終端設(shè)備的步驟具體包括:將原生應(yīng)用程序的相關(guān)數(shù)據(jù)和第一終端設(shè)備的安裝環(huán)境信息通過預(yù)先建立的單向數(shù)據(jù)鏈路發(fā)送至第二終端設(shè)備。

具體地,通過在第一終端設(shè)備與第二終端設(shè)備間建立單向數(shù)據(jù)鏈路,可以避免通過將數(shù)據(jù)上傳至服務(wù)器導(dǎo)致在數(shù)據(jù)傳輸過程中造成的數(shù)據(jù)泄漏的問題。在建立數(shù)據(jù)鏈路之后,將已封裝的數(shù)據(jù)經(jīng)過數(shù)據(jù)鏈路直接從第一終端設(shè)備發(fā)送至第二終端設(shè)備。

需要說明的是,可以根據(jù)不同類型數(shù)據(jù)的特征進(jìn)行數(shù)據(jù)封裝,以生成不同類型的數(shù)據(jù)包。其中,每個(gè)數(shù)據(jù)包攜帶對(duì)應(yīng)類型數(shù)據(jù)的特征,從而第二終端設(shè)備接收到數(shù)據(jù)包之后,能夠根據(jù)每個(gè)數(shù)據(jù)包攜帶的對(duì)應(yīng)類型數(shù)據(jù)的特征獲知數(shù)據(jù)的類型。

相應(yīng)地,第一終端設(shè)備將原生應(yīng)用程序的相關(guān)數(shù)據(jù)和第一終端設(shè)備的安裝環(huán)境信息發(fā)送至第二終端設(shè)備后,在第二終端設(shè)備會(huì)基于接收到的原生應(yīng)用程序的相關(guān)數(shù)據(jù)和第一終端設(shè)備的安裝環(huán)境信息在本地安裝和運(yùn)行繼生應(yīng)用程序。

圖2為本發(fā)明一個(gè)實(shí)施例的運(yùn)行應(yīng)用程序的方法的流程示意圖。

本發(fā)明以下即將描述的運(yùn)行應(yīng)用程序的方法所實(shí)施的應(yīng)用場景,是安裝在移動(dòng)終端上的基于Android操作系統(tǒng)的運(yùn)行環(huán)境。

在第二終端設(shè)備中的操作方法也是基于沙箱原理而提出的,故而,本領(lǐng)域技術(shù)人員得以結(jié)合公知的沙箱實(shí)現(xiàn)原理來理解本發(fā)明的實(shí)施。沙箱的作用是為目標(biāo)應(yīng)用程序提供相對(duì)封閉的運(yùn)行環(huán)境,使得目標(biāo)應(yīng)用程序是在借助沙箱中的安全策略的情況下對(duì)系統(tǒng)資源進(jìn)行訪問,從而目標(biāo)應(yīng)用程序的活動(dòng)被限制在規(guī)定的范圍之內(nèi)。

步驟S210:接收第一終端設(shè)備發(fā)送的原生應(yīng)用程序的相關(guān)數(shù)據(jù)和第一終端設(shè)備的安裝環(huán)境信息。

具體地,第一終端設(shè)備將原生應(yīng)用程序的相關(guān)數(shù)據(jù)和第一終端設(shè)備的安裝環(huán)境信息通過預(yù)定的發(fā)送方式發(fā)送至第二終端設(shè)備,第二終端設(shè)備接收第一終端設(shè)備發(fā)送的原生應(yīng)用程序的相關(guān)數(shù)據(jù)和第一終端設(shè)備的安裝環(huán)境信息。

步驟S220:基于接收到的原生應(yīng)用程序的相關(guān)數(shù)據(jù)和第一終端設(shè)備的安裝環(huán)境信息安裝和/或運(yùn)行第二終端設(shè)備中的繼生應(yīng)用程序。

其中,繼生應(yīng)用程序具有原生應(yīng)用程序的全部功能,能夠提供與原生應(yīng)用程序完全相同的服務(wù)。在具體應(yīng)用場景中,用戶在第一終端設(shè)備中安裝了原生應(yīng)用程序,當(dāng)用戶更換新的第二終端設(shè)備時(shí),在更換終端設(shè)備的過程中,需要將第一終端設(shè)備中原生應(yīng)用程序的相關(guān)數(shù)據(jù)搬移到第二終端設(shè)備對(duì)應(yīng)的應(yīng)用程序中,該對(duì)應(yīng)的應(yīng)用程序就是繼生應(yīng)用程序,繼而使得第二終端設(shè)備中的繼生應(yīng)用程序在具有原生應(yīng)用程序的全部功能,能夠提供與原生應(yīng)用程序完全相同的服務(wù)的情況下,還保留原生應(yīng)用的相關(guān)數(shù)據(jù)如用戶聊天記錄、用戶個(gè)人偏好設(shè)置信息等。

優(yōu)選地,原生應(yīng)用程序的相關(guān)數(shù)據(jù)包括但不限于用戶歷史行為數(shù)據(jù)、應(yīng)用配置信息、加密數(shù)據(jù)中的至少一項(xiàng),第一終端設(shè)備的安裝環(huán)境信息包括但不限于CPU型號(hào)、內(nèi)核版本號(hào)、系統(tǒng)版本號(hào)、系統(tǒng)配置信息中的至少一項(xiàng)。

優(yōu)選地,基于接收到的原生應(yīng)用程序的相關(guān)數(shù)據(jù)和第一終端設(shè)備的安裝環(huán)境信息安裝和/或運(yùn)行第二終端設(shè)備中的繼生應(yīng)用程序的步驟包括:步驟S221和步驟S222:步驟S221:通過鉤子函數(shù)監(jiān)控繼生應(yīng)用程序的安裝和/或運(yùn)行活動(dòng);步驟S222:當(dāng)通過鉤子函數(shù)監(jiān)測到繼生應(yīng)用程序讀取第二終端設(shè)備的安裝環(huán)境信息和/或繼生應(yīng)用的相關(guān)數(shù)據(jù)時(shí),調(diào)用接收到的與第二終端設(shè)備的安裝環(huán)境信息和/或繼生應(yīng)用的相關(guān)數(shù)據(jù)一一對(duì)應(yīng)的第一終端設(shè)備的安裝環(huán)境信息和/或原生應(yīng)用程序的相關(guān)數(shù)據(jù)。

上述操作步驟的主要目的是為了給繼生應(yīng)用程序營造一個(gè)安裝、運(yùn)行環(huán)境,在該環(huán)境下繼生應(yīng)用程序察覺不到已處于第二終端設(shè)備,而是仍然認(rèn)為還在第一終端設(shè)備中。另外,通過上述操作步驟還可以使得繼生應(yīng)用程序能夠獲取原生應(yīng)用程序的相關(guān)數(shù)據(jù),如用戶聊天記錄、用戶操作記錄、用戶個(gè)人偏好設(shè)置信息、登錄校驗(yàn)信息等,從而將原生應(yīng)用程序從第一終端設(shè)備原封不動(dòng)地“復(fù)制”到第二終端設(shè)備中,用戶無需進(jìn)行繁瑣的導(dǎo)入聊天記錄操作或者重新為應(yīng)用程序設(shè)置個(gè)人偏好設(shè)置信息等,就可以獲得與原生應(yīng)用程序一模一樣的繼生應(yīng)用程序,用戶也無需通過登錄校驗(yàn)操作便可直接登錄應(yīng)用程序。

具體地,當(dāng)通過鉤子函數(shù)監(jiān)測到繼生應(yīng)用程序讀取第二終端設(shè)備的安裝環(huán)境信息和/或繼生應(yīng)用的相關(guān)數(shù)據(jù)時(shí),調(diào)用接收到的與第二終端設(shè)備的安裝環(huán)境信息和/或繼生應(yīng)用的相關(guān)數(shù)據(jù)一一對(duì)應(yīng)的第一終端設(shè)備的安裝環(huán)境信息和/或原生應(yīng)用程序的相關(guān)數(shù)據(jù)。設(shè)置鉤子函數(shù)監(jiān)控多個(gè)與繼生應(yīng)用程序安裝和/或運(yùn)行活動(dòng)相關(guān)的監(jiān)測點(diǎn),當(dāng)監(jiān)測到繼生應(yīng)用程序讀取第二終端設(shè)備的安裝環(huán)境信息時(shí),通過鉤子函數(shù)將獲取第二終端設(shè)備的安裝環(huán)境信息的指令鉤取,并替換與第二終端設(shè)備的安裝環(huán)境信息和/或繼生應(yīng)用的相關(guān)數(shù)據(jù)一一對(duì)應(yīng)的第一終端設(shè)備的安裝環(huán)境信息和/或原生應(yīng)用程序的相關(guān)數(shù)據(jù),以使得繼生應(yīng)用程序認(rèn)為還處于第一終端設(shè)備中。或者,當(dāng)監(jiān)測到繼生應(yīng)用程序讀取繼生應(yīng)用的相關(guān)數(shù)據(jù)時(shí),通過鉤子函數(shù)將獲取第二終端設(shè)備的安裝環(huán)境信息的指令鉤取,并替換與第二終端設(shè)備的安裝環(huán)境信息和/或繼生應(yīng)用的相關(guān)數(shù)據(jù)一一對(duì)應(yīng)的第一終端設(shè)備的安裝環(huán)境信息和/或原生應(yīng)用程序的相關(guān)數(shù)據(jù),以使得繼生應(yīng)用程序直接讀取從第一終端設(shè)備接收到的數(shù)據(jù)。

需要說明的是,如果在第二終端設(shè)備中,將接收到的第一終端設(shè)備發(fā)送的原生應(yīng)用程序的相關(guān)數(shù)據(jù)存儲(chǔ)于繼生應(yīng)用程序讀取與其相應(yīng)的相關(guān)數(shù)據(jù)的預(yù)定目錄下,則本發(fā)明實(shí)施例還提供一個(gè)優(yōu)選方案,使得繼生應(yīng)用程序可以直接讀取從第一終端設(shè)備接收到的數(shù)據(jù)。

優(yōu)選地,基于接收到的原生應(yīng)用程序的相關(guān)數(shù)據(jù)和第一終端設(shè)備的安裝環(huán)境信息運(yùn)行第二終端設(shè)備中的繼生應(yīng)用程序的步驟包括步驟S223和步驟S224:步驟S223:當(dāng)監(jiān)測到繼生應(yīng)用程序讀取與其相應(yīng)的相關(guān)數(shù)據(jù)時(shí),檢測預(yù)定目錄下是否存在原生應(yīng)用程序的相關(guān)數(shù)據(jù);步驟S224:若是,則讀取原生應(yīng)用程序的相關(guān)數(shù)據(jù)。

具體地,接收第一終端設(shè)備發(fā)送的原生應(yīng)用程序的相關(guān)數(shù)據(jù),并將原生應(yīng)用程序的相關(guān)數(shù)據(jù)存儲(chǔ)于第二終端設(shè)備中的相應(yīng)的預(yù)定目錄下;接著,當(dāng)監(jiān)測到繼生應(yīng)用程序讀取與其相應(yīng)的相關(guān)數(shù)據(jù)時(shí),檢測預(yù)定目錄下是否存在原生應(yīng)用程序的相關(guān)數(shù)據(jù);最后,若預(yù)定目錄下存在原生應(yīng)用程序的相關(guān)數(shù)據(jù),則讀取原生應(yīng)用程序的相關(guān)數(shù)據(jù)。

本發(fā)明的技術(shù)方案解決了如何將第一終端設(shè)備中的應(yīng)用程序的相關(guān)數(shù)據(jù)搬移到第二終端設(shè)備中。通過安裝于宿主應(yīng)用程序內(nèi)的目標(biāo)應(yīng)用程序獲取原生應(yīng)用程序的相關(guān)數(shù)據(jù),宿主應(yīng)用程序和原生應(yīng)用程序安裝于第一終端設(shè)備,在該步驟中通過具有與原生應(yīng)用程序全部相同的功能與服務(wù)的目標(biāo)應(yīng)用程序去執(zhí)行數(shù)據(jù)讀取操作,以獲取原生應(yīng)用程序的全部相關(guān)數(shù)據(jù),在上述數(shù)據(jù)中包括高操作權(quán)限才能獲取到的數(shù)據(jù)。

進(jìn)一步地,本發(fā)明的技術(shù)方案還解決了如何基于第一終端設(shè)備接收到的數(shù)據(jù)對(duì)第二終端設(shè)備的應(yīng)用程序的安裝和運(yùn)行過程進(jìn)行控制的問題。基于接收到的原生應(yīng)用程序的相關(guān)數(shù)據(jù)和第一終端設(shè)備的安裝環(huán)境信息安裝和/或運(yùn)行第二終端設(shè)備中的繼生應(yīng)用程序,基于接收到的第一終端設(shè)備的安裝環(huán)境信息為繼生應(yīng)用程序營造一個(gè)類似于第一終端設(shè)備的安裝環(huán)境,以保障繼生應(yīng)用程序后續(xù)的安裝以及運(yùn)行的順利進(jìn)行,另外,通過接收到的原生應(yīng)用程序的相關(guān)數(shù)據(jù)安裝和/或運(yùn)行第二終端設(shè)備中的繼生應(yīng)用程序,用戶無需手動(dòng)導(dǎo)入第一終端設(shè)備的歷史數(shù)據(jù)或者登錄驗(yàn)證賬戶,避免了復(fù)雜而又冗余的操作過程,提升了用戶體驗(yàn)度。

圖3為本發(fā)明一個(gè)實(shí)施例的獲取及傳輸應(yīng)用程序數(shù)據(jù)的裝置的結(jié)構(gòu)示意圖。

本實(shí)施以下描述的獲取及傳輸應(yīng)用程序數(shù)據(jù)的裝置所應(yīng)用的場景,是安裝在移動(dòng)終端上的基于Android操作系統(tǒng)的運(yùn)行環(huán)境。

本領(lǐng)域技術(shù)人員應(yīng)當(dāng)知曉,本發(fā)明是基于免Root提權(quán)而提出的,然而,提權(quán)操作只是Android系統(tǒng)所實(shí)施的權(quán)限管理控制,本發(fā)明也當(dāng)然地適用于已經(jīng)Root提權(quán)的Android操作系統(tǒng)中。

本發(fā)明是基于沙箱原理而提出的,故而,本領(lǐng)域技術(shù)人員得以結(jié)合公知的沙箱實(shí)現(xiàn)原理來理解本發(fā)明的實(shí)施。沙箱的作用是為目標(biāo)應(yīng)用程序提供相對(duì)封閉的運(yùn)行環(huán)境,使得目標(biāo)應(yīng)用程序是在借助沙箱中的安全策略的情況下對(duì)系統(tǒng)資源進(jìn)行訪問,從而目標(biāo)應(yīng)用程序的活動(dòng)被限制在規(guī)定的范圍之內(nèi)。

需要說明的是,本發(fā)明通過一種沙箱實(shí)例構(gòu)造目標(biāo)應(yīng)用程序,并且控制目標(biāo)應(yīng)用程序進(jìn)行相應(yīng)的運(yùn)行活動(dòng),以獲取原生應(yīng)用程序的相關(guān)數(shù)據(jù)。具體地,通過沙箱技術(shù)來執(zhí)行目標(biāo)應(yīng)用程序的運(yùn)行活動(dòng),使得運(yùn)行于沙箱中的目標(biāo)應(yīng)用程序可實(shí)現(xiàn)與原生應(yīng)用程序相應(yīng)的服務(wù),繼而通過目標(biāo)應(yīng)用程序執(zhí)行可實(shí)現(xiàn)的與原生應(yīng)用程序相應(yīng)的服務(wù)來獲取原生應(yīng)用程序的相關(guān)數(shù)據(jù)。值得注意的是,獲取到的原生應(yīng)用程序的相關(guān)數(shù)據(jù)包括擁有系統(tǒng)高操作權(quán)限才能獲取到的數(shù)據(jù)。

獲取模塊310通過安裝于宿主應(yīng)用程序內(nèi)的目標(biāo)應(yīng)用程序獲取原生應(yīng)用程序的相關(guān)數(shù)據(jù),宿主應(yīng)用程序和原生應(yīng)用程序安裝于第一終端設(shè)備。

其中,宿主應(yīng)用程序是指實(shí)現(xiàn)目標(biāo)應(yīng)用程序的加殼應(yīng)用程序,可以通過宿主應(yīng)用程序完成目標(biāo)應(yīng)用程序的安裝與運(yùn)行。此外,目標(biāo)應(yīng)用程序需要具有原生應(yīng)用程序的全部功能,能夠提供與原生應(yīng)用程序完全相同的服務(wù)。通過宿主應(yīng)用程序中建立起原安裝包的目標(biāo)應(yīng)用程序與沙箱運(yùn)行環(huán)境之間的通信,使得目標(biāo)應(yīng)用程序的活動(dòng)過程可以進(jìn)一步被沙箱運(yùn)行環(huán)境監(jiān)視,從而對(duì)其適用安全策略,并通過在宿主應(yīng)用程序中建立目標(biāo)應(yīng)用程序的所需資源與原生應(yīng)用程序的所需資源一一對(duì)應(yīng),可在宿主應(yīng)用程序中通過鉤子函數(shù)調(diào)用目標(biāo)應(yīng)用程序的所需的對(duì)應(yīng)資源,確保目標(biāo)應(yīng)用程序能被宿主應(yīng)用程序正常加載并保持安全運(yùn)行。

需要說明的是,由于需要獲取的原生應(yīng)用程序的相關(guān)數(shù)據(jù)包括擁有系統(tǒng)高操作權(quán)限才能獲取到的數(shù)據(jù),因此不進(jìn)行任何處理去直接獲取原生應(yīng)用程序的相關(guān)數(shù)據(jù)是不可行的。本發(fā)明實(shí)施例提供的方案是通過具有與原生應(yīng)用程序全部相同的功能與服務(wù)的目標(biāo)應(yīng)用程序去執(zhí)行數(shù)據(jù)讀取操作,來獲取原生應(yīng)用程序的全部相關(guān)數(shù)據(jù)。

可選地,本發(fā)明實(shí)施例提供的裝置還包括:加載模塊反射調(diào)用與宿主應(yīng)用程序具有相同包名的作為宿主應(yīng)用程序附帶資源的安裝包,以加載該安裝包所實(shí)現(xiàn)的目標(biāo)應(yīng)用程序,其中,目標(biāo)應(yīng)用程序的所需資源與原生應(yīng)用程序的所需資源一一對(duì)應(yīng)。

需要說明的是,通過上述模塊可以實(shí)現(xiàn)在宿主應(yīng)用程序中加載目標(biāo)應(yīng)用程序的功能。然而,應(yīng)用程序在終端設(shè)備的系統(tǒng)環(huán)境中僅可以唯一的形式安裝并運(yùn)行,即對(duì)于一種即時(shí)通信類應(yīng)用程序,在一臺(tái)終端設(shè)備中僅可以安裝并運(yùn)行一個(gè)該即時(shí)通信類應(yīng)用程序,因此若在已安裝了原生應(yīng)用程序的系統(tǒng)中,再安裝具有與原生應(yīng)用程序全部相同的功能與服務(wù)的目標(biāo)應(yīng)用程序時(shí),不經(jīng)過任何處理直接安裝目標(biāo)應(yīng)用程序是不可行的。本發(fā)明實(shí)施例提供的裝置通過對(duì)目標(biāo)應(yīng)用程序進(jìn)行加殼操作,以使得系統(tǒng)不能感知目標(biāo)應(yīng)用程序的存在,故而在同一系統(tǒng)中實(shí)現(xiàn)同時(shí)安裝原生應(yīng)用程序與目標(biāo)應(yīng)用程序的目的。

具體地,目標(biāo)應(yīng)用程序的所需資源包括但不限于ActivityManagerService資源、PackageManagerService資源、Activity組件、Service組件、Broadcast Receiver組件、Content Provider組件等。

本實(shí)施例所采用的反射機(jī)制可以為Java反射機(jī)制,Java反射機(jī)制是在運(yùn)行狀態(tài)中,對(duì)于任意一個(gè)類,都能夠知道這個(gè)類的所有屬性和方法;對(duì)于任意一個(gè)對(duì)象,都能夠調(diào)用它的任意一個(gè)方法;這種動(dòng)態(tài)獲取信息以及動(dòng)態(tài)調(diào)用對(duì)象的方法的功能即為JAVA語言的反射機(jī)制。

通過反射機(jī)制,調(diào)用AssetManager中的addAssetPath方法,將宿主應(yīng)用程序安裝文件中的資源加載到Resource中,通過Resource對(duì)象調(diào)用宿主應(yīng)用程序安裝文件中的資源。在獲取宿主應(yīng)用程序安裝文件資源之前,首先要由宿主程序新建DexClassLoader加載宿主應(yīng)用程序安裝包,隨后新建AssetManager加載宿主應(yīng)用程序安裝文件的資源,最后通過Resource對(duì)象讀取宿主應(yīng)用程序安裝文件的資源。

優(yōu)選地,加載模塊包括:關(guān)系建立單元通過宿主應(yīng)用程序來建立目標(biāo)應(yīng)用程序的所需資源與原生應(yīng)用程序的所需資源的一一對(duì)應(yīng)關(guān)系。

例如,終端設(shè)備的操作系統(tǒng)為Android系統(tǒng),目標(biāo)應(yīng)用程序?yàn)锳pp1’,該目標(biāo)應(yīng)用程序欲實(shí)現(xiàn)原生應(yīng)用程序App1的全部功能與相應(yīng)服務(wù);在終端設(shè)備的宿主應(yīng)用程序中,“App1’.apk”為宿主應(yīng)用程序附帶資源的安裝包,通過Java反射機(jī)制調(diào)用安裝包“App1’.apk”,隨后加載“App1’.apk”所實(shí)現(xiàn)的目標(biāo)應(yīng)用程序App1’,在宿主應(yīng)用程序中加載“App1’.apk”的過程中,創(chuàng)建目標(biāo)應(yīng)用程序App1’的所需全部資源如ActivityManagerService資源、PackageManagerService資源、Activity組件、Service組件、Broadcast Receiver組件和Content Provider組件。其中,目標(biāo)應(yīng)用程序App1’的所需全部資源一一對(duì)應(yīng)且相同于原生應(yīng)用程序在終端設(shè)備Android操作系統(tǒng)中運(yùn)行App1所需的全部資源。

更優(yōu)選地,關(guān)系建立單元包括資源名確定子單元和資源加載子單元:資源名確定子單元解析安裝包以確定目標(biāo)應(yīng)用程序的所需資源的資源名;資源加載子單元根據(jù)目標(biāo)應(yīng)用程序的所需資源的資源名,加載與原生應(yīng)用程序的所需資源一一對(duì)應(yīng)的資源。

需要說明的是,解析應(yīng)用程序的原安裝包的手段,為本領(lǐng)域技術(shù)人員所熟知。安裝包APK文件本質(zhì)上是利用ZIP壓縮技術(shù)結(jié)合簽名技術(shù)實(shí)現(xiàn)的壓縮包,因此,一方面可以通過解壓技術(shù)釋放其內(nèi)部文件,另一方面還可通過Apktool之類的工具軟件獲取其內(nèi)部文件。

具體地,Android應(yīng)用程序在運(yùn)行的過程中,是通過一個(gè)稱為AssetsManager資源管理器來讀取打包在APK文件里面的資源文件的。應(yīng)用程序的每一個(gè)Activity組件都關(guān)聯(lián)一個(gè)ContextImpl對(duì)象,這個(gè)ContextImpl對(duì)象就是用來描述Activity組件的運(yùn)行上下文環(huán)境的。調(diào)用這個(gè)ContextImpl對(duì)象的成員函數(shù)init來執(zhí)行初始化Activity組件運(yùn)行上下文環(huán)境的工作,其中就包括創(chuàng)建用來訪問應(yīng)用程序資源的Resources對(duì)象和AssetsManager對(duì)象的工作。其中,ContextImpl.init函數(shù)就定義在文件frameworks/base/core/java/android/app/ContextImpl.java中。ContextImpl.init函數(shù)中的參數(shù)packageInfo指向的是一個(gè)loadedApk對(duì)象,這個(gè)loadedApk對(duì)象描述的是當(dāng)前正在啟動(dòng)組件所屬的Apk。用來訪問應(yīng)用程序資源的Resources對(duì)象是通過調(diào)用參數(shù)packageInfo所指向的是一個(gè)loadedApk對(duì)象的成員函數(shù)getResources來創(chuàng)建的。由此可知,可以通過創(chuàng)建Resources對(duì)象提取或訪問應(yīng)用程序資源。

通過上述裝置模塊即可實(shí)現(xiàn)在宿主應(yīng)用程序中加載目標(biāo)應(yīng)用程序,以備后續(xù)通過具有與原生應(yīng)用程序全部相同的功能與服務(wù)的目標(biāo)應(yīng)用程序獲取原生應(yīng)用程序的全部相關(guān)數(shù)據(jù)。下文將會(huì)具體描述如何通過本發(fā)明實(shí)施例提出的裝置實(shí)現(xiàn)通過目標(biāo)應(yīng)用程序獲取原生應(yīng)用程序的全部相關(guān)數(shù)據(jù)。

優(yōu)選地,獲取模塊310包括指令調(diào)用單元、資源鉤取單元和資源執(zhí)行單元:指令調(diào)用單元調(diào)用目標(biāo)應(yīng)用程序的活動(dòng)進(jìn)程的數(shù)據(jù)讀取指令;資源鉤取單元通過鉤子函數(shù)鉤取目標(biāo)應(yīng)用程序執(zhí)行數(shù)據(jù)讀取指令需要讀取數(shù)據(jù)的資源對(duì)應(yīng)的原生應(yīng)用程序需要讀取數(shù)據(jù)的資源;資源執(zhí)行單元執(zhí)行鉤取到的資源,以獲取原生應(yīng)用程序的相關(guān)數(shù)據(jù)。

首先,指令調(diào)用單元調(diào)用目標(biāo)應(yīng)用程序的活動(dòng)進(jìn)程的數(shù)據(jù)讀取指令。

具體地,主動(dòng)通過目標(biāo)應(yīng)用程序的活動(dòng)進(jìn)程發(fā)送調(diào)用數(shù)據(jù)讀取指令。

隨后,資源鉤取單元通過鉤子函數(shù)鉤取目標(biāo)應(yīng)用程序執(zhí)行數(shù)據(jù)讀取指令需要讀取數(shù)據(jù)的資源對(duì)應(yīng)的原生應(yīng)用程序需要讀取數(shù)據(jù)的資源。

需要說明的是,術(shù)語“鉤子”涵蓋了用于通過攔截在軟件組件之間傳遞的函數(shù)調(diào)用、消息、或事件來改變或增加操作系統(tǒng)、應(yīng)用程序、或其他軟件組件的行為的技術(shù)。而處理這種被攔截的函數(shù)調(diào)用、事件或消息的代碼就被稱為鉤子hook函數(shù)。鉤子通常用于各種目標(biāo),包括對(duì)功能進(jìn)行調(diào)試和對(duì)功能進(jìn)行擴(kuò)展。其示例可以包括在鍵盤或鼠標(biāo)事件傳遞到應(yīng)用程序之前攔截它們,或者攔截系統(tǒng)調(diào)用、系統(tǒng)函數(shù)行為、函數(shù)執(zhí)行結(jié)果等,以監(jiān)視或修改應(yīng)用程序或其他組件的功能等等。本實(shí)施例即可采用鉤子hook函數(shù)接管所述應(yīng)用程序運(yùn)行時(shí)所需的安裝自校驗(yàn)操作。

作為一個(gè)沙箱實(shí)例,使目標(biāo)應(yīng)用程序運(yùn)行于沙箱運(yùn)行環(huán)境中,監(jiān)控目標(biāo)應(yīng)用程序的活動(dòng)進(jìn)程是沙箱運(yùn)行環(huán)境的核心實(shí)現(xiàn)目標(biāo),負(fù)責(zé)實(shí)現(xiàn)以下的功能:通過監(jiān)控目標(biāo)應(yīng)用程序?qū)Y源的訪問,使目標(biāo)應(yīng)用程序進(jìn)程能夠?qū)崿F(xiàn)對(duì)對(duì)應(yīng)資源的正常調(diào)用。例如,上述有關(guān)進(jìn)行對(duì)目標(biāo)應(yīng)用程序App1’安裝包資源的調(diào)用,可以通過監(jiān)控具體調(diào)用資源的調(diào)用指令,利用hook技術(shù)來實(shí)現(xiàn)??蓪⑼ㄟ^鉤子函數(shù)對(duì)目標(biāo)應(yīng)用程序的活動(dòng)進(jìn)程進(jìn)行監(jiān)控的方式注冊(cè)專用服務(wù)進(jìn)程,以鉤子函數(shù)關(guān)聯(lián)目標(biāo)應(yīng)用程序App1’活動(dòng)進(jìn)程的調(diào)用指令來實(shí)現(xiàn)對(duì)目標(biāo)應(yīng)用程序App1’的活動(dòng)監(jiān)控。

當(dāng)鉤子函數(shù)監(jiān)控到調(diào)用目標(biāo)應(yīng)用程序的活動(dòng)進(jìn)程的數(shù)據(jù)讀取指令時(shí),鉤取目標(biāo)應(yīng)用程序執(zhí)行數(shù)據(jù)讀取指令需要讀取數(shù)據(jù)的資源對(duì)應(yīng)的原生應(yīng)用程序需要讀取數(shù)據(jù)的資源。

例如,利用鉤子函數(shù)對(duì)數(shù)據(jù)讀取指令的入口點(diǎn)進(jìn)行監(jiān)視,截獲此一調(diào)用指令,并獲取目標(biāo)應(yīng)用程序App1’訪問的資源的名稱,如鉤子函數(shù)獲取到目標(biāo)應(yīng)用程序App1’訪問的資源為Service組件,隨后轉(zhuǎn)向執(zhí)行相應(yīng)鉤取資源操作的鉤子函數(shù),由該鉤子函數(shù)鉤取與原生應(yīng)用程序?qū)?yīng)的Service組件。

最后,資源執(zhí)行單元執(zhí)行鉤取到的資源,以獲取原生應(yīng)用程序的相關(guān)數(shù)據(jù)。

需要說明的是,通過執(zhí)行目標(biāo)應(yīng)用程序的相關(guān)資源,能夠?qū)崿F(xiàn)與執(zhí)行原生應(yīng)用程序的相關(guān)資源完全相同的執(zhí)行結(jié)果,因此,通過執(zhí)行鉤取到的資源,使得目標(biāo)應(yīng)用程序可以替代原生應(yīng)用程序讀取原生應(yīng)用程序的相關(guān)數(shù)據(jù)。

發(fā)送模塊320將原生應(yīng)用程序的相關(guān)數(shù)據(jù)和第一終端設(shè)備的安裝環(huán)境信息通過預(yù)定的發(fā)送方式發(fā)送至第二終端設(shè)備。

具體地,可以通過本文上述描述的裝置獲取原生應(yīng)用程序的相關(guān)數(shù)據(jù),隨后,獲取第一終端設(shè)備的安裝環(huán)境信息;接著,將原生應(yīng)用程序的相關(guān)數(shù)據(jù)和第一終端設(shè)備的安裝環(huán)境信息通過預(yù)定的發(fā)送方式發(fā)送至第二終端設(shè)備。

優(yōu)選地,原生應(yīng)用程序的相關(guān)數(shù)據(jù)包括但不限于用戶歷史行為數(shù)據(jù)、應(yīng)用配置信息、加密數(shù)據(jù)中的至少一項(xiàng),第一終端設(shè)備的安裝環(huán)境信息包括但不限于CPU型號(hào)、內(nèi)核版本號(hào)、系統(tǒng)版本號(hào)、系統(tǒng)配置信息中的至少一項(xiàng)。

需要說明的是,存在多種裝置可以將原生應(yīng)用程序的相關(guān)數(shù)據(jù)和第一終端設(shè)備的安裝環(huán)境信息發(fā)送至第二終端設(shè)備,如通過Wi-Fi熱點(diǎn)、藍(lán)牙、云端服務(wù)器等方式發(fā)送數(shù)據(jù),本發(fā)明實(shí)施例提供一種優(yōu)選裝置進(jìn)行數(shù)據(jù)的傳輸,具體如下描述:

優(yōu)選地,發(fā)送模塊320具體用于將原生應(yīng)用程序的相關(guān)數(shù)據(jù)和第一終端設(shè)備的安裝環(huán)境信息通過預(yù)先建立的單向數(shù)據(jù)鏈路發(fā)送至第二終端設(shè)備。

具體地,通過在第一終端設(shè)備與第二終端設(shè)備間建立單向數(shù)據(jù)鏈路,可以避免通過將數(shù)據(jù)上傳至服務(wù)器導(dǎo)致在數(shù)據(jù)傳輸過程中造成的數(shù)據(jù)泄漏的問題。在建立數(shù)據(jù)鏈路之后,將已封裝的數(shù)據(jù)經(jīng)過數(shù)據(jù)鏈路直接從第一終端設(shè)備發(fā)送至第二終端設(shè)備。

需要說明的是,可以根據(jù)不同類型數(shù)據(jù)的特征進(jìn)行數(shù)據(jù)封裝,以生成不同類型的數(shù)據(jù)包。其中,每個(gè)數(shù)據(jù)包攜帶對(duì)應(yīng)類型數(shù)據(jù)的特征,從而第二終端設(shè)備接收到數(shù)據(jù)包之后,能夠根據(jù)每個(gè)數(shù)據(jù)包攜帶的對(duì)應(yīng)類型數(shù)據(jù)的特征獲知數(shù)據(jù)的類型。

相應(yīng)地,第一終端設(shè)備將原生應(yīng)用程序的相關(guān)數(shù)據(jù)和第一終端設(shè)備的安裝環(huán)境信息發(fā)送至第二終端設(shè)備后,在第二終端設(shè)備會(huì)基于接收到的原生應(yīng)用程序的相關(guān)數(shù)據(jù)和第一終端設(shè)備的安裝環(huán)境信息在本地安裝和運(yùn)行繼生應(yīng)用程序。

圖4為本發(fā)明一個(gè)實(shí)施例的運(yùn)行應(yīng)用程序的裝置的結(jié)構(gòu)示意圖。

本發(fā)明以下即將描述的運(yùn)行應(yīng)用程序的裝置所應(yīng)用的場景,是安裝在移動(dòng)終端上的基于Android操作系統(tǒng)的運(yùn)行環(huán)境。

在第二終端設(shè)備中的裝置模塊也是基于沙箱原理而提出的,故而,本領(lǐng)域技術(shù)人員得以結(jié)合公知的沙箱實(shí)現(xiàn)原理來理解本發(fā)明的實(shí)施。沙箱的作用是為目標(biāo)應(yīng)用程序提供相對(duì)封閉的運(yùn)行環(huán)境,使得目標(biāo)應(yīng)用程序是在借助沙箱中的安全策略的情況下對(duì)系統(tǒng)資源進(jìn)行訪問,從而目標(biāo)應(yīng)用程序的活動(dòng)被限制在規(guī)定的范圍之內(nèi)。

接收模塊410接收第一終端設(shè)備發(fā)送的原生應(yīng)用程序的相關(guān)數(shù)據(jù)和第一終端設(shè)備的安裝環(huán)境信息。

具體地,第一終端設(shè)備將原生應(yīng)用程序的相關(guān)數(shù)據(jù)和第一終端設(shè)備的安裝環(huán)境信息通過預(yù)定的發(fā)送方式發(fā)送至第二終端設(shè)備,第二終端設(shè)備接收第一終端設(shè)備發(fā)送的原生應(yīng)用程序的相關(guān)數(shù)據(jù)和第一終端設(shè)備的安裝環(huán)境信息。

安裝及運(yùn)行模塊420基于接收到的原生應(yīng)用程序的相關(guān)數(shù)據(jù)和第一終端設(shè)備的安裝環(huán)境信息安裝和/或運(yùn)行第二終端設(shè)備中的繼生應(yīng)用程序。

其中,繼生應(yīng)用程序具有原生應(yīng)用程序的全部功能,能夠提供與原生應(yīng)用程序完全相同的服務(wù)。在具體應(yīng)用場景中,用戶在第一終端設(shè)備中安裝了原生應(yīng)用程序,當(dāng)用戶更換新的第二終端設(shè)備時(shí),在更換終端設(shè)備的過程中,需要將第一終端設(shè)備中原生應(yīng)用程序的相關(guān)數(shù)據(jù)搬移到第二終端設(shè)備對(duì)應(yīng)的應(yīng)用程序中,該對(duì)應(yīng)的應(yīng)用程序就是繼生應(yīng)用程序,繼而使得第二終端設(shè)備中的繼生應(yīng)用程序在具有原生應(yīng)用程序的全部功能,能夠提供與原生應(yīng)用程序完全相同的服務(wù)的情況下,還保留原生應(yīng)用的相關(guān)數(shù)據(jù)如用戶聊天記錄、用戶個(gè)人偏好設(shè)置信息等。

優(yōu)選地,原生應(yīng)用程序的相關(guān)數(shù)據(jù)包括但不限于用戶歷史行為數(shù)據(jù)、應(yīng)用配置信息、加密數(shù)據(jù)中的至少一項(xiàng),第一終端設(shè)備的安裝環(huán)境信息包括但不限于CPU型號(hào)、內(nèi)核版本號(hào)、系統(tǒng)版本號(hào)、系統(tǒng)配置信息中的至少一項(xiàng)。

優(yōu)選地,安裝及運(yùn)行模塊420包括活動(dòng)監(jiān)控單元和數(shù)據(jù)調(diào)用單元:活動(dòng)監(jiān)控單元通過鉤子函數(shù)監(jiān)控繼生應(yīng)用程序的安裝和/或運(yùn)行活動(dòng);數(shù)據(jù)調(diào)用單元當(dāng)通過鉤子函數(shù)監(jiān)測到繼生應(yīng)用程序讀取第二終端設(shè)備的安裝環(huán)境信息和/或繼生應(yīng)用的相關(guān)數(shù)據(jù)時(shí),調(diào)用接收到的與第二終端設(shè)備的安裝環(huán)境信息和/或繼生應(yīng)用的相關(guān)數(shù)據(jù)一一對(duì)應(yīng)的第一終端設(shè)備的安裝環(huán)境信息和/或原生應(yīng)用程序的相關(guān)數(shù)據(jù)。

上述裝置模塊實(shí)現(xiàn)的主要功能是為了給繼生應(yīng)用程序營造一個(gè)安裝、運(yùn)行環(huán)境,在該環(huán)境下繼生應(yīng)用程序察覺不到已處于第二終端設(shè)備,而是仍然認(rèn)為還在第一終端設(shè)備中。另外,通過上述操作步驟還可以使得繼生應(yīng)用程序能夠獲取原生應(yīng)用程序的相關(guān)數(shù)據(jù),如用戶聊天記錄、用戶操作記錄、用戶個(gè)人偏好設(shè)置信息、登錄校驗(yàn)信息等,從而將原生應(yīng)用程序從第一終端設(shè)備原封不動(dòng)地“復(fù)制”到第二終端設(shè)備中,用戶無需進(jìn)行繁瑣的導(dǎo)入聊天記錄操作或者重新為應(yīng)用程序設(shè)置個(gè)人偏好設(shè)置信息等,就可以獲得與原生應(yīng)用程序一模一樣的繼生應(yīng)用程序,用戶也無需通過登錄校驗(yàn)操作便可直接登錄應(yīng)用程序。

具體地,當(dāng)通過鉤子函數(shù)監(jiān)測到繼生應(yīng)用程序讀取第二終端設(shè)備的安裝環(huán)境信息和/或繼生應(yīng)用的相關(guān)數(shù)據(jù)時(shí),調(diào)用接收到的與第二終端設(shè)備的安裝環(huán)境信息和/或繼生應(yīng)用的相關(guān)數(shù)據(jù)一一對(duì)應(yīng)的第一終端設(shè)備的安裝環(huán)境信息和/或原生應(yīng)用程序的相關(guān)數(shù)據(jù)。設(shè)置鉤子函數(shù)監(jiān)控多個(gè)與繼生應(yīng)用程序安裝和/或運(yùn)行活動(dòng)相關(guān)的監(jiān)測點(diǎn),當(dāng)監(jiān)測到繼生應(yīng)用程序讀取第二終端設(shè)備的安裝環(huán)境信息時(shí),通過鉤子函數(shù)將獲取第二終端設(shè)備的安裝環(huán)境信息的指令鉤取,并替換與第二終端設(shè)備的安裝環(huán)境信息和/或繼生應(yīng)用的相關(guān)數(shù)據(jù)一一對(duì)應(yīng)的第一終端設(shè)備的安裝環(huán)境信息和/或原生應(yīng)用程序的相關(guān)數(shù)據(jù),以使得繼生應(yīng)用程序認(rèn)為還處于第一終端設(shè)備中?;蛘?,當(dāng)監(jiān)測到繼生應(yīng)用程序讀取繼生應(yīng)用的相關(guān)數(shù)據(jù)時(shí),通過鉤子函數(shù)將獲取第二終端設(shè)備的安裝環(huán)境信息的指令鉤取,并替換與第二終端設(shè)備的安裝環(huán)境信息和/或繼生應(yīng)用的相關(guān)數(shù)據(jù)一一對(duì)應(yīng)的第一終端設(shè)備的安裝環(huán)境信息和/或原生應(yīng)用程序的相關(guān)數(shù)據(jù),以使得繼生應(yīng)用程序直接讀取從第一終端設(shè)備接收到的數(shù)據(jù)。

需要說明的是,如果在第二終端設(shè)備中,將接收到的第一終端設(shè)備發(fā)送的原生應(yīng)用程序的相關(guān)數(shù)據(jù)存儲(chǔ)于繼生應(yīng)用程序讀取與其相應(yīng)的相關(guān)數(shù)據(jù)的預(yù)定目錄下,則本發(fā)明實(shí)施例還提供一個(gè)優(yōu)選方案,使得繼生應(yīng)用程序可以直接讀取從第一終端設(shè)備接收到的數(shù)據(jù)。

優(yōu)選地,安裝及運(yùn)行模塊420包括數(shù)據(jù)檢測單元和數(shù)據(jù)讀取單元:數(shù)據(jù)檢測單元當(dāng)監(jiān)測到繼生應(yīng)用程序讀取與其相應(yīng)的相關(guān)數(shù)據(jù)時(shí),檢測預(yù)定目錄下是否存在原生應(yīng)用程序的相關(guān)數(shù)據(jù);數(shù)據(jù)讀取單元當(dāng)檢測到預(yù)定目錄下存在原生應(yīng)用程序的相關(guān)數(shù)據(jù)時(shí),讀取原生應(yīng)用程序的相關(guān)數(shù)據(jù)。

具體地,接收第一終端設(shè)備發(fā)送的原生應(yīng)用程序的相關(guān)數(shù)據(jù),并將原生應(yīng)用程序的相關(guān)數(shù)據(jù)存儲(chǔ)于第二終端設(shè)備中的相應(yīng)的預(yù)定目錄下;接著,當(dāng)監(jiān)測到繼生應(yīng)用程序讀取與其相應(yīng)的相關(guān)數(shù)據(jù)時(shí),檢測預(yù)定目錄下是否存在原生應(yīng)用程序的相關(guān)數(shù)據(jù);最后,若預(yù)定目錄下存在原生應(yīng)用程序的相關(guān)數(shù)據(jù),則讀取原生應(yīng)用程序的相關(guān)數(shù)據(jù)。

本發(fā)明的技術(shù)方案解決了如何將第一終端設(shè)備中的應(yīng)用程序的相關(guān)數(shù)據(jù)搬移到第二終端設(shè)備中。通過安裝于宿主應(yīng)用程序內(nèi)的目標(biāo)應(yīng)用程序獲取原生應(yīng)用程序的相關(guān)數(shù)據(jù),宿主應(yīng)用程序和原生應(yīng)用程序安裝于第一終端設(shè)備,在該步驟中通過具有與原生應(yīng)用程序全部相同的功能與服務(wù)的目標(biāo)應(yīng)用程序去執(zhí)行數(shù)據(jù)讀取操作,以獲取原生應(yīng)用程序的全部相關(guān)數(shù)據(jù),在上述數(shù)據(jù)中包括高操作權(quán)限才能獲取到的數(shù)據(jù)。

進(jìn)一步地,本發(fā)明的技術(shù)方案還解決了如何基于第一終端設(shè)備接收到的數(shù)據(jù)對(duì)第二終端設(shè)備的應(yīng)用程序的安裝和運(yùn)行過程進(jìn)行控制的問題?;诮邮盏降脑鷳?yīng)用程序的相關(guān)數(shù)據(jù)和第一終端設(shè)備的安裝環(huán)境信息安裝和/或運(yùn)行第二終端設(shè)備中的繼生應(yīng)用程序,基于接收到的第一終端設(shè)備的安裝環(huán)境信息為繼生應(yīng)用程序營造一個(gè)類似于第一終端設(shè)備的安裝環(huán)境,以保障繼生應(yīng)用程序后續(xù)的安裝以及運(yùn)行的順利進(jìn)行,另外,通過接收到的原生應(yīng)用程序的相關(guān)數(shù)據(jù)安裝和/或運(yùn)行第二終端設(shè)備中的繼生應(yīng)用程序,用戶無需手動(dòng)導(dǎo)入第一終端設(shè)備的歷史數(shù)據(jù)或者登錄驗(yàn)證賬戶,避免了復(fù)雜而又冗余的操作過程,提升了用戶體驗(yàn)度。

本技術(shù)領(lǐng)域技術(shù)人員可以理解,本發(fā)明包括涉及用于執(zhí)行本申請(qǐng)中所述操作中的一項(xiàng)或多項(xiàng)的設(shè)備。這些設(shè)備可以為所需的目的而專門設(shè)計(jì)和制造,或者也可以包括通用計(jì)算機(jī)中的已知設(shè)備。這些設(shè)備具有存儲(chǔ)在其內(nèi)的計(jì)算機(jī)程序,這些計(jì)算機(jī)程序選擇性地激活或重構(gòu)。這樣的計(jì)算機(jī)程序可以被存儲(chǔ)在設(shè)備(例如,計(jì)算機(jī))可讀介質(zhì)中或者存儲(chǔ)在適于存儲(chǔ)電子指令并分別耦聯(lián)到總線的任何類型的介質(zhì)中,所述計(jì)算機(jī)可讀介質(zhì)包括但不限于任何類型的盤(包括軟盤、硬盤、光盤、CD-ROM、和磁光盤)、ROM(Read-Only Memory,只讀存儲(chǔ)器)、RAM(Random Access Memory,隨即存儲(chǔ)器)、EPROM(Erasable Programmable Read-Only Memory,可擦寫可編程只讀存儲(chǔ)器)、EEPROM(Electrically Erasable Programmable Read-Only Memory,電可擦可編程只讀存儲(chǔ)器)、閃存、磁性卡片或光線卡片。也就是,可讀介質(zhì)包括由設(shè)備(例如,計(jì)算機(jī))以能夠讀的形式存儲(chǔ)或傳輸信息的任何介質(zhì)。

本技術(shù)領(lǐng)域技術(shù)人員可以理解,可以用計(jì)算機(jī)程序指令來實(shí)現(xiàn)這些結(jié)構(gòu)圖和/或框圖和/或流圖中的每個(gè)框以及這些結(jié)構(gòu)圖和/或框圖和/或流圖中的框的組合。本技術(shù)領(lǐng)域技術(shù)人員可以理解,可以將這些計(jì)算機(jī)程序指令提供給通用計(jì)算機(jī)、專業(yè)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理方法的處理器來實(shí)現(xiàn),從而通過計(jì)算機(jī)或其他可編程數(shù)據(jù)處理方法的處理器來執(zhí)行本發(fā)明公開的結(jié)構(gòu)圖和/或框圖和/或流圖的框或多個(gè)框中指定的方案。

本技術(shù)領(lǐng)域技術(shù)人員可以理解,本發(fā)明中已經(jīng)討論過的各種操作、方法、流程中的步驟、措施、方案可以被交替、更改、組合或刪除。進(jìn)一步地,具有本發(fā)明中已經(jīng)討論過的各種操作、方法、流程中的其他步驟、措施、方案也可以被交替、更改、重排、分解、組合或刪除。進(jìn)一步地,現(xiàn)有技術(shù)中的具有與本發(fā)明中公開的各種操作、方法、流程中的步驟、措施、方案也可以被交替、更改、重排、分解、組合或刪除。

以上所述僅是本發(fā)明的部分實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1