日韩成人黄色,透逼一级毛片,狠狠躁天天躁中文字幕,久久久久久亚洲精品不卡,在线看国产美女毛片2019,黄片www.www,一级黄色毛a视频直播

應(yīng)用程序運(yùn)行控制的方法及裝置的制造方法

文檔序號(hào):10612662閱讀:391來源:國知局
應(yīng)用程序運(yùn)行控制的方法及裝置的制造方法
【專利摘要】本發(fā)明提供了一種應(yīng)用程序運(yùn)行控制的方法,包括:反射調(diào)用與宿主應(yīng)用程序具有相同包名的作為宿主應(yīng)用程序附帶資源的安裝包,以加載該安裝包所實(shí)現(xiàn)的目標(biāo)應(yīng)用程序,其中,目標(biāo)應(yīng)用程序的所需資源與原生應(yīng)用程序的所需資源一一對應(yīng);通過鉤子函數(shù)對目標(biāo)應(yīng)用程序的活動(dòng)進(jìn)程進(jìn)行監(jiān)控;當(dāng)通過鉤子函數(shù)監(jiān)測到對目標(biāo)應(yīng)用程序的活動(dòng)進(jìn)程的調(diào)用指令時(shí),調(diào)用與目標(biāo)應(yīng)用程序的所需資源一一對應(yīng)的原生應(yīng)用程序的所需資源。本發(fā)明還提供了一種應(yīng)用程序運(yùn)行控制的裝置。通過執(zhí)行目標(biāo)應(yīng)用程序的相關(guān)資源,能夠?qū)崿F(xiàn)與執(zhí)行原生應(yīng)用程序的相關(guān)資源完全相同的執(zhí)行結(jié)果;且目標(biāo)應(yīng)用程序運(yùn)行在通過宿主應(yīng)用程序構(gòu)建的沙箱中,其安裝及運(yùn)行活動(dòng)均不被系統(tǒng)所感知。
【專利說明】
應(yīng)用程序運(yùn)行控制的方法及裝置
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,具體而言,本發(fā)明涉及一種應(yīng)用程序運(yùn)行控制的方法,及一種應(yīng)用程序運(yùn)行控制的裝置。
【背景技術(shù)】
[0002]隨著時(shí)代的發(fā)展,各種終端設(shè)備已成為人們生活中必不可少的工具,各種功能強(qiáng)大的終端操作系統(tǒng)及終端應(yīng)用程序不斷涌現(xiàn),為用戶帶來了更加便捷的體驗(yàn)?,F(xiàn)有技術(shù)中,應(yīng)用程序在終端設(shè)備的系統(tǒng)環(huán)境中僅可以唯一的形式安裝并運(yùn)行,即對于一種即時(shí)通信類應(yīng)用程序,在一臺(tái)終端設(shè)備中僅可以安裝并運(yùn)行一個(gè)該即時(shí)通信類應(yīng)用程序,用戶僅可以通過唯一的賬號(hào)登錄并對其執(zhí)行相關(guān)操作。但是,隨著即時(shí)通信類應(yīng)用程序的普及,越來越多的用戶希望在一臺(tái)終端設(shè)備中通過多個(gè)賬號(hào)登錄一種即時(shí)通信類應(yīng)用程序以實(shí)現(xiàn)對不同好友信息的區(qū)分管理及交流。現(xiàn)有技術(shù)中,具有通過多個(gè)域賬號(hào)在不同操作系統(tǒng)之間的切換來實(shí)現(xiàn)在一臺(tái)終端設(shè)備中通過多個(gè)賬號(hào)登錄一種即時(shí)通信類應(yīng)用程序的解決方案。但是,該方案需要最高系統(tǒng)級(jí)別的權(quán)限且基于多操作系統(tǒng)才可以實(shí)現(xiàn),并不具有普適性。
[0003]現(xiàn)有技術(shù)中,沙箱是一種按照安全策略限制程序行為的執(zhí)行環(huán)境,目前已經(jīng)廣泛實(shí)用于各種操作系統(tǒng)中。以Android為例,一些應(yīng)用程序,出于實(shí)現(xiàn)應(yīng)用程序固有功能需要之外的目的,特別是商業(yè)目的,隨意申請系統(tǒng)權(quán)限,獲取用戶隱私數(shù)據(jù)、執(zhí)行網(wǎng)絡(luò)訪問、保持設(shè)備活動(dòng)、發(fā)送短信行為等。輕則可能導(dǎo)致用戶隱私數(shù)據(jù)泄露,或者占用系統(tǒng)資源,重則可能通過惡意扣費(fèi)、植入廣告、消耗資費(fèi)、欺詐誘騙等,使用戶遭受損失。因此,通過沙箱技術(shù)提供的執(zhí)行環(huán)境,由沙箱對系統(tǒng)的資源、權(quán)限進(jìn)行管理,讓應(yīng)用程序于該沙箱中運(yùn)行,應(yīng)用程序的訪問先經(jīng)沙箱按安全策略進(jìn)行審查,由此,形成一種相對于系統(tǒng)本身的隔離運(yùn)行效果,可以有效地保護(hù)系統(tǒng)的安全。對于沙箱中所用到的安全策略,適應(yīng)各種不同的操作系統(tǒng)有不同的細(xì)節(jié)考慮,這些有關(guān)技術(shù)實(shí)現(xiàn)的基本知識(shí),均已為本領(lǐng)域技術(shù)人員所掌握,恕不贅述。
[0004]因此,需要一種通過沙箱技術(shù)來執(zhí)行目標(biāo)應(yīng)用程序運(yùn)行的解決方案,使得運(yùn)行于沙箱中目標(biāo)應(yīng)用程序可實(shí)現(xiàn)原生應(yīng)用程序的全部功能及相應(yīng)服務(wù)。

【發(fā)明內(nèi)容】

