運行應(yīng)用程序的方法和裝置制造方法
【專利摘要】本發(fā)明提供一種運行應(yīng)用程序的方法和裝置。在沙盒中運行所述應(yīng)用程序的主程序,當(dāng)所述主程序需要進行具有系統(tǒng)權(quán)限的操作時,通過進程通信向所述應(yīng)用程序的輔助程序發(fā)送操作請求;在沙盒外運行所述應(yīng)用程序的輔助程序,所述輔助程序執(zhí)行所述操作請求對應(yīng)的操作,通過進程通信向所述主程序返回操作結(jié)果。采用本發(fā)明提供的運行應(yīng)用程序的方法和裝置,能夠使應(yīng)用程序具有系統(tǒng)權(quán)限。
【專利說明】運行應(yīng)用程序的方法和裝置
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及計算機技術(shù),尤其涉及一種運行應(yīng)用程序的方法和裝置。
【背景技術(shù)】
[0002] 在iOS系統(tǒng)中,應(yīng)用程序均在沙盒(簡稱sandbox)中運行。
[0003] 在沙盒中運行的應(yīng)用程序只能訪問該應(yīng)用程序目錄下的文件。當(dāng)應(yīng)用程序運行在 沙盒中時,該應(yīng)用程序不具有系統(tǒng)權(quán)限,因而不能訪問其它目錄下的文件,也無法調(diào)用受限 的應(yīng)用程序編程接口(Application Programming Interface,簡稱API)。例如,在沙盒中 運行的文字處理程序無法打開在短信息收件箱中存儲的短信息。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明的第一個方面是提供一種運行應(yīng)用程序的方法,用以解決現(xiàn)有技術(shù)中的缺 陷,使應(yīng)用程序具有系統(tǒng)權(quán)限。
[0005] 本發(fā)明的另一個方面是提供一種運行應(yīng)用程序的裝置,用以解決現(xiàn)有技術(shù)中的缺 陷,使應(yīng)用程序具有系統(tǒng)權(quán)限。
[0006] 本發(fā)明的第一個方面是提供一種運行應(yīng)用程序的方法,包括:
[0007] 在沙盒中運行所述應(yīng)用程序的主程序,當(dāng)所述主程序需要進行具有系統(tǒng)權(quán)限的操 作時,通過進程通信向所述應(yīng)用程序的輔助程序發(fā)送操作請求;
[0008] 在沙盒外運行所述應(yīng)用程序的輔助程序,所述輔助程序執(zhí)行所述操作請求對應(yīng)的 操作,通過進程通信向所述主程序返回操作結(jié)果。
[0009] 如上所述的方法,其中,
[0010] 所述輔助程序通過掛鉤技術(shù)掛載到系統(tǒng)程序中。
[0011] 如上所述的方法,其中,所述在沙盒中運行所述應(yīng)用程序的主程序之前,還包括:
[0012] 備份系統(tǒng)程序的初始化代碼;
[0013] 采用掛鉤技術(shù),將當(dāng)前的系統(tǒng)程序的初始化代碼替換為所述輔助程序的初始化代 碼,所述輔助程序的初始化代碼中包括實現(xiàn)所述輔助程序與所述主程序的進程通信的代 碼;
[0014] 調(diào)用備份的系統(tǒng)程序的初始化代碼;
[0015] 備份系統(tǒng)程序的反初始化代碼;
[0016] 采用掛鉤技術(shù),將當(dāng)前的系統(tǒng)程序的反初始化代碼替換為所述輔助程序的反初始 化代碼;
[0017] 調(diào)用備份的系統(tǒng)程序的反初始化代碼。
[0018] 如上所述的方法,其中,所述輔助程序為獨立運行的程序。
[0019] 本發(fā)明的另一個方面是提供一種運行應(yīng)用程序的裝置,包括:
[0020] 沙盒,用于運行所述應(yīng)用程序的主程序,當(dāng)所述主程序需要進行具有系統(tǒng)權(quán)限的 操作時,通過進程通信向所述應(yīng)用程序的輔助程序發(fā)送操作請求;
[0021] 輔助程序單元,用于運行所述輔助程序,所述輔助程序執(zhí)行所述操作請求對應(yīng)的 操作,通過進程通信向所述主程序返回操作結(jié)果。
[0022] 如上所述的裝置,其中,所述輔助程序單元為通過掛鉤技術(shù)掛載所述輔助程序的 系統(tǒng)程序單元。
[0023] 如上所述的裝置,其中,所述系統(tǒng)程序單元包括:
[0024] 初始化子單元,用于備份系統(tǒng)程序的初始化代碼,采用掛鉤技術(shù)將當(dāng)前的系統(tǒng)程 序的初始化代碼替換為所述輔助程序的初始化代碼,所述輔助程序的初始化代碼中包括實 現(xiàn)所述輔助程序與所述主程序的進程通信的代碼,調(diào)用備份的系統(tǒng)程序的初始化代碼;
[0025] 反初始化子單元,用于備份系統(tǒng)程序的反初始化代碼,采用掛鉤技術(shù)將當(dāng)前的系 統(tǒng)程序的反初始化代碼替換為所述輔助程序的反初始化代碼,調(diào)用備份的系統(tǒng)程序的反初 始化代碼。
[0026] 如上所述的裝置,其中,所述輔助程序單元為獨立的程序運行單元。
[0027] 由上述
【發(fā)明內(nèi)容】
可見,在沙盒運行應(yīng)用程序的主程序,在沙盒以外運行該應(yīng)用程 序的輔助程序,在主程序與輔助程序之間通過進程通信,如果主程序需要進行具有系統(tǒng)權(quán) 限的操作,主程序通過進程通信消息向輔助程序發(fā)送操作請求,由輔助程序執(zhí)行該操作,并 將操作結(jié)果通過進程通信消息返回給主程序,因此,主程序能夠通過輔助程序執(zhí)行具有系 統(tǒng)權(quán)限的操作,從而使得該應(yīng)用程序具有系統(tǒng)權(quán)限。
【專利附圖】
【附圖說明】
[0028] 圖1為本發(fā)明實施例一的運行應(yīng)用程序的方法的流程圖;
[0029] 圖2為本發(fā)明實施例二的運行應(yīng)用程序的方法的流程圖;
[0030] 圖3為本發(fā)明實施例三的運行應(yīng)用程序的裝置的結(jié)構(gòu)示意圖;
[0031] 圖4為本發(fā)明實施例四的運行應(yīng)用程序的裝置的結(jié)構(gòu)示意圖。
【具體實施方式】
[0032] 在本發(fā)明各個實施例中,將應(yīng)用程序分為主程序和輔助程序,主程序與輔助程序 采用進程通信方式進行通信,其中,主程序用于執(zhí)行該應(yīng)用程序的各個功能,其中包括需要 系統(tǒng)權(quán)限才能實現(xiàn)的功能,當(dāng)主程序需要實現(xiàn)上述需要系統(tǒng)權(quán)限才能實現(xiàn)的功能時,主程 序通過進程通信告知輔助程序,輔助程序用于執(zhí)行主程序涉及的需要系統(tǒng)權(quán)限才能執(zhí)行的 各種操作。本發(fā)明提出的運行應(yīng)用程序的方法和裝置如下述各個實施例所述。
[0033] 圖1為本發(fā)明實施例一的運行應(yīng)用程序的方法的流程圖。如圖1所示,該方法包 括以下過程。
[0034] 步驟101 :在沙盒中運行應(yīng)用程序的主程序,通過進程通信向所述應(yīng)用程序的輔 助程序發(fā)送操作請求。
[0035] 在本步驟中,在沙盒中運行應(yīng)用程序的主程序,當(dāng)所述主程序需要進行具有系統(tǒng) 權(quán)限的操作時,通過進程通信向所述應(yīng)用程序的輔助程序發(fā)送操作請求。
[0036] 步驟102 :在沙盒外運行應(yīng)用程序的輔助程序,輔助程序執(zhí)行所述操作請求對應(yīng) 的操作,通過進程通信向主程序返回操作結(jié)果。
[0037] 在本步驟中,輔助程序在沙盒外運行,輔助程序執(zhí)行所述操作請求對應(yīng)的操作,通 過進程通信向主程序返回操作結(jié)果。
[0038] 在本發(fā)明實施例一中,將應(yīng)用程序分為主程序和輔助程序,在沙盒中運行應(yīng)用程 序的主程序,在沙盒外運行該應(yīng)用程序的輔助程序,在主程序與輔助程序之間建立進程通 信,如果主程序需要進行具有系統(tǒng)權(quán)限的操作,主程序通過進程通信向輔助程序發(fā)送操作 請求,由輔助程序執(zhí)行該操作,并將操作結(jié)果通過進程通信返回給主程序,因此,主程序能 夠通過輔助程序執(zhí)行具有系統(tǒng)權(quán)限的操作,從而使得該應(yīng)用程序具有系統(tǒng)權(quán)限。
[0039] 在上述本發(fā)明實施例一中,輔助程序可以通過掛鉤技術(shù)掛載到系統(tǒng)程序中,或者, 輔助程序還可以為一個獨立運行的程序。
[0040] 圖2為本發(fā)明實施例二的運行應(yīng)用程序的方法的流程圖。在本發(fā)明實施例二中, 僅以輔助程序通過掛鉤技術(shù)掛載到系統(tǒng)程序中為例。如圖2所示,該方法包括以下過程。
[0041] 首先,將輔助程序通過掛鉤(簡稱Hook)技術(shù)掛載到系統(tǒng)程序中,具體地,該過程可 以包括以下的步驟201至步驟206。
[0042] 步驟201 :備份系統(tǒng)程序的初始化代碼。
[0043] 在本步驟執(zhí)行前,當(dāng)前的系統(tǒng)程序的初始化代碼為原始的系統(tǒng)程序的初始化代 碼,在本步驟中,對上述系統(tǒng)程序的初始化代碼進行備份。在完成備份操作后,存儲備份的 系統(tǒng)程序的初始化代碼,以供后續(xù)的步驟203使用,并且,對于當(dāng)前的系統(tǒng)程序的初始化代 碼執(zhí)行以下步驟202。
[0044] 步驟202 :采用掛鉤技術(shù),將當(dāng)前的系統(tǒng)程序的初始化代碼替換為輔助程序的初 始化代碼。
[0045] 在本步驟中,采用掛鉤技術(shù),將當(dāng)前的系統(tǒng)程序的初始化代碼替換為輔助程序的 初始化代碼。其中,輔助程序的初始化代碼中包括實現(xiàn)所述輔助程序與所述主程序的進程 通信的代碼。本發(fā)明實施例對進程通信的實現(xiàn)方式不做限制,例如,可以采用套接字(簡稱 Socket)方式、管道方式或者其它能夠支持進程通信的任何方式。
[0046] 步驟203 :調(diào)用備份的系統(tǒng)程序的初始化代碼。
[0047] 在本步驟中,調(diào)用備份的系統(tǒng)程序的初始化代碼,也就是調(diào)用原始的系統(tǒng)程序的 初始化代碼,從而保證步驟202的掛鉤處理不會影響系統(tǒng)功能。
[0048] 步驟204 :備份系統(tǒng)程序的反初始化代碼。
[0049] 在本步驟執(zhí)行前,當(dāng)前的系統(tǒng)程序的反初始化代碼為原始的系統(tǒng)程序的反初始化 代碼,在本步驟中,對上述系統(tǒng)程序的反初始化代碼進行備份。在完成備份操作后,存儲備 份的系統(tǒng)程序的反初始化代碼,以供后續(xù)的步驟206使用,并且,對于當(dāng)前的系統(tǒng)程序的反 初始化代碼執(zhí)行以下步驟205。
[0050] 步驟205 :采用掛鉤技術(shù),將當(dāng)前的系統(tǒng)程序的反初始化代碼替換為所述輔助程 序的反初始化代碼。
[0051] 步驟206 :調(diào)用備份的系統(tǒng)程序的反初始化代碼。
[0052] 在本步驟中,調(diào)用備份的系統(tǒng)程序的反初始化代碼,也就是調(diào)用原始的系統(tǒng)程序 的反初始化代碼,從而保證步驟205的掛鉤處理不會影響系統(tǒng)功能。
[0053] 在執(zhí)行完步驟206之后,完成了通過掛鉤技術(shù)將應(yīng)用程序的輔助程序掛載到系統(tǒng) 程序中的過程,接下來,運行應(yīng)用程序的主程序和輔助程序。
[0054] 步驟207 :在沙盒中運行應(yīng)用程序的主程序,當(dāng)主程序需要進行具有系統(tǒng)權(quán)限的 操作時,通過進程通信向應(yīng)用程序的輔助程序發(fā)送操作請求。
[0055] 在本步驟中,在沙盒中運行應(yīng)用程序的主程序,當(dāng)主程序需要進行具有系統(tǒng)權(quán)限 的操作時,通過進程通信向應(yīng)用程序的輔助程序發(fā)送操作請求,例如,主程序向輔助程序發(fā) 送第一進程通信消息,該第一進程通信消息中包括操作請求。以文字處理應(yīng)用程序為例,其 主程序運行在沙盒中,當(dāng)用戶使用該文字處理應(yīng)用程序讀取短信息收件箱中存儲的短信息 時,由于該短信息不在該文字處理應(yīng)用程序的目錄下,因此該操作為具有系統(tǒng)權(quán)限的操作, 該文字處理應(yīng)用程序的主程序通過進程通信向輔助程序發(fā)送操作請求,該操作請求表示: 請求讀取短信息收件箱中存儲的短信息。
[0056] 步驟208 :輔助程序執(zhí)行操作請求對應(yīng)的操作,通過進程通信向主程序返回操作 結(jié)果。
[0057] 在本步驟中,輔助程序執(zhí)行操作請求對應(yīng)的操作,通過進程通信向主程序返回操 作結(jié)果,例如,輔助程序向主程序返回第二進程通信消息,該第二進程通信消息中包括操作 結(jié)果。仍以用戶使用文字處理應(yīng)用程序讀取短信息收件箱中存儲的短信息為例,該文字處 理應(yīng)用程序運行在沙盒中,該文字處理應(yīng)用程序的主程序通過進程通信向輔助程序發(fā)送操 作請求后,該輔助程序根據(jù)該操作請求,執(zhí)行讀取短信息收件箱中存儲的短信息的操作,該 操作的操作結(jié)果為該短信息的內(nèi)容,輔助程序通過進程通信向主程序返回上述操作結(jié)果, 從而使得主程序能過獲得該短信息的內(nèi)容。
[0058] 在本發(fā)明實施例二中,通過將應(yīng)用程序分為主程序和輔助程序,在沙盒中運行應(yīng) 用程序的主程序,在沙盒外運行該應(yīng)用程序的輔助程序,該輔助程序用于執(zhí)行具有系統(tǒng)權(quán) 限的操作,在主程序與輔助程序之間建立進程通信,從而使得主程序能夠通過輔助程序執(zhí) 行具有系統(tǒng)權(quán)限的操作,即,應(yīng)用程序具有系統(tǒng)權(quán)限。
[0059] 并且,采用本發(fā)明實施例一和本發(fā)明實施例二的上述方法,在進行應(yīng)用程序的推 廣和傳播時,其程序包中可以僅包括該應(yīng)用程序的主程序,而不包括輔助程序,該應(yīng)用程序 的輔助程序可以在主程序運行時,通過主程序的更新過程傳送給用戶,從而使得用戶更加 方便、快捷地獲取應(yīng)用程序。
[0060] 圖3為本發(fā)明實施例三的運行應(yīng)用程序的裝置的結(jié)構(gòu)示意圖。如圖3所示,該裝 置包括:沙盒31和輔助程序單元32。
[0061] 其中,沙盒31用于運行所述應(yīng)用程序的主程序,當(dāng)所述主程序需要進行具有系統(tǒng) 權(quán)限的操作時,通過進程通信向所述應(yīng)用程序的輔助程序發(fā)送操作請求。
[0062] 輔助程序單元32用于運行所述輔助程序,所述輔助程序執(zhí)行所述操作請求對應(yīng) 的操作,通過進程通信向所述主程序返回操作結(jié)果。
[0063] 在上述技術(shù)方案的基礎(chǔ)上,進一步地,輔助程序單元32可以為通過掛鉤技術(shù)掛載 所述輔助程序的系統(tǒng)程序單元,或者,輔助程序單元32還可以為獨立的程序運行單元。
[0064] 圖4為本發(fā)明實施例四的運行應(yīng)用程序的裝置的結(jié)構(gòu)示意圖。在本發(fā)明實施例4 中,以輔助程序單元為通過掛鉤技術(shù)掛載輔助程序的系統(tǒng)程序單元的情況為例。如圖4所 示,該裝置包括:沙盒41和輔助程序單元42。
[0065] 其中,所述輔助程序可以存儲在動態(tài)庫中。所述系統(tǒng)程序單元包括:初始化子單元 421和反初始化子單元422。動態(tài)庫通過掛鉤技術(shù)連接到上述初始化子單元421和反初始 化子單元422。其中,初始化子單元421用于備份系統(tǒng)程序的初始化代碼,采用掛鉤技術(shù)將 當(dāng)前的系統(tǒng)程序的初始化代碼替換為所述輔助程序的初始化代碼,所述輔助程序的初始化 代碼中包括實現(xiàn)所述輔助程序與所述主程序的進程通信的代碼,調(diào)用備份的系統(tǒng)程序的初 始化代碼。反初始化子單元422用于備份系統(tǒng)程序的反初始化代碼,采用掛鉤技術(shù)將當(dāng)前 的系統(tǒng)程序的反初始化代碼替換為所述輔助程序的反初始化代碼,調(diào)用備份的系統(tǒng)程序的 反初始化代碼。
[0066] 沙盒41用于運行所述應(yīng)用程序的主程序,當(dāng)所述主程序需要進行具有系統(tǒng)權(quán)限 的操作時,通過進程通信向所述應(yīng)用程序的輔助程序發(fā)送操作請求,具體可以向上述動態(tài) 庫中的所述應(yīng)用程序的輔助程序發(fā)送操作請求。輔助程序單元42用于運行所述輔助程序, 所述輔助程序執(zhí)行所述操作請求對應(yīng)的操作,通過進程通信向所述主程序返回操作結(jié)果。 具體地,輔助程序單元42中的動態(tài)庫運行所述輔助程序,所述輔助程序執(zhí)行所述操作請求 對應(yīng)的操作,通過進程通信向所述主程序返回操作結(jié)果。
[0067] 本發(fā)明實施例三和本發(fā)明實施例四的運行應(yīng)用程序的裝置可以用于執(zhí)行上述本 發(fā)明實施例一和本發(fā)明實施例二記載的運行應(yīng)用程序的方法,其執(zhí)行方式和技術(shù)效果可以 參見本發(fā)明實施例一和本發(fā)明實施例二所述,在此不再贅述。
[0068] 在上述本發(fā)明各個實施例中,系統(tǒng)程序具體可以采用主屏幕程序(簡稱 SpringBoard)或移動電話程序(簡稱MobilePhone)或其它多種系統(tǒng)程序。
[0069] 本領(lǐng)域普通技術(shù)人員可以理解:實現(xiàn)上述各方法實施例的全部或部分步驟可以通 過程序指令相關(guān)的硬件來完成。前述的程序可以存儲于一計算機可讀取存儲介質(zhì)中。該程 序在執(zhí)行時,執(zhí)行包括上述各方法實施例的步驟;而前述的存儲介質(zhì)包括:ROM、RAM、磁碟 或者光盤等各種可以存儲程序代碼的介質(zhì)。
[0070] 最后應(yīng)說明的是:以上各實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制; 盡管參照前述各實施例對本發(fā)明進行了詳細的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其 依然可以對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分或者全部技術(shù)特征 進行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技 術(shù)方案的范圍。
【權(quán)利要求】
1. 一種運行應(yīng)用程序的方法,其特征在于,包括: 在沙盒中運行所述應(yīng)用程序的主程序,當(dāng)所述主程序需要進行具有系統(tǒng)權(quán)限的操作 時,通過進程通信向所述應(yīng)用程序的輔助程序發(fā)送操作請求; 在沙盒外運行所述應(yīng)用程序的輔助程序,所述輔助程序執(zhí)行所述操作請求對應(yīng)的操 作,通過進程通信向所述主程序返回操作結(jié)果。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于, 所述輔助程序通過掛鉤技術(shù)掛載到系統(tǒng)程序中。
3. 根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述在沙盒中運行所述應(yīng)用程序的主 程序之前,還包括: 備份系統(tǒng)程序的初始化代碼; 采用掛鉤技術(shù),將當(dāng)前的系統(tǒng)程序的初始化代碼替換為所述輔助程序的初始化代碼, 所述輔助程序的初始化代碼中包括實現(xiàn)所述輔助程序與所述主程序的進程通信的代碼; 調(diào)用備份的系統(tǒng)程序的初始化代碼; 備份系統(tǒng)程序的反初始化代碼; 采用掛鉤技術(shù),將當(dāng)前的系統(tǒng)程序的反初始化代碼替換為所述輔助程序的反初始化代 碼; 調(diào)用備份的系統(tǒng)程序的反初始化代碼。
4. 根據(jù)權(quán)利要求1所述的方法,其特征在于, 所述輔助程序為獨立運行的程序。
5. -種運行應(yīng)用程序的裝置,其特征在于,包括: 沙盒,用于運行所述應(yīng)用程序的主程序,當(dāng)所述主程序需要進行具有系統(tǒng)權(quán)限的操作 時,通過進程通信向所述應(yīng)用程序的輔助程序發(fā)送操作請求; 輔助程序單元,用于運行所述輔助程序,所述輔助程序執(zhí)行所述操作請求對應(yīng)的操作, 通過進程通信向所述主程序返回操作結(jié)果。
6. 根據(jù)權(quán)利要求5所述的裝置,其特征在于, 所述輔助程序單元為通過掛鉤技術(shù)掛載所述輔助程序的系統(tǒng)程序單元。
7. 根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述系統(tǒng)程序單元包括: 初始化子單元,用于備份系統(tǒng)程序的初始化代碼,采用掛鉤技術(shù)將當(dāng)前的系統(tǒng)程序的 初始化代碼替換為所述輔助程序的初始化代碼,所述輔助程序的初始化代碼中包括實現(xiàn)所 述輔助程序與所述主程序的進程通信的代碼,調(diào)用備份的系統(tǒng)程序的初始化代碼; 反初始化子單元,用于備份系統(tǒng)程序的反初始化代碼,采用掛鉤技術(shù)將當(dāng)前的系統(tǒng)程 序的反初始化代碼替換為所述輔助程序的反初始化代碼,調(diào)用備份的系統(tǒng)程序的反初始化 代碼。
8. 根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述輔助程序單元為獨立的程序運行單 J Li 〇
【文檔編號】G06F9/54GK104063284SQ201310086196
【公開日】2014年9月24日 申請日期:2013年3月18日 優(yōu)先權(quán)日:2013年3月18日
【發(fā)明者】陳靜聰, 李斌 申請人:騰訊科技(深圳)有限公司