r>[0041]本發(fā)明實施例提供了一種對Android應(yīng)用程序擴(kuò)展功能的方法,通過將需要擴(kuò)展功能的代碼塊和實現(xiàn)擴(kuò)展的功能的代碼塊存放在外部文件中,并用隨機(jī)代碼和調(diào)用外部文件的調(diào)用指令替換掉原來需要擴(kuò)展功能的代碼塊,從而實現(xiàn)了對Android應(yīng)用程序的功能的擴(kuò)展,提高了 Android應(yīng)用程序的開發(fā)效率。
[0042]進(jìn)一步地,本發(fā)明實施例中采用JAR格式的文件作為存放待擴(kuò)展功能的代碼塊和實現(xiàn)擴(kuò)展的功能的代碼塊的外部文件。
[0043]其中,JAR (Java Archive, Java歸檔文件)是與平臺無關(guān)的文件格式,它允許將許多文件組合成一個壓縮文件。JAR文件格式以流行的ZIP文件格式為基礎(chǔ)??杀痪幾g器、JVM (Java Virtual Machine, Java虛擬機(jī))等工具直接使用。
[0044]進(jìn)一步地,本發(fā)明實施例中,提供了一種使運行時將不被執(zhí)行的代碼塊和調(diào)用指令的代碼所占空間的總和與待擴(kuò)展功能的代碼塊所占空間相同的方法,如圖2所示,該方法包括:
[0045]步驟201:檢測所述運行時將不被執(zhí)行的代碼塊和所述調(diào)用指令的代碼所占空間的總和與所述待擴(kuò)展功能的代碼塊所占空間是否相同。
[0046]具體地,首先獲得運行時將不被執(zhí)行的代碼塊所占空間的大小,然后獲得調(diào)用指令的代碼所占空間的大小,計算運行時將不被執(zhí)行的代碼塊和調(diào)用指令的代碼所占空間的總和,判斷運行時將不被執(zhí)行的代碼塊和調(diào)用指令的代碼所占空間的總和與待擴(kuò)展功能的代碼塊所占空間是否相同。
[0047]步驟202:如果否,則對所述運行時將不被執(zhí)行的代碼塊進(jìn)行修改,使得修改后的運行時將不被執(zhí)行的代碼塊和所述調(diào)用指令的代碼所占空間的總和與所述待擴(kuò)展功能的代碼塊所占空間相同。
[0048]具體地,當(dāng)運行時將不被執(zhí)行的代碼塊和調(diào)用指令的代碼所占空間的總和與待擴(kuò)展功能的代碼塊所占空間不同時,計算運行時將不被執(zhí)行的代碼塊和調(diào)用指令的代碼所占空間的總和與待擴(kuò)展功能的代碼塊所占空間之差,根據(jù)計算的結(jié)果,對運行時將不被執(zhí)行的代碼塊中的代碼進(jìn)行增添或刪除,使得運行時將不被執(zhí)行的代碼塊和調(diào)用指令的代碼所占空間的總和與待擴(kuò)展功能的代碼塊所占空間相同。
[0049]本發(fā)明實施例提供了一種對Android應(yīng)用程序擴(kuò)展功能的裝置,如圖3所示,所述裝置包括:文件獲得模塊301,用于獲得所述Android應(yīng)用程序的安裝包中的dex文件。代碼塊獲得模塊302,用于從所述文件獲得模塊301獲得的dex文件中獲得待擴(kuò)展功能的代碼塊。構(gòu)建模塊303,用于根據(jù)用于Android系統(tǒng)的dex文件的編碼規(guī)則構(gòu)建運行時將不被執(zhí)行的代碼塊。替換模塊304,用于將所述dex文件中的待擴(kuò)展功能的代碼塊替換成所述構(gòu)建模塊303構(gòu)建的運行時將不被執(zhí)行的代碼塊。調(diào)用指令添加模塊305,用于在所述運行時將不被執(zhí)行的代碼塊的前面或者后面添加調(diào)用指令的代碼,所述調(diào)用指令調(diào)用包含所述代碼塊獲得模塊302獲得的待擴(kuò)展功能的代碼塊和實現(xiàn)擴(kuò)展的功能的代碼塊的外部文件。調(diào)整模塊306,用于使所述運行時將不被執(zhí)行的代碼塊和所述調(diào)用指令添加模塊305添加的調(diào)用指令的代碼所占空間的總和與所述待擴(kuò)展功能的代碼塊所占空間相同。
[0050]進(jìn)一步地,本發(fā)明實施例中采用JAR格式的文件作為存放待擴(kuò)展功能的代碼塊和實現(xiàn)擴(kuò)展的功能的代碼塊的外部文件。
[0051]進(jìn)一步地,如圖4所示,該對Android應(yīng)用程序擴(kuò)展功能的裝置中的調(diào)整模塊306包括:檢測模塊401,用于檢測所述運行時將不被執(zhí)行的代碼塊和所述調(diào)用指令的代碼所占空間的總和與所述待擴(kuò)展功能的代碼塊所占空間是否相同。修改模塊402,用于根據(jù)所述檢測模塊401的檢測結(jié)果,在所述運行時將不被執(zhí)行的代碼塊和所述調(diào)用指令的代碼所占空間的總和與所述待擴(kuò)展功能的代碼塊所占空間不相同時,對所述運行時將不被執(zhí)行的代碼塊進(jìn)行修改,使修改后的運行時將不被執(zhí)行的代碼塊和所述調(diào)用指令的代碼所占空間的總和與所述待擴(kuò)展功能的代碼塊所占空間相同。
[0052]本發(fā)明提供了一種對Android應(yīng)用程序擴(kuò)展功能的方法及裝置,通過將需要擴(kuò)展功能的代碼塊和實現(xiàn)擴(kuò)展的功能的代碼塊存放在外部文件中,并用隨機(jī)代碼和調(diào)用外部文件的調(diào)用指令替換掉原來需要擴(kuò)展功能的代碼塊,從而實現(xiàn)了對Android應(yīng)用程序的功能的擴(kuò)展,提高了 Android應(yīng)用程序的開發(fā)效率。
[0053]顯然,本領(lǐng)域技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以通過如上所述的裝置實施??蛇x地,本發(fā)明實施例可以用計算機(jī)裝置可執(zhí)行的程序來實現(xiàn),從而可以將它們存儲在存儲裝置中由處理器來執(zhí)行,所述的程序可以存儲于一種計算機(jī)可讀存儲介質(zhì)中,上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等;或者將它們分別制作成各個集成電路模塊,或者將它們中的多個模塊或步驟制作成單個集成電路模塊來實現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件的結(jié)合。
[0054]以上僅是針對本發(fā)明的優(yōu)選實施例及其技術(shù)原理所做的說明,而并非對本發(fā)明的技術(shù)內(nèi)容所進(jìn)行的限制,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明所公開的技術(shù)范圍內(nèi),所容易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍內(nèi)。
【主權(quán)項】
1.一種對Android應(yīng)用程序擴(kuò)展功能的方法,其特征在于,所述方法包括: 獲得所述Android應(yīng)用程序的安裝包中的dex文件; 從所述dex文件中獲得待擴(kuò)展功能的代碼塊; 根據(jù)用于Android系統(tǒng)的dex文件的編碼規(guī)則構(gòu)建運行時將不被執(zhí)行的代碼塊; 將所述dex文件中的待擴(kuò)展功能的代碼塊替換成所述運行時將不被執(zhí)行的代碼塊; 在所述運行時將不被執(zhí)行的代碼塊的前面或者后面添加調(diào)用指令的代碼,所述調(diào)用指令調(diào)用包含所述待擴(kuò)展功能的代碼塊和實現(xiàn)擴(kuò)展的功能的代碼塊的外部文件; 使所述運行時將不被執(zhí)行的代碼塊和所述調(diào)用指令的代碼所占空間的總和與所述待擴(kuò)展功能的代碼塊所占空間相同。
2.根據(jù)權(quán)利要求1所述的對Android應(yīng)用程序擴(kuò)展功能的方法,其特征在于,所述外部文件為JAR格式的文件。
3.根據(jù)權(quán)利要求1所述的對Android應(yīng)用程序擴(kuò)展功能的方法,其特征在于,所述使所述運行時將不被執(zhí)行的代碼塊和所述調(diào)用指令的代碼所占空間的總和與所述待擴(kuò)展功能的代碼塊所占空間相同,包括: 檢測所述運行時將不被執(zhí)行的代碼塊和所述調(diào)用指令的代碼所占空間的總和與所述待擴(kuò)展功能的代碼塊所占空間是否相同; 如果否,則對所述運行時將不被執(zhí)行的代碼塊進(jìn)行修改,使得修改后的在運行時將不被執(zhí)行的代碼塊和所述調(diào)用指令的代碼所占空間的總和與所述待擴(kuò)展功能的代碼塊所占空間相同。
4.一種對Android應(yīng)用程序擴(kuò)展功能的裝置,其特征在于,所述裝置包括: 文件獲得模塊,用于獲得所述Android應(yīng)用程序的安裝包中的dex文件; 代碼塊獲得模塊,用于從所述文件獲得模塊獲得的dex文件中獲得待擴(kuò)展功能的代碼塊; 構(gòu)建模塊,用于根據(jù)用于Android系統(tǒng)的dex文件的編碼規(guī)則構(gòu)建運行時將不被執(zhí)行的代碼塊; 替換模塊,用于將所述dex文件中的待擴(kuò)展功能的代碼塊替換成所述構(gòu)建模塊構(gòu)建的運行時將不被執(zhí)行的代碼塊; 調(diào)用指令添加模塊,用于在所述運行時將不被執(zhí)行的代碼塊的前面或者后面添加調(diào)用指令的代碼,所述調(diào)用指令調(diào)用包含所述代碼塊獲得模塊獲得的待擴(kuò)展功能的代碼塊和實現(xiàn)擴(kuò)展的功能的代碼塊的外部文件; 調(diào)整模塊,用于使所述運行時將不被執(zhí)行的代碼塊和所述調(diào)用指令的代碼所占空間的總和與所述待擴(kuò)展功能的代碼塊所占空間相同。
5.根據(jù)權(quán)利要求4所述的對Android應(yīng)用程序擴(kuò)展功能的裝置,其特征在于,所述外部文件為JAR格式的文件。
6.根據(jù)權(quán)利要求4所述的對Android應(yīng)用程序擴(kuò)展功能的裝置,其特征在于,所述調(diào)整模塊包括: 檢測模塊,用于檢測所述運行時將不被執(zhí)行的代碼塊和所述調(diào)用指令的代碼所占空間的總和與所述待擴(kuò)展功能的代碼塊所占空間是否相同; 修改模塊,用于根據(jù)所述檢測模塊的檢測結(jié)果,在所述運行時將不被執(zhí)行的代碼塊和所述調(diào)用指令的代碼所占空間的總和與所述待擴(kuò)展功能的代碼塊所占空間不相同時,對所述運行時將不被執(zhí)行的代碼塊進(jìn)行修改,使修改后的在運行時將不被執(zhí)行的代碼塊和所述調(diào)用指令的代碼所占空間的總和與所述待擴(kuò)展功能的代碼塊所占空間相同。
【專利摘要】本發(fā)明公開了一種對Android應(yīng)用程序擴(kuò)展功能的方法及裝置,涉及計算機(jī)軟件技術(shù)領(lǐng)域,具體涉及軟件的功能擴(kuò)展技術(shù),通過將需要擴(kuò)展功能的代碼塊和實現(xiàn)擴(kuò)展的功能的代碼塊存放在外部文件中,并用隨機(jī)代碼和調(diào)用外部文件的調(diào)用指令替換需要擴(kuò)展功能的代碼塊,實現(xiàn)了對Android應(yīng)用程序的功能的擴(kuò)展,提高了程序開發(fā)的效率。該方法包括:獲得Android應(yīng)用程序的dex文件;獲得待擴(kuò)展功能的代碼塊;將待擴(kuò)展功能的代碼塊替換成運行時將不被執(zhí)行的代碼塊;添加調(diào)用指令;使運行時將不被執(zhí)行的代碼塊和調(diào)用指令的代碼所占空間總和與待擴(kuò)展功能的代碼塊所占空間相同。本發(fā)明主要用于對Android系統(tǒng)應(yīng)用程序進(jìn)行功能擴(kuò)展。
【IPC分類】G06F9-44
【公開號】CN104866293
【申請?zhí)枴緾N201410064973
【發(fā)明人】閻文斌
【申請人】北京娜迦信息科技發(fā)展有限公司
【公開日】2015年8月26日
【申請日】2014年2月25日