[0005]為克服上述技術(shù)問題或者至少部分地解決上述技術(shù)問題,特提出以下技術(shù)方案:
[0006]本發(fā)明的實(shí)施例提出了一種應(yīng)用程序運(yùn)行控制的方法,包括:
[0007]反射調(diào)用與宿主應(yīng)用程序具有相同包名的作為宿主應(yīng)用程序附帶資源的安裝包,以加載該安裝包所實(shí)現(xiàn)的目標(biāo)應(yīng)用程序,其中,所述目標(biāo)應(yīng)用程序的所需資源與原生應(yīng)用程序的所屬資源對應(yīng);
[0008]通過鉤子函數(shù)對所述目標(biāo)應(yīng)用程序的活動(dòng)進(jìn)程進(jìn)行監(jiān)控;
[0009]當(dāng)通過鉤子函數(shù)監(jiān)測到對目標(biāo)應(yīng)用程序的活動(dòng)進(jìn)程的調(diào)用指令時(shí),調(diào)用與所述目標(biāo)應(yīng)用程序的所屬資源一一對應(yīng)的所述原生應(yīng)用程序的所屬資源。
[0010]優(yōu)選地,加載該安裝包所實(shí)現(xiàn)的目標(biāo)應(yīng)用程序的步驟,包括:
[0011]通過所述宿主應(yīng)用程序,來建立所述目標(biāo)應(yīng)用程序的所需資源與原生應(yīng)用程序的所需資源的一一對應(yīng)關(guān)系。
[0012]優(yōu)選地,建立所述目標(biāo)應(yīng)用程序的所需資源與原生應(yīng)用程序的所需資源的一一對應(yīng)關(guān)系,具體包括:
[0013]解析所述安裝包以確定目標(biāo)應(yīng)用程序的所屬資源的資源名;
[0014]根據(jù)目標(biāo)應(yīng)用程序的所屬資源的資源名,加載與原生應(yīng)用程序的所需資源一一對應(yīng)的資源。
[0015]優(yōu)選地,所述目標(biāo)應(yīng)用程序包括預(yù)留擴(kuò)展項(xiàng),以用于與所述原生應(yīng)用程序的擴(kuò)展資源相匹配。
[0016]優(yōu)選地,該方法還包括:檢測到所述原生應(yīng)用程序的更新服務(wù),基于所述目標(biāo)應(yīng)用程序的預(yù)留擴(kuò)展項(xiàng)更新所述目標(biāo)應(yīng)用程序的所需資源。
[0017]其中,所述宿主應(yīng)用程序的資源文件和/或動(dòng)態(tài)庫文件與所述安裝包中的相應(yīng)文件相同。
[0018]優(yōu)選地,該方法還包括:
[0019]通過執(zhí)行所述目標(biāo)應(yīng)用程序的所需資源,以實(shí)現(xiàn)與執(zhí)行所述原生應(yīng)用程序的所屬資源相同的執(zhí)行結(jié)果。
[0020]其中,所述目標(biāo)應(yīng)用程序的所屬資源,包括以下至少任一項(xiàng):[0021 ] ActivityManagerService 資源;
[0022]PackageManagerService 資源;
[0023]Activity 組件;
[0024]Service 組件;
[0025]Broadcast Receiver組件;
[0026]Content Provider組件。
[0027]本發(fā)明的另一實(shí)施例提出了一種應(yīng)用程序運(yùn)行控制的裝置,包括:
[0028]加載模塊,用于反射調(diào)用與宿主應(yīng)用程序具有相同包名的作為宿主應(yīng)用程序附帶資源的安裝包,以加載該安裝包所實(shí)現(xiàn)的目標(biāo)應(yīng)用程序,其中,所述目標(biāo)應(yīng)用程序的所需資源與原生應(yīng)用程序的所需資源一一對應(yīng);
[0029]監(jiān)控模塊,用于通過鉤子函數(shù)對所述目標(biāo)應(yīng)用程序的活動(dòng)進(jìn)程進(jìn)行監(jiān)控;
[0030]調(diào)用模塊,用于當(dāng)通過鉤子函數(shù)監(jiān)測到對目標(biāo)應(yīng)用程序的活動(dòng)進(jìn)程的調(diào)用指令時(shí),調(diào)用與所述目標(biāo)應(yīng)用程序的所需資源一一對應(yīng)的所述原生應(yīng)用程序的所需資源。
[0031]優(yōu)選地,所述加載模塊包括:
[0032]建立單元,用于通過所述宿主應(yīng)用程序,來建立所述目標(biāo)應(yīng)用程序的所需資源與原生應(yīng)用程序的所需資源的一一對應(yīng)關(guān)系。[0〇33]優(yōu)選地,所述建立單元具體包括:
[0034]解析子單元,用于解析所述安裝包以確定目標(biāo)應(yīng)用程序的所需資源的資源名;
[0035]加載子單元,用于根據(jù)目標(biāo)應(yīng)用程序的所需資源的資源名,加載與原生應(yīng)用程序的所需資源一一對應(yīng)的資源。
[0036]優(yōu)選地,所述目標(biāo)應(yīng)用程序包括預(yù)留擴(kuò)展項(xiàng),以用于與所述原生應(yīng)用程序的擴(kuò)展資源相匹配。
[0037] 優(yōu)選地,該裝置還包括:
[0038]更新模塊,用于檢測到所述原生應(yīng)用程序的更新服務(wù),基于所述目標(biāo)應(yīng)用程序的預(yù)留擴(kuò)展項(xiàng)更新所述目標(biāo)應(yīng)用程序的所需資源。
[0039]其中,所述宿主應(yīng)用程序的資源文件和/或動(dòng)態(tài)庫文件與所述安裝包中的相應(yīng)文件相同。
[0040] 優(yōu)選地,還包括:[0041 ]實(shí)現(xiàn)模塊,用于通過執(zhí)行所述目標(biāo)應(yīng)用程序的所需資源,以實(shí)現(xiàn)與執(zhí)行所述原生應(yīng)用程序的所需資源相同的執(zhí)行結(jié)果。
[0042]其中,所述目標(biāo)應(yīng)用程序的所需資源,包括以下至少任一項(xiàng):
[0043]ActivityManagerService 資源;
[0044]PackageManagerService 資源;
[0045]Activity 組件;
[0046]Service 組件;
[0047]Broadcast Receiver組件;
[0048]Content Provider組件。
[0049]本發(fā)明的實(shí)施例中,借助反射調(diào)用機(jī)制去加載與宿主應(yīng)用程序具有相同包名的目標(biāo)應(yīng)用程序,由于與宿主應(yīng)用程序具有相同的包名,在Android系統(tǒng)中,既能使活動(dòng)組件和服務(wù)組件建立與ActivityManagerService的正常通信,又能使活動(dòng)組件、服務(wù)組件以及廣播組件等,順利被PackageManagerService識(shí)別,降低現(xiàn)有技術(shù)中有關(guān)加殼應(yīng)用程序運(yùn)行異常的錯(cuò)誤率;由于宿主應(yīng)用程序與目標(biāo)應(yīng)用程序使用了相同的包名,不必為被反射調(diào)用的目標(biāo)應(yīng)用程序的各個(gè)組件(Activity,Service,Broadcast Receiver和Content Provider) 單獨(dú)構(gòu)造主函數(shù)入口(ActivityThread.main),也不必考慮因包名而帶來的 PackageManagerService校驗(yàn)的程序?qū)崿F(xiàn)復(fù)雜度問題,從而大大提高程序運(yùn)行效率;通過宿主應(yīng)用程序中建立起原安裝包的目標(biāo)應(yīng)用程序與沙箱運(yùn)行環(huán)境之間的通信,使得目標(biāo)應(yīng)用程序的活動(dòng)過程可以進(jìn)一步被沙箱運(yùn)行環(huán)境監(jiān)視,從而對其適用安全策略,并通過在宿主應(yīng)用程序中建立目標(biāo)應(yīng)用程序的所需資源與原生應(yīng)用程序的所需資源一一對應(yīng),可在宿主應(yīng)用程序中通過鉤子函數(shù)調(diào)用目標(biāo)應(yīng)用程序的所需的對應(yīng)資源,確保目標(biāo)應(yīng)用程序能被宿主應(yīng)用程序正常加載并保持安全運(yùn)行,且實(shí)現(xiàn)了目標(biāo)應(yīng)用程序完全獨(dú)立于原生應(yīng)用程序。
[0050]本發(fā)明中,通過執(zhí)行目標(biāo)應(yīng)用程序的相關(guān)資源,能夠?qū)崿F(xiàn)與執(zhí)行原生應(yīng)用程序的相關(guān)資源完全相同的執(zhí)行結(jié)果;且目標(biāo)應(yīng)用程序運(yùn)行在通過宿主應(yīng)用程序構(gòu)建的沙箱中, 其安裝及運(yùn)行活動(dòng)均不被系統(tǒng)所感知,從而可以解決現(xiàn)有技術(shù)中,對于一種即時(shí)通信類應(yīng)用程序,在一臺(tái)終端設(shè)備中僅可以安裝并運(yùn)行一個(gè)該即時(shí)通信類應(yīng)用程序,同時(shí),用戶僅可以通過唯一的賬號(hào)登錄并對其執(zhí)行相關(guān)操作的瓶頸。實(shí)現(xiàn)了用戶希望在一臺(tái)終端設(shè)備中通過多個(gè)賬號(hào)登錄一種即時(shí)通信類應(yīng)用程序以實(shí)現(xiàn)對不同好友信息的區(qū)分管理及交流的實(shí)際應(yīng)用目的。
[0051]本發(fā)明附加的方面和優(yōu)點(diǎn)將在下面的描述中部分給出,這些將從下面的描述中變得明顯,或通過本發(fā)明的實(shí)踐了解到?!靖綀D說明】
[0052]本發(fā)明上述的和/或附加的方面和優(yōu)點(diǎn)從下面結(jié)合附圖對實(shí)施例的描述中將變得明顯和容易理解,其中:
[0053]圖1為本發(fā)明中一個(gè)實(shí)施例的應(yīng)用程序運(yùn)行控制的方法的流程圖;
[0054]圖2為本發(fā)明中另一實(shí)施例的應(yīng)用程序運(yùn)行控制的裝置的結(jié)構(gòu)示意圖?!揪唧w實(shí)施方式】
[0055]下面詳細(xì)描述本發(fā)明的實(shí)施例,所述實(shí)施例的示例在附圖中示出,其中自始至終相同或類似的標(biāo)號(hào)表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實(shí)施例是示例性的,僅用于解釋本發(fā)明,而不能解釋為對本發(fā)明的限制。
[0056]本技術(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)的全部或任一單元和全部組合。[〇〇57]本技術(shù)領(lǐng)域技術(shù)人員可以理解,除非另外定義,這里使用的所有術(shù)語(包括技術(shù)術(shù)語和科學(xué)術(shù)語),具有與本發(fā)明所屬領(lǐng)域中的普通技術(shù)人員的一般理解相同的意義。還應(yīng)該理解的是,諸如通用字典中定義的那些術(shù)語,應(yīng)該被理解為具有與現(xiàn)有技術(shù)的上下文中的意義一致的意義,并且除非像這里一樣被特定定義,否則不會(huì)用理想化或過于正式的含義來解釋。
[0058]本發(fā)明以下即將描述的一種應(yīng)用程序運(yùn)行控制方法和裝置所實(shí)施的應(yīng)用場景,是安裝在移動(dòng)終端上的基于Android操作系統(tǒng)的運(yùn)行環(huán)境。[〇〇59]本領(lǐng)域技術(shù)人員應(yīng)當(dāng)知曉,本發(fā)明是基于免Root提權(quán)而提出的,然而,提權(quán)操作只是Andro i d系統(tǒng)所實(shí)施的權(quán)限管理控制,本發(fā)明也當(dāng)然地適用于已經(jīng)Root提權(quán)的Andro i d操作系統(tǒng)中。
[0060]本發(fā)明是基于沙箱原理而提出的,故而,本領(lǐng)域技術(shù)人員得以結(jié)合公知的沙箱實(shí)現(xiàn)原理來理解本發(fā)明的實(shí)施。沙箱的作用是為目標(biāo)應(yīng)用程序的提供相對封閉的運(yùn)行環(huán)境, 使應(yīng)用程序?qū)ο到y(tǒng)的資源訪問,借助沙箱安全策略的應(yīng)用,而被限制在規(guī)定的范圍之內(nèi)。因而,本發(fā)明的實(shí)質(zhì)在于提供一種沙箱實(shí)例,從兩個(gè)方面來實(shí)現(xiàn),第一方面是提供構(gòu)造目標(biāo)應(yīng)用程序的解決方案,第二方面是提供與前者相應(yīng)的運(yùn)行控制方案。這兩個(gè)方面可以被集成到一個(gè)沙箱實(shí)現(xiàn)軟件中,利用其第一方面的實(shí)現(xiàn)對目標(biāo)應(yīng)用程序進(jìn)行加工,進(jìn)而利用其第二方面的實(shí)現(xiàn),為目標(biāo)應(yīng)用程序提供安全的沙箱運(yùn)行環(huán)境。
[0061]有鑒于此,本發(fā)明的應(yīng)用程序運(yùn)行控制的方法,主要體現(xiàn)沙箱實(shí)例的第一方面,用于加工適配于相應(yīng)的沙箱運(yùn)行環(huán)境的目標(biāo)應(yīng)用程序。
[0062]圖1為本發(fā)明中一個(gè)實(shí)施例的應(yīng)用程序運(yùn)行控制的方法的流程圖。
[0063]其中,在發(fā)明的實(shí)施例中,目標(biāo)應(yīng)用程序?yàn)楸景l(fā)明需要實(shí)現(xiàn)的應(yīng)用程序,實(shí)現(xiàn)的目標(biāo)應(yīng)用程序需要具有原生應(yīng)用程序的全部功能,能夠提供與原生應(yīng)用程序完全相同的服務(wù)。宿主應(yīng)用程序是實(shí)現(xiàn)目標(biāo)應(yīng)用程序的加殼應(yīng)用程序,通過宿主應(yīng)用程序完成目標(biāo)應(yīng)用程序的安裝與運(yùn)行。
[0064]步驟S110:反射調(diào)用與宿主應(yīng)用程序具有相同包名的作為宿主應(yīng)用程序附帶資源的安裝包,以加載該安裝包所實(shí)現(xiàn)的目標(biāo)應(yīng)用程序,其中,目標(biāo)應(yīng)用程序的所需資源與原生應(yīng)用程序的所需資源一一對應(yīng);步驟S120:通過鉤子函數(shù)對目標(biāo)應(yīng)用程序的活動(dòng)進(jìn)程進(jìn)行監(jiān)控;步驟S130:當(dāng)通過鉤子函數(shù)監(jiān)測到對目標(biāo)應(yīng)用程序的活動(dòng)進(jìn)程的調(diào)用指令時(shí),調(diào)用與目標(biāo)應(yīng)用程序的所需資源一一對應(yīng)的原生應(yīng)用程序的所需資源。
[0065]本發(fā)明的實(shí)施例中,借助反射調(diào)用機(jī)制去加載與宿主應(yīng)用程序具有相同包名的目標(biāo)應(yīng)用程序,由于與宿主應(yīng)用程序具有相同的包名,在Android系統(tǒng)中,既能使活動(dòng)組件和服務(wù)組件建立與ActivityManagerService的正常通信,又能使活動(dòng)組件、服務(wù)組件以及廣播組件等,順利被PackageManagerService識(shí)別,降低現(xiàn)有技術(shù)中有關(guān)加殼應(yīng)用程序運(yùn)行異常的錯(cuò)誤率;由于宿主應(yīng)用程序與目標(biāo)應(yīng)用程序使用了相同的包名,不必為被反射調(diào)用的目標(biāo)應(yīng)用程序的各個(gè)組件(Activity,Service,BroadcastReceiver和Content Provider) 單獨(dú)構(gòu)造主函數(shù)入口(ActivityThread.main),也不必考慮因包名而帶來的 PackageManagerService校驗(yàn)的程序?qū)崿F(xiàn)復(fù)雜度問題,從而大大提高程序運(yùn)行效率;通過宿主應(yīng)用程序中建立起原安裝包的目標(biāo)應(yīng)用程序與沙箱運(yùn)行環(huán)境之間的通信,使得目標(biāo)應(yīng)用程序的活動(dòng)過程可以進(jìn)一步被沙箱運(yùn)行環(huán)境監(jiān)視,從而對其適用安全策略,并通過在宿主應(yīng)用程序中建立目標(biāo)應(yīng)用程序的所需資源與原生應(yīng)用程序的所需資源一一對應(yīng),可在宿主應(yīng)用程序中通過鉤子函數(shù)調(diào)用目標(biāo)應(yīng)用程序的所需的對應(yīng)資源,確保目標(biāo)應(yīng)用程序能被宿主應(yīng)用程序正常加載并保持安全運(yùn)行,且實(shí)現(xiàn)了目標(biāo)應(yīng)用程序完全獨(dú)立于原生應(yīng)用程序。
[0066]本發(fā)明中,通過執(zhí)行目標(biāo)應(yīng)用程序的相關(guān)資源,能夠?qū)崿F(xiàn)與執(zhí)行原生應(yīng)用程序的相關(guān)資源完全相同的執(zhí)行結(jié)果;且目標(biāo)應(yīng)用程序運(yùn)行在通過宿主應(yīng)用程序構(gòu)建的沙箱中, 其安裝及運(yùn)行活動(dòng)均不被系統(tǒng)所感知,從而可以解決現(xiàn)有技術(shù)中,對于一種即時(shí)通信類應(yīng)用程序,在一臺(tái)終端設(shè)備中僅可以安裝并運(yùn)行一個(gè)該即時(shí)通信類應(yīng)用程序,同時(shí),用戶僅可以通過唯一的賬號(hào)登錄并對其執(zhí)行相關(guān)操作的瓶頸。實(shí)現(xiàn)了用戶希望在一臺(tái)終端設(shè)備中通過多個(gè)賬號(hào)登錄一種即時(shí)通信類應(yīng)用程序以實(shí)現(xiàn)對不同好友信息的區(qū)分管理及交流的實(shí)際應(yīng)用目的。
[0067]步驟S110:反射調(diào)用與宿主應(yīng)用程序具有相同包名的作為宿主應(yīng)用程序附帶資源的安裝包,以加載該安裝包所實(shí)現(xiàn)的目標(biāo)應(yīng)用程序,其中,目標(biāo)應(yīng)用程序的所需資源與原生應(yīng)用程序的所需資源一一對應(yīng)。
[0068]其中,目標(biāo)應(yīng)用程序的所需資源,包括但不限于:
[0069]ActivityManagerService 資源;
[0070]PackageManagerService 資源;
[0071]Activity 組件;
[0072]Service 組件;
[0073]Broadcast Receiver組件;
[0074]Content Provider組件。
[0075]其中,宿主應(yīng)用程序的資源文件和/或動(dòng)態(tài)庫文件與安裝包中的相應(yīng)文件相同。
[0076]具體地,通過反射機(jī)制調(diào)用與宿主應(yīng)用程序具有相同包名的作為宿主應(yīng)用程序附帶資源的安裝包,隨后加載該安裝包所實(shí)現(xiàn)的目標(biāo)應(yīng)用程序,并將目標(biāo)應(yīng)用程序的所需全部資源與原生應(yīng)用程序的所需全部資源一一對應(yīng)。[〇〇77]Android操作系統(tǒng)有其不同于其他操作系統(tǒng)的原理,Android為開發(fā)者提供四大組件,具體指Activity、Service、Broadcast Receiver以及Content Provider等組件。 Android應(yīng)用程序以APK安裝包的形式提供給用戶進(jìn)行安裝,APK安裝包中,具有用于封裝實(shí)現(xiàn)各個(gè)組件的程序代碼的classes, dex代碼文件以及用于表達(dá)應(yīng)用程序所用的各個(gè)組件的注冊信息以及權(quán)限申請信息等內(nèi)容的Androidmanifest.xml配置文件。由于應(yīng)用程序的安裝過程就是 PackageManager Serv i ce (PMS)解析 Andro i dman i f e s t ? xml 文件的過程,而本發(fā)明中應(yīng)用程序安裝包沒有安裝在本地,因此無法得到應(yīng)用程序的相關(guān)屬性信息,但只有獲取如Activity組件、Service組件、Broadcast Receiver組件、ContentProvider組件等信息時(shí),才能通過ActivityManagerService(AMS)正常運(yùn)行應(yīng)用程序。
[0078]本實(shí)施例所采用的反射機(jī)制可以為Java反射機(jī)制,Java反射機(jī)制是在運(yùn)行狀態(tài)中,對于任意一個(gè)類,都能夠知道這個(gè)類的所有屬性和方法;對于任意一個(gè)對象,都能夠調(diào)用它的任意一個(gè)方法;這種動(dòng)態(tài)獲取信息以及動(dòng)態(tài)調(diào)用對象的方法的功能即為JAVA語言的反射機(jī)制。[0〇79]通過反射機(jī)制,調(diào)用AssetManager中的addAssetPath方法,將宿主應(yīng)用程序安裝文件中的資源加載到Resource中,通過Resource對象調(diào)用宿主應(yīng)用程序安裝文件中的資源。在獲取宿主應(yīng)用程序安裝文件資源之前,首先要由宿主程序新建DexClassLoader加載宿主應(yīng)用程序安裝包,然后新建AssetManager加載宿主應(yīng)用程序安裝文件的資源,最后通過Resource對象讀取宿主應(yīng)用程序安裝文件的資源。
[0080]優(yōu)選地,加載該安裝包所實(shí)現(xiàn)的目標(biāo)應(yīng)用程序的步驟包括步驟S111 (圖中未示出)。步驟S111(圖中未示出):通過宿主應(yīng)用程序,來建立目標(biāo)應(yīng)用程序的所需資源與原生應(yīng)用程序的所需資源的一一對應(yīng)關(guān)系。[0081 ]例如,終端設(shè)備的操作系統(tǒng)為Android系統(tǒng),目標(biāo)應(yīng)用程序?yàn)锳ppl’,該目標(biāo)應(yīng)用程序欲實(shí)現(xiàn)原生應(yīng)用程序Appl的全部功能與相應(yīng)服務(wù);在終端設(shè)備的宿主應(yīng)用程序中, “Appl’.apk”為宿主應(yīng)用程序附帶資源的安裝包,通過Java反射機(jī)制調(diào)用安裝包“Appl’.apk”,隨后加載“Appl’.apk”所實(shí)現(xiàn)的目標(biāo)應(yīng)用程序Appl’,在宿主應(yīng)用程序中加載 “ A p p 1 ’.a p k”的過程中,創(chuàng)建目標(biāo)應(yīng)用程序A p p 1 ’的所需全部資源如 Act ivityManagerService資源、PackageManagerService資源、Activity組件、Service 組件、Broadcast Receiver組件和Content Provider組件,其中,目標(biāo)應(yīng)用程序Appl’的所需全部資源如Act ivityManagerService資源、PackageManagerService資源、Activity組件、Service組件、Broadcast Receiver組件和Content Provider組件-對應(yīng)且相同于原生應(yīng)用程序即在終端設(shè)備Andro id操作系統(tǒng)中運(yùn)行的Appl的所需全部資源如 Act ivityManagerService資源、PackageManagerService資源、Activity組件、Service 組件、Broadcast Receiver組件和Content Provider組件。
[0082]優(yōu)選地,建立目標(biāo)應(yīng)用程序的所需資源與原生應(yīng)用程序的所需資源的一一對應(yīng)關(guān)系的步驟具體包括步驟S112(圖中未示出)和步驟S113(圖中未示出)。步驟S112:解析安裝包以確定目標(biāo)應(yīng)用程序的所需資源的資源名;步驟S113:根據(jù)目標(biāo)應(yīng)用程序的所需資源的資源名,加載與原生應(yīng)用程序的所需資源一一對應(yīng)的資源。
[0083]解析應(yīng)用程序的原安裝包的手段,為本領(lǐng)域技術(shù)人員所熟知。安裝包APK文件本質(zhì)上是利用ZIP壓縮技術(shù)結(jié)合簽名技術(shù)實(shí)現(xiàn)的壓縮包,因此,一方面可以通過解壓技術(shù)釋放其內(nèi)部文件,另一方面還可通過Apktool之類的工具軟件獲取其內(nèi)部文件(在這種情況下其代碼文件會(huì)被反向?yàn)?smali文件)。本領(lǐng)域技術(shù)人員均能嫻熟地利用這些公知技術(shù)在一個(gè)給定目錄中對原安裝包進(jìn)行處理,從而通過內(nèi)存操作(非文件操作)的方式來獲得其中的內(nèi)部文件。
[0084]Android應(yīng)用程序在運(yùn)行的過程中,是通過一個(gè)稱為AssetsManager資源管理器來讀取打包在APK文件里面的資源文件的。應(yīng)用程序的每一個(gè)Activity組件都關(guān)聯(lián)一個(gè) Context Imp 1對象,這個(gè)Context Imp 1對象就是用來描述Activity組件的運(yùn)行上下文環(huán)境的。調(diào)用這個(gè)Contextlmpl對象的成員函數(shù)init來執(zhí)行初始化Activity組件運(yùn)行上下文環(huán)境的工作,其中就包括創(chuàng)建用來訪問應(yīng)用程序資源的Resources對象和AssetsManager對象的工作。其中,Context Imp 1 ? ini t 函數(shù)就定義在文件frameworks/base/core/java/ android/app/Contextlmpl ? java中。ContextImpl ? init函數(shù)中的參數(shù)packagelnfo指向的是一個(gè)loadedApk對象,這個(gè)loadedApk對象描述的是當(dāng)前正在啟動(dòng)組件所屬的Apk。用來訪問應(yīng)用程序資源的Resources對象是通過調(diào)用參數(shù)package Info所指向的是一個(gè)loadedApk 對象的成員函數(shù)getResources來創(chuàng)建的。由此可知,可創(chuàng)建Resources對象,以提取或訪問應(yīng)用程序資源。[〇〇85]例如,解析安裝包“Appl’.apk”以確定目標(biāo)應(yīng)用程序Appl’的所需全部資源的資源名,如ActivityManagerService、PackageManagerService、Activity、Service、Broadcast Receiver和Content Provider,隨后在宿主應(yīng)用程序中創(chuàng)建原生應(yīng)用程序Appl的所需全部資源-----對應(yīng)的資源如Act ivityManagerSer vice資源、PackageManagerSer vice資源、Activity組件、Service組件、Broadcast Receiver組件和Content Provider組件。
[0086]優(yōu)選地,目標(biāo)應(yīng)用程序包括預(yù)留擴(kuò)展項(xiàng),以用于與原生應(yīng)用程序的擴(kuò)展資源相匹配。
[0087]具體地,在宿主應(yīng)用程序中加載目標(biāo)應(yīng)用程序Appl’的過程中,同時(shí)加載目標(biāo)應(yīng)用程序Appl’的預(yù)留擴(kuò)展項(xiàng),以用于與原生應(yīng)用程序Appl的擴(kuò)展資源相匹配。
[0088]例如,在宿主應(yīng)用程序中加載目標(biāo)應(yīng)用程序Appl’的過程中,同時(shí)加載目標(biāo)應(yīng)用程序Appl’的預(yù)留擴(kuò)展項(xiàng),當(dāng)原生應(yīng)用程序Appl發(fā)生更新時(shí),如增加了用戶界面布局的XML文件“1 ay out.xml”,可在目標(biāo)應(yīng)用程序App 1’的預(yù)留擴(kuò)展項(xiàng)里創(chuàng)建對應(yīng)的用戶界面布局的XML 文件 “l(fā)ayout ? xml”。[〇〇89]步驟S120:通過鉤子函數(shù)對目標(biāo)應(yīng)用程序的活動(dòng)進(jìn)程進(jìn)行監(jiān)控。
[0090]這里需要補(bǔ)充的是:術(shù)語“鉤子”涵蓋了用于通過攔截在軟件組件之間傳遞的函數(shù)調(diào)用、消息、或事件來改變或增加操作系統(tǒng)、應(yīng)用程序、或其他軟件組件的行為的技術(shù)。而處理這種被攔截的函數(shù)調(diào)用、事件或消息的代碼就被稱為鉤子hook函數(shù)。鉤子通常用于各種目標(biāo),包括對功能進(jìn)行調(diào)試和對功能進(jìn)行擴(kuò)展。其示例可以包括在鍵盤或鼠標(biāo)事件傳遞到應(yīng)用程序之前攔截它們,或者攔截系統(tǒng)調(diào)用(system call)、或者系統(tǒng)函數(shù)行為、函數(shù)執(zhí)行結(jié)果等,以監(jiān)視或修改應(yīng)用程序或其他組件的功能等等。本實(shí)施例即可采用鉤子hook函數(shù)接管所述應(yīng)用程序運(yùn)行時(shí)所需的安裝自校驗(yàn)操作。[0091 ]作為一個(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)者,負(fù)責(zé)實(shí)現(xiàn)一下的功能:通過監(jiān)控目標(biāo)應(yīng)用程序?qū)Y源的訪問,使目標(biāo)應(yīng)用程序進(jìn)程能夠?qū)崿F(xiàn)對對應(yīng)資源的正常調(diào)用。例如,上述有關(guān)對目標(biāo)應(yīng)用程序Appl’的安裝包的資源進(jìn)行的調(diào)用,可以通過監(jiān)控具體調(diào)用資源的具體調(diào)用指令,利用Hook技術(shù)來實(shí)現(xiàn)??蓪⑼ㄟ^鉤子函數(shù)對目標(biāo)應(yīng)用程序的活動(dòng)進(jìn)程進(jìn)行監(jiān)控的方式注冊為服務(wù)進(jìn)程,以鉤子函數(shù)關(guān)聯(lián)目標(biāo)應(yīng)用程序Appl’活動(dòng)進(jìn)程的調(diào)用指令以實(shí)現(xiàn)對目標(biāo)應(yīng)用程序Appl’的活動(dòng)監(jiān)控。[〇〇92] 步驟S130:當(dāng)通過鉤子函數(shù)監(jiān)測到對目標(biāo)應(yīng)用程序的活動(dòng)進(jìn)程的調(diào)用指令時(shí),調(diào)用與目標(biāo)應(yīng)用程序的所需資源一一對應(yīng)的原生應(yīng)用程序的所需資源。
[0093]例如,利用鉤子函數(shù)對相關(guān)調(diào)用指令的入口點(diǎn)進(jìn)行監(jiān)視,截獲此一調(diào)用指令,并獲取目標(biāo)應(yīng)用程序Appl’訪問的資源的名稱,如鉤子函數(shù)獲取到目標(biāo)應(yīng)用程序Appl’訪問的資源為ActivityManagerService,隨后轉(zhuǎn)向執(zhí)行相應(yīng)的鉤子函數(shù),由該鉤子函數(shù)調(diào)用與原生應(yīng)用程序?qū)?yīng)的ActivityManagerService資源。[〇〇94]在一優(yōu)選實(shí)施例中,該方法還包括步驟S140(圖中未示出)。步驟S140:檢測到原生應(yīng)用程序的更新服務(wù),基于目標(biāo)應(yīng)用程序的預(yù)留擴(kuò)展項(xiàng)更新目標(biāo)應(yīng)用程序的所需資源。
[0095]例如,當(dāng)宿主應(yīng)用程序檢測到原生應(yīng)用程序Appl的更新服務(wù)時(shí),如更新服務(wù)中包括增加了用戶界面布局的XML文件“l(fā)ayout.xml”,在目標(biāo)應(yīng)用程序Appl’的預(yù)留擴(kuò)展項(xiàng)里創(chuàng)建對應(yīng)的用戶界面布局的XML文件“l(fā)ayout.xml”,實(shí)現(xiàn)對目標(biāo)應(yīng)用程序Appl’的相應(yīng)更新。 [〇〇96] 在一優(yōu)選實(shí)施例中,該方法還包括S150 (圖中未示出)。步驟S150:通過執(zhí)行目標(biāo)應(yīng)用程序的所需資源,以實(shí)現(xiàn)與執(zhí)行原生應(yīng)用程序的所需資源相同的執(zhí)行結(jié)果。
[0097]例如,通過執(zhí)行原生應(yīng)用程序A p p 1所需終端設(shè)備A n d r 〇 i d系統(tǒng)的 ActivityManagerService資源可激活啟動(dòng)原生應(yīng)用程序Appl,在宿主應(yīng)用程序中,通過執(zhí)行目標(biāo)應(yīng)用程序Appl’所需的宿主應(yīng)用程序中的ActivityManagerService資源可激活啟動(dòng)目標(biāo)應(yīng)用程序Appl’。
[0098]在本優(yōu)選實(shí)施例中,通過執(zhí)行目標(biāo)應(yīng)用程序的相關(guān)資源,能夠?qū)崿F(xiàn)與執(zhí)行原生應(yīng)用程序的相關(guān)資源完全相同的執(zhí)行結(jié)果;且目標(biāo)應(yīng)用程序運(yùn)行在通過宿主應(yīng)用程序構(gòu)建的沙箱中,其安裝及運(yùn)行活動(dòng)均不被系統(tǒng)所感知,從而可以解決現(xiàn)有技術(shù)中,對于一種即時(shí)通信類應(yīng)用程序,在一臺(tái)終端設(shè)備中僅可以安裝并運(yùn)行一個(gè)該即時(shí)通信類應(yīng)用程序,同時(shí), 用戶僅可以通過唯一的賬號(hào)登錄并對其執(zhí)行相關(guān)操作的瓶頸。實(shí)現(xiàn)了用戶希望在一臺(tái)終端設(shè)備中通過多個(gè)賬號(hào)登錄一種即時(shí)通信類應(yīng)用程序以實(shí)現(xiàn)對不同好友信息的區(qū)分管理及交流的實(shí)際應(yīng)用目的。
[0099]圖2為本發(fā)明中另一實(shí)施例的應(yīng)用程序運(yùn)行控制的裝置的結(jié)構(gòu)示意圖。
[0100]其中,在發(fā)明的實(shí)施例中,目標(biāo)應(yīng)用程序?yàn)楸景l(fā)明需要實(shí)現(xiàn)的應(yīng)用程序,實(shí)現(xiàn)的目標(biāo)應(yīng)用程序需要具有原生應(yīng)用程序的全部功能,能夠提供與原生應(yīng)用程序完全相同的服務(wù)。宿主應(yīng)用程序是實(shí)現(xiàn)目標(biāo)應(yīng)用程序的加殼應(yīng)用程序,通過宿主應(yīng)用程序完成目標(biāo)應(yīng)用程序的安裝與運(yùn)行。[〇1〇1]加載模塊210反射調(diào)用與宿主應(yīng)用程序具有相同包名的作為宿主應(yīng)用程序附帶資源的安裝包,以加載該安裝包所實(shí)現(xiàn)的目標(biāo)應(yīng)用程序,其中,目標(biāo)應(yīng)用程序的所需資源與原生應(yīng)用程序的所需資源一一對應(yīng);監(jiān)控模塊220通過鉤子函數(shù)對目標(biāo)應(yīng)用程序的活動(dòng)進(jìn)程進(jìn)行監(jiān)控;調(diào)用模塊230當(dāng)通過鉤子函數(shù)監(jiān)測到對目標(biāo)應(yīng)用程序的活動(dòng)進(jìn)程的調(diào)用指令時(shí), 調(diào)用與目標(biāo)應(yīng)用程序的所需資源一一對應(yīng)的原生應(yīng)用程序的所需資源。
[0102]加載模塊210反射調(diào)用與宿主應(yīng)用程序具有相同包名的作為宿主應(yīng)用程序附帶資源的安裝包,以加載該安裝包所實(shí)現(xiàn)的目標(biāo)應(yīng)用程序,其中,目標(biāo)應(yīng)用程序的所需資源與原生應(yīng)用程序的所需資源一一對應(yīng)。
[0103]其中,目標(biāo)應(yīng)用程序的所需資源,包括但不限于:
[0104]ActivityManagerService 資源;
[0105]PackageManagerService 資源;
[0106]Activity 組件;
[0107]Service 組件;
[0108]Broadcast Receiver組件;
[0109]Content Provider組件。
[0110]其中,宿主應(yīng)用程序的資源文件和/或動(dòng)態(tài)庫文件與安裝包中的相應(yīng)文件相同。
[0111]具體地,通過反射機(jī)制調(diào)用與宿主應(yīng)用程序具有相同包名的作為宿主應(yīng)用程序附帶資源的安裝包,隨后加載該安裝包所實(shí)現(xiàn)的目標(biāo)應(yīng)用程序,并將目標(biāo)應(yīng)用程序的所需全部資源與原生應(yīng)用程序的所需全部資源一一對應(yīng)。
[0112]Android操作系統(tǒng)有其不同于其他操作系統(tǒng)的原理,Android為開發(fā)者提供四大組件,具體指Activity、Service、Broadcast Receiver以及Content Provider等組件。 Android應(yīng)用程序以APK安裝包的形式提供給用戶進(jìn)行安裝,APK安裝包中,具有用于封裝實(shí)現(xiàn)各個(gè)組件的程序代碼的classes, dex代碼文件以及用于表達(dá)應(yīng)用程序所用的各個(gè)組件的注冊信息以及權(quán)限申請信息等內(nèi)容的Androidmanifest.xml配置文件。由于應(yīng)用程序的安裝過程就是 PackageManagerService(PMS)解析 Androidmanifest.xml 文件的過程,而本發(fā)明中應(yīng)用程序安裝包沒有安裝在本地,因此無法得到應(yīng)用程序的相關(guān)屬性信息,但只有獲取如Activity組件、Service組件、Broadcast Receiver組件、ContentProvider組件等信息時(shí),才能通過ActivityManagerService(AMS)正常運(yùn)行應(yīng)用程序。[〇113]本實(shí)施例所采用的反射機(jī)制可以為Java反射機(jī)制,Java反射機(jī)制是在運(yùn)行狀態(tài)中,對于任意一個(gè)類,都能夠知道這個(gè)類的所有屬性和方法;對于任意一個(gè)對象,都能夠調(diào)用它的任意一個(gè)方法;這種動(dòng)態(tài)獲取信息以及動(dòng)態(tài)調(diào)用對象的方法的功能即為JAVA語言的反射機(jī)制。[〇114]通過反射機(jī)制,調(diào)用AssetManager中的addAssetPath方法,將宿主應(yīng)用程序安裝文件中的資源加載到Resource中,通過Resource對象調(diào)用宿主應(yīng)用程序安裝文件中的資源。在獲取宿主應(yīng)用程序安裝文件資源之前,首先要由宿主程序新建DexClassLoader加載宿主應(yīng)用程序安裝包,然后新建AssetManager加載宿主應(yīng)用程序安裝文件的資源,最后通過Resource對象讀取宿主應(yīng)用程序安裝文件的資源。
[0115]優(yōu)選地,加載模塊210包括建立單元(圖中未示出);建立單元通過所述宿主應(yīng)用程序,來建立所述目標(biāo)應(yīng)用程序的所需資源與原生應(yīng)用程序的所需資源的一一對應(yīng)關(guān)系。 [〇116]例如,終端設(shè)備的操作系統(tǒng)為Android系統(tǒng),目標(biāo)應(yīng)用程序?yàn)锳ppl’,該目標(biāo)應(yīng)用程序欲實(shí)現(xiàn)原生應(yīng)用程序Appl的全部功能與相應(yīng)服務(wù);在終端設(shè)備的宿主應(yīng)用程序中, “Appl’.apk”為宿主應(yīng)用程序附帶資源的安裝包,通過Java反射機(jī)制調(diào)用安裝包“Appl’.3?1^,隨后加載1??1’.&?1^所實(shí)現(xiàn)的目標(biāo)應(yīng)用程序4??1’,在宿主應(yīng)用程序中加載 “ A p p 1 ’.a p k”的過程中,創(chuàng)建目標(biāo)應(yīng)用程序A p p 1 ’的所需全部資源如 Act ivityManagerService資源、PackageManagerService資源、Activity組件、Service 組件、Broadcast Receiver組件和Content Provider組件,其中,目標(biāo)應(yīng)用程序Appl’的所需全部資源如Act ivityManagerService資源、PackageManagerService資源、Activity組件、Service組件、Broadcast Receiver組件和Content Provider組件-對應(yīng)且相同于原生應(yīng)用程序即在終端設(shè)備Android操作系統(tǒng)中運(yùn)行的Appl的所需全部資源如 Act ivityManagerService資源、PackageManagerService資源、Activity組件、Service 組件、Broadcast Receiver組件和Content Provider組件。[〇117]優(yōu)選地,建立單元具體包括解析子單元(圖中未示出)和加載子單元(圖中未示出)。解析子單元:解析安裝包以確定目標(biāo)應(yīng)用程序的所需資源的資源名;加載子單元:根據(jù)目標(biāo)應(yīng)用程序的所需資源的資源名,加載與原生應(yīng)用程序的所需資源一一對應(yīng)的資源。
[0118]解析應(yīng)用程序的原安裝包的手段,為本領(lǐng)域技術(shù)人員所熟知。安裝包APK文件本質(zhì)上是利用ZIP壓縮技術(shù)結(jié)合簽名技術(shù)實(shí)現(xiàn)的壓縮包,因此,一方面可以通過解壓技術(shù)釋放其內(nèi)部文件,另一方面還可通過Apktool之類的工具軟件獲取其內(nèi)部文件(在這種情況下其代碼文件會(huì)被反向?yàn)?smali文件)。本領(lǐng)域技術(shù)人員均能嫻熟地利用這些公知技術(shù)在一個(gè)給定目錄中對原安裝包進(jìn)行處理,從而通過內(nèi)存操作(非文件操作)的方式來獲得其中的內(nèi)部文件。[〇119] Android應(yīng)用程序在運(yùn)行的過程中,是通過一個(gè)稱為AssetsManager資源管理器來讀取打包在APK文件里面的資源文件的。應(yīng)用程序的每一個(gè)Activity組件都關(guān)聯(lián)一個(gè) Context Imp 1對象,這個(gè)Context Imp 1對象就是用來描述Activity組件的運(yùn)行上下文環(huán)境的。調(diào)用這個(gè)Contextlmpl對象的成員函數(shù)init來執(zhí)行初始化Activity組件運(yùn)行上下文環(huán)境的工作,其中就包括創(chuàng)建用來訪問應(yīng)用程序資源的Resources對象和AssetsManager對象的工作。其中,Contextlmpl.1nit 函數(shù)就定義在文件frameworks/base/core/ java/ android/app/Contextlmpl ? java中。ContextImpl ? init函數(shù)中的參數(shù)packagelnfo指向的是一個(gè)loadedApk對象,這個(gè)loadedApk對象描述的是當(dāng)前正在啟動(dòng)組件所屬的Apk。用來訪問應(yīng)用程序資源的Resources對象是通過調(diào)用參數(shù)package Info所指向的是一個(gè)loadedApk 對象的成員函數(shù)getResources來創(chuàng)建的。由此可知,可創(chuàng)建Resources對象,以提取或訪問應(yīng)用程序資源。[〇12〇]例如,解析安裝包“Appl’.apk”以確定目標(biāo)應(yīng)用程序Appl’的所需全部資源的資源名,如ActivityManagerService、PackageManagerService、Activity、Service、Broadcast Receiver和Content Provider,隨后在宿主應(yīng)用程序中創(chuàng)建原生應(yīng)用程序Appl的所需全部資源-----對應(yīng)的資源如Act ivi tyManagerService資源、PackageManagerService資源、Activity組件、Service組件、Broadcast Receiver組件和Content Provider組件。
[0121]優(yōu)選地,目標(biāo)應(yīng)用程序包括預(yù)留擴(kuò)展項(xiàng),以用于與原生應(yīng)用程序的擴(kuò)展資源相匹配。
[0122]具體地,在宿主應(yīng)用程序中加載目標(biāo)應(yīng)用程序Appl’的過程中,同時(shí)加載目標(biāo)應(yīng)用程序Appl’的預(yù)留擴(kuò)展項(xiàng),以用于與原生應(yīng)用程序Appl的擴(kuò)展資源相匹配。
[0123]例如,在宿主應(yīng)用程序中加載目標(biāo)應(yīng)用程序Appl’的過程中,同時(shí)加載目標(biāo)應(yīng)用程序Appl’的預(yù)留擴(kuò)展項(xiàng),當(dāng)原生應(yīng)用程序Appl發(fā)生更新時(shí),如增加了用戶界面布局的XML文件“1 ay out.xml”,可在目標(biāo)應(yīng)用程序App 1’的預(yù)留擴(kuò)展項(xiàng)里創(chuàng)建對應(yīng)的用戶界面布局的XML 文件 “l(fā)ayout ? xml”。
[0124]監(jiān)控模塊220通過鉤子函數(shù)對目標(biāo)應(yīng)用程序的活動(dòng)進(jìn)程進(jìn)行監(jiān)控。
[0125]這里需要補(bǔ)充的是:術(shù)語“鉤子”涵蓋了用于通過攔截在軟件組件之間傳遞的函數(shù)調(diào)用、消息、或事件來改變或增加操作系統(tǒng)、應(yīng)用程序、或其他軟件組件的行為的技術(shù)。而處理這種被攔截的函數(shù)調(diào)用、事件或消息的代碼就被稱為鉤子hook函數(shù)。鉤子通常用于各種目標(biāo),包括對功能進(jìn)行調(diào)試和對功能進(jìn)行擴(kuò)展。其示例可以包括在鍵盤或鼠標(biāo)事件傳遞到應(yīng)用程序之前攔截它們,或者攔截系統(tǒng)調(diào)用(system call)、或者系統(tǒng)函數(shù)行為、函數(shù)執(zhí)行結(jié)果等,以監(jiān)視或修改應(yīng)用程序或其他組件的功能等等。本實(shí)施例即可采用鉤子hook函數(shù)接管所述應(yīng)用程序運(yùn)行時(shí)所需的安裝自校驗(yàn)操作。
[0126]作為一個(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)者,負(fù)責(zé)實(shí)現(xiàn)一下的功能:通過監(jiān)控目標(biāo)應(yīng)用程序?qū)Y源的訪問,使目標(biāo)應(yīng)用程序進(jìn)程能夠?qū)崿F(xiàn)對對應(yīng)資源的正常調(diào)用。例如,上述有關(guān)對目標(biāo)應(yīng)用程序Appl’的安裝包的資源進(jìn)行的調(diào)用,可以通過監(jiān)控具體調(diào)用資源的具體調(diào)用指令,利用Hook技術(shù)來實(shí)現(xiàn)??蓪⑼ㄟ^鉤子函數(shù)對目標(biāo)應(yīng)用程序的活動(dòng)進(jìn)程進(jìn)行監(jiān)控的方式注冊為服務(wù)進(jìn)程,以鉤子函數(shù)關(guān)聯(lián)目標(biāo)應(yīng)用程序Appl’活動(dòng)進(jìn)程的調(diào)用指令以實(shí)現(xiàn)對目標(biāo)應(yīng)用程序Appl’的活動(dòng)監(jiān)控。
[0127]調(diào)用模塊230當(dāng)通過鉤子函數(shù)監(jiān)測到對目標(biāo)應(yīng)用程序的活動(dòng)進(jìn)程的調(diào)用指令時(shí), 調(diào)用與目標(biāo)應(yīng)用程序的所需資源一一對應(yīng)的原生應(yīng)用程序的所需資源。
[0128]例如,利用鉤子函數(shù)對相關(guān)調(diào)用指令的入口點(diǎn)進(jìn)行監(jiān)視,截獲此一調(diào)用指令,并獲取目標(biāo)應(yīng)用程序Appl’訪問的資源的名稱,如鉤子函數(shù)獲取到目標(biāo)應(yīng)用程序Appl’訪問的資源為ActivityManagerService,隨后轉(zhuǎn)向執(zhí)行相應(yīng)的鉤子函數(shù),由該鉤子函數(shù)調(diào)用與原生應(yīng)用程序?qū)?yīng)的ActivityManagerService資源。
[0129]在一優(yōu)選實(shí)施例中,該裝置還包括更新模塊(圖中未示出)。更新模塊檢測到原生應(yīng)用程序的更新服務(wù),基于目標(biāo)應(yīng)用程序的預(yù)留擴(kuò)展項(xiàng)更新目標(biāo)應(yīng)用程序的所需資源。
[0130]例如,當(dāng)宿主應(yīng)用程序檢測到原生應(yīng)用程序Appl的更新服務(wù)時(shí),如更新服務(wù)中包括增加了用戶界面布局的XML文件“l(fā)ayout.xml”,在目標(biāo)應(yīng)用程序Appl’的預(yù)留擴(kuò)展項(xiàng)里創(chuàng)建對應(yīng)的用戶界面布局的XML文件“l(fā)ayout.xml”,實(shí)現(xiàn)對目標(biāo)應(yīng)用程序Appl’的相應(yīng)更新。
[0131]在一優(yōu)選實(shí)施例中,該裝置還包括實(shí)現(xiàn)模塊(圖中未示出)。實(shí)現(xiàn)模塊通過執(zhí)行目標(biāo)應(yīng)用程序的所需資源,以實(shí)現(xiàn)與執(zhí)行原生應(yīng)用程序的所需資源相同的執(zhí)行結(jié)果。
[0132]例如,通過執(zhí)行原生應(yīng)用程序A p p 1所需終端設(shè)備A n d r 〇 i d系統(tǒng)的 ActivityManagerService資源可激活啟動(dòng)原生應(yīng)用程序Appl,在宿主應(yīng)用程序中,通過執(zhí)行目標(biāo)應(yīng)用程序Appl’所需的宿主應(yīng)用程序中的ActivityManagerService資源可激活啟動(dòng)目標(biāo)應(yīng)用程序Appl’。
[0133]在本優(yōu)選實(shí)施例中,通過執(zhí)行目標(biāo)應(yīng)用程序的相關(guān)資源,能夠?qū)崿F(xiàn)與執(zhí)行原生應(yīng)用程序的相關(guān)資源完全相同的執(zhí)行結(jié)果;且目標(biāo)應(yīng)用程序運(yùn)行在通過宿主應(yīng)用程序構(gòu)建的沙箱中,其安裝及運(yùn)行活動(dòng)均不被系統(tǒng)所感知,從而可以解決現(xiàn)有技術(shù)中,對于一種即時(shí)通信類應(yīng)用程序,在一臺(tái)終端設(shè)備中僅可以安裝并運(yùn)行一個(gè)該即時(shí)通信類應(yīng)用程序,同時(shí),用戶僅可以通過唯一的賬號(hào)登錄并對其執(zhí)行相關(guān)操作的瓶頸。實(shí)現(xiàn)了用戶希望在一臺(tái)終端設(shè)備中通過多個(gè)賬號(hào)登錄一種即時(shí)通信類應(yīng)用程序以實(shí)現(xiàn)對不同好友信息的區(qū)分管理及交流的實(shí)際應(yīng)用目的。
[0134]本技術(shù)領(lǐng)域技術(shù)人員可以理解,本發(fā)明包括涉及用于執(zhí)行本申請中所述操作中的一項(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、和磁光盤)、R0M( 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ì)。
[0135]本技術(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è)框中指定的方案。
[0136]本技術(shù)領(lǐng)域技術(shù)人員可以理解,本發(fā)明中已經(jīng)討論過的各種操作、方法、流程中的步驟、措施、方案可以被交替、更改、組合或刪除。進(jìn)一步地,具有本發(fā)明中已經(jīng)討論過的各種操作、方法、流程中的其他步驟、措施、方案也可以被交替、更改、重排、分解、組合或刪除。 進(jìn)一步地,現(xiàn)有技術(shù)中的具有與本發(fā)明中公開的各種操作、方法、流程中的步驟、措施、方案也可以被交替、更改、重排、分解、組合或刪除。
[0137]以上所述僅是本發(fā)明的部分實(shí)施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。
【主權(quán)項(xiàng)】
1.一種應(yīng)用程序運(yùn)行控制的方法,其特征在于,包括: 反射調(diào)用與宿主應(yīng)用程序具有相同包名的作為宿主應(yīng)用程序附帶資源的安裝包,以加載該安裝包所實(shí)現(xiàn)的目標(biāo)應(yīng)用程序,其中,所述目標(biāo)應(yīng)用程序的所需資源與原生應(yīng)用程序的所屬資源—對應(yīng); 通過鉤子函數(shù)對所述目標(biāo)應(yīng)用程序的活動(dòng)進(jìn)程進(jìn)行監(jiān)控; 當(dāng)通過鉤子函數(shù)監(jiān)測到對目標(biāo)應(yīng)用程序的活動(dòng)進(jìn)程的調(diào)用指令時(shí),調(diào)用與所述目標(biāo)應(yīng)用程序的所屬資源一一對應(yīng)的所述原生應(yīng)用程序的所屬資源。2.根據(jù)權(quán)利要求1所述應(yīng)用程序運(yùn)行控制的方法,其中,加載該安裝包所實(shí)現(xiàn)的目標(biāo)應(yīng)用程序的步驟,包括: 通過所述宿主應(yīng)用程序,來建立所述目標(biāo)應(yīng)用程序的所需資源與原生應(yīng)用程序的所需資源的 對應(yīng)關(guān)系。3.根據(jù)權(quán)利要求2所述的應(yīng)用程序運(yùn)行控制的方法,其中,建立所述目標(biāo)應(yīng)用程序的所需資源與原生應(yīng)用程序的所需資源的一一對應(yīng)關(guān)系,具體包括: 解析所述安裝包以確定目標(biāo)應(yīng)用程序的所屬資源的資源名; 根據(jù)目標(biāo)應(yīng)用程序的所屬資源的資源名,加載與原生應(yīng)用程序的所需資源一一對應(yīng)的資源。4.根據(jù)權(quán)利要求1所述的應(yīng)用程序運(yùn)行控制的方法,所述目標(biāo)應(yīng)用程序包括預(yù)留擴(kuò)展項(xiàng),以用于與所述原生應(yīng)用程序的擴(kuò)展資源相匹配。5.根據(jù)權(quán)利要求4所述的應(yīng)用程序運(yùn)行控制的方法,該方法還包括: 檢測到所述原生應(yīng)用程序的更新服務(wù),基于所述目標(biāo)應(yīng)用程序的預(yù)留擴(kuò)展項(xiàng)更新所述目標(biāo)應(yīng)用程序的所需資源。6.一種應(yīng)用程序運(yùn)行控制的裝置,其特征在于,包括: 加載模塊,用于反射調(diào)用與宿主應(yīng)用程序具有相同包名的作為宿主應(yīng)用程序附帶資源的安裝包,以加載該安裝包所實(shí)現(xiàn)的目標(biāo)應(yīng)用程序,其中,所述目標(biāo)應(yīng)用程序的所需資源與原生應(yīng)用程序的所需資源一一對應(yīng); 監(jiān)控模塊,用于通過鉤子函數(shù)對所述目標(biāo)應(yīng)用程序的活動(dòng)進(jìn)程進(jìn)行監(jiān)控; 調(diào)用模塊,用于當(dāng)通過鉤子函數(shù)監(jiān)測到對目標(biāo)應(yīng)用程序的活動(dòng)進(jìn)程的調(diào)用指令時(shí),調(diào)用與所述目標(biāo)應(yīng)用程序的所需資源一一對應(yīng)的所述原生應(yīng)用程序的所需資源。7.根據(jù)權(quán)利要求6所述應(yīng)用程序運(yùn)行控制的裝置,其中,所述加載模塊包括: 建立單元,用于通過所述宿主應(yīng)用程序,來建立所述目標(biāo)應(yīng)用程序的所需資源與原生應(yīng)用程序的所需資源的一一對應(yīng)關(guān)系。8.根據(jù)權(quán)利要求7所述的應(yīng)用程序運(yùn)行控制的裝置,其中,所述建立單元具體包括: 解析子單元,用于解析所述安裝包以確定目標(biāo)應(yīng)用程序的所需資源的資源名; 加載子單元,用于根據(jù)目標(biāo)應(yīng)用程序的所需資源的資源名,加載與原生應(yīng)用程序的所需資源一一對應(yīng)的資源。9.根據(jù)權(quán)利要求6所述的應(yīng)用程序運(yùn)行控制的裝置,所述目標(biāo)應(yīng)用程序包括預(yù)留擴(kuò)展項(xiàng),以用于與所述原生應(yīng)用程序的擴(kuò)展資源相匹配。10.根據(jù)權(quán)利要求9所述的應(yīng)用程序運(yùn)行控制的裝置,該裝置還包括: 更新模塊,用于檢測到所述原生應(yīng)用程序的更新服務(wù),基于所述目標(biāo)應(yīng)用程序的預(yù)留擴(kuò)展項(xiàng)更新所述目標(biāo)應(yīng)用程序的所需資源。
【文檔編號(hào)】G06F21/53GK105975333SQ201510993178
【公開日】2016年9月28日
【申請日】2015年12月24日
【發(fā)明人】劉剛
【申請人】北京奇虎科技有限公司, 奇智軟件(北京)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1