国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種對(duì)Android應(yīng)用程序擴(kuò)展功能的方法及裝置的制造方法

      文檔序號(hào):8543500閱讀:224來源:國知局
      一種對(duì)Android應(yīng)用程序擴(kuò)展功能的方法及裝置的制造方法
      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明涉及計(jì)算機(jī)軟件技術(shù)領(lǐng)域,具體涉及軟件的功能擴(kuò)展技術(shù),尤其涉及一種對(duì)Android應(yīng)用程序擴(kuò)展功能的方法及裝置。
      【背景技術(shù)】
      [0002]隨著手機(jī)與平板電腦等移動(dòng)終端的迅速發(fā)展,主要應(yīng)用于移動(dòng)終端的Android系統(tǒng)也得到了越來越快速的推廣,使得很多基于Android系統(tǒng)的應(yīng)用程序越來越豐富。
      [0003]當(dāng)需要對(duì)Android系統(tǒng)的應(yīng)用程序進(jìn)行功能擴(kuò)展時(shí),針對(duì)Android系統(tǒng)的應(yīng)用程序安裝包中的dex文件,需要將實(shí)現(xiàn)擴(kuò)展功能的代碼塊加入到dex文件中,但是,由于dex文件的結(jié)構(gòu)關(guān)系,(例如,dex文件頭包括校驗(yàn)以及其他結(jié)構(gòu)的偏移地址和長度信息等),如果直接根據(jù)需要將實(shí)現(xiàn)擴(kuò)展功能的代碼塊插入dex文件中,代碼的長度會(huì)發(fā)生變化,從而引起其他結(jié)構(gòu)偏移地址和長度信息等信息發(fā)生變化,導(dǎo)致dex文件在被執(zhí)行時(shí)出錯(cuò),無法實(shí)現(xiàn)對(duì)Android應(yīng)用程序的功能的擴(kuò)展,因此,在需要對(duì)Android系統(tǒng)的應(yīng)用程序擴(kuò)展功能時(shí),只能重新構(gòu)建一個(gè)新的dex文件,將實(shí)現(xiàn)擴(kuò)展功能的代碼塊加入到新的dex文件中,從而耗費(fèi)大量的時(shí)間和人力,降低了效率。

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

      [0004]有鑒于此,本發(fā)明實(shí)施例提供了一種對(duì)Android應(yīng)用程序擴(kuò)展功能的方法及裝置,來解決以上【背景技術(shù)】部分提到的技術(shù)問題。
      [0005]一方面,本發(fā)明實(shí)施例提供了一種對(duì)Android應(yīng)用程序擴(kuò)展功能的方法,所述方法包括:
      [0006]獲得所述Android應(yīng)用程序的安裝包中的dex文件;
      [0007]從所述dex文件中獲得待擴(kuò)展功能的代碼塊;
      [0008]根據(jù)用于Android系統(tǒng)的dex文件的編碼規(guī)則構(gòu)建運(yùn)行時(shí)將不被執(zhí)行的代碼塊;
      [0009]將所述dex文件中的待擴(kuò)展功能的代碼塊替換成所述運(yùn)行時(shí)將不被執(zhí)行的代碼塊;
      [0010]在所述運(yùn)行時(shí)將不被執(zhí)行的代碼塊的前面或者后面添加調(diào)用指令的代碼,所述調(diào)用指令調(diào)用包含所述待擴(kuò)展功能的代碼塊和實(shí)現(xiàn)擴(kuò)展的功能的代碼塊的外部文件;
      [0011]使所述運(yùn)行時(shí)將不被執(zhí)行的代碼塊和所述調(diào)用指令的代碼所占空間的總和與所述待擴(kuò)展功能的代碼塊所占空間相同。
      [0012]另一方面,本發(fā)明實(shí)施例提供了一種對(duì)Android應(yīng)用程序擴(kuò)展功能的裝置,所述裝置包括:
      [0013]文件獲得模塊,用于獲得所述Android應(yīng)用程序的安裝包中的dex文件;
      [0014]代碼塊獲得模塊,用于從所述文件獲得模塊獲得的dex文件中獲得待擴(kuò)展功能的代碼塊;
      [0015]構(gòu)建模塊,用于根據(jù)用于Android系統(tǒng)的dex文件的編碼規(guī)則構(gòu)建運(yùn)行時(shí)將不被執(zhí)行的代碼塊;
      [0016]替換模塊,用于將所述dex文件中的待擴(kuò)展功能的代碼塊替換成所述構(gòu)建模塊構(gòu)建的運(yùn)行時(shí)將不被執(zhí)行的代碼塊;
      [0017]調(diào)用指令添加模塊,用于在所述運(yùn)行時(shí)將不被執(zhí)行的代碼塊的前面或者后面添加調(diào)用指令的代碼,所述調(diào)用指令調(diào)用包含所述代碼塊獲得模塊獲得的待擴(kuò)展功能的代碼塊和實(shí)現(xiàn)擴(kuò)展的功能的代碼塊的外部文件;
      [0018]調(diào)整模塊,用于使所述運(yùn)行時(shí)將不被執(zhí)行的代碼塊和所述調(diào)用指令添加模塊添加的調(diào)用指令的代碼所占空間的總和與所述待擴(kuò)展功能的代碼塊所占空間相同。
      [0019]本發(fā)明提供了一種對(duì)Android應(yīng)用程序擴(kuò)展功能的方法及裝置,通過將需要擴(kuò)展功能的代碼塊和實(shí)現(xiàn)擴(kuò)展的功能的代碼塊存放在外部文件中,并用隨機(jī)代碼和調(diào)用外部文件的調(diào)用指令替換掉原來需要擴(kuò)展功能的代碼塊,從而實(shí)現(xiàn)了對(duì)Android應(yīng)用程序的功能的擴(kuò)展,提高了對(duì)Android應(yīng)用程序開發(fā)的效率。
      【附圖說明】
      [0020]圖1是本發(fā)明實(shí)施例提供的一種對(duì)Android應(yīng)用程序擴(kuò)展功能的方法流程圖;
      [0021]圖2是本發(fā)明實(shí)施例提供的一種使運(yùn)行時(shí)將不被執(zhí)行的代碼塊和調(diào)用指令的代碼所占空間的總和與待擴(kuò)展功能的代碼塊所占空間相同的方法流程圖;
      [0022]圖3是本發(fā)明實(shí)施例提供的一種對(duì)Android應(yīng)用程序擴(kuò)展功能的裝置組成框圖;
      [0023]圖4是本發(fā)明實(shí)施例提供的一種使運(yùn)行時(shí)將不被執(zhí)行的代碼塊和調(diào)用指令的代碼所占空間的總和與待擴(kuò)展功能的代碼塊所占空間相同的裝置組成框圖。
      【具體實(shí)施方式】
      [0024]為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步的詳細(xì)說明。可以理解的是,此處所描述的具體實(shí)施例,僅僅用于解釋本發(fā)明,而非對(duì)本發(fā)明的限定。
      [0025]本發(fā)明實(shí)施例提供了一種對(duì)Android應(yīng)用程序擴(kuò)展功能的方法,如圖1所示,該方法包括如下步驟:
      [0026]步驟101:獲得所述Android應(yīng)用程序的安裝包中的dex文件。
      [0027]其中,Android是一種基于Linux的開放源代碼的操作系統(tǒng),主要用于移動(dòng)設(shè)備,如智能手機(jī)和平板電腦。Android應(yīng)用程序的安裝包為APKXAndroid Package, Android安裝包),使用Android打包工具將dex文件,資源文件以及Android Manifest, xml文件組合獲得APK文件。APK文件其實(shí)是zip格式,但后綴名被修改為apk,可以通過UnZip對(duì)APK文件直接進(jìn)行解壓。其中,dex文件是一種Android平臺(tái)上可執(zhí)行文件的類型,可以直接在Dalvik虛擬機(jī)中加載運(yùn)行。
      [0028]具體地,本發(fā)明實(shí)施例通過UnZip對(duì)需要擴(kuò)展功能的Android應(yīng)用程序的APK文件直接進(jìn)行解壓,獲得其dex文件。
      [0029]步驟102:從所述dex文件中獲得待擴(kuò)展功能的代碼塊。
      [0030]具體地,首先從dex文件中查找到需要執(zhí)行具有擴(kuò)展功能的代碼塊的位置,然后根據(jù)需要執(zhí)行具有擴(kuò)展功能的代碼塊的位置選取待擴(kuò)展功能的代碼塊。具體地,可以選取該位置前面的代碼塊作為待擴(kuò)展功能的代碼塊,也可以選取該位置后面的代碼塊作為待擴(kuò)展功能的代碼塊,還可以選取該位置前面以及后面的代碼塊作為待擴(kuò)展功能的代碼塊,當(dāng)然,具體采用哪種選取方式,本發(fā)明實(shí)施例對(duì)此不進(jìn)行限制。在選取了待擴(kuò)展功能的代碼塊后,獲得待擴(kuò)展功能的代碼塊在dex文件中的位置信息,同時(shí)獲得待擴(kuò)展功能的代碼塊。
      [0031]步驟103:根據(jù)用于Android系統(tǒng)的dex文件的編碼規(guī)則構(gòu)建運(yùn)行時(shí)將不被執(zhí)行的代碼塊。
      [0032]其中,將運(yùn)行時(shí)不被執(zhí)行的代碼塊插入到dex文件中,當(dāng)程序運(yùn)行到該代碼時(shí),該代碼不被執(zhí)行,但也不會(huì)影響原程序的運(yùn)行。
      [0033]具體地,在本發(fā)明的一種實(shí)施方式中,首先根據(jù)用于Android系統(tǒng)的dex文件的編碼規(guī)則,構(gòu)建大量運(yùn)行時(shí)將不被執(zhí)行的代碼塊,然后將這些代碼塊存儲(chǔ)在預(yù)定的數(shù)據(jù)庫中,在需要使用運(yùn)行時(shí)將不被執(zhí)行的代碼塊時(shí),從預(yù)定的數(shù)據(jù)庫中隨機(jī)提取代碼塊。在本發(fā)明的另一種實(shí)施方式中,采用和用于Android系統(tǒng)的dex文件的編碼規(guī)則相對(duì)應(yīng)的隨機(jī)代碼生成器隨機(jī)生成運(yùn)行時(shí)將不被執(zhí)行的代碼塊,在需要運(yùn)行時(shí)將不被執(zhí)行的代碼塊時(shí),直接由隨機(jī)代碼生成器構(gòu)建所需代碼塊。需要說明的是,具體采用哪種方式獲得運(yùn)行時(shí)將不被執(zhí)行的代碼塊,本發(fā)明實(shí)施例對(duì)此均不進(jìn)行限制。
      [0034]步驟104:將所述dex文件中的待擴(kuò)展功能的代碼塊替換成所述運(yùn)行時(shí)將不被執(zhí)行的代碼塊。
      [0035]具體地,根據(jù)待擴(kuò)展功能的代碼塊在dex文件中的位置信息,將該dex文件中的待擴(kuò)展功能的代碼塊替換成運(yùn)行時(shí)將不被執(zhí)行的代碼塊。
      [0036]步驟105:在所述運(yùn)行時(shí)將不被執(zhí)行的代碼塊的前面或者后面添加調(diào)用指令的代碼,所述調(diào)用指令調(diào)用包含所述待擴(kuò)展功能的代碼塊和實(shí)現(xiàn)擴(kuò)展的功能的代碼塊的外部文件。
      [0037]具體地,首先將待擴(kuò)展功能的代碼塊和實(shí)現(xiàn)擴(kuò)展的功能的代碼塊存放在同一個(gè)外部文件中,然后將該外部文件存儲(chǔ)到指定位置,記錄下存儲(chǔ)該外部文件的地址以及待擴(kuò)展功能的代碼塊和實(shí)現(xiàn)擴(kuò)展的功能的代碼塊在該外部文件中的存放地址。根據(jù)存儲(chǔ)該外部文件的地址以及待擴(kuò)展功能的代碼塊和實(shí)現(xiàn)擴(kuò)展的功能的代碼塊在該外部文件中的存放地址,為所述dex文件構(gòu)建調(diào)用該外部文件的調(diào)用指令,將這個(gè)調(diào)用指令的代碼添加到所述dex文件中相應(yīng)的位置處。
      [0038]步驟106:使所述運(yùn)行時(shí)將不被執(zhí)行的代碼塊和所述調(diào)用指令的代碼所占空間的總和與所述待擴(kuò)展功能的代碼塊所占空間相同。
      [0039]其中,由于dex文件的結(jié)構(gòu)關(guān)系(例如,dex文件頭包括校驗(yàn)以及其他結(jié)構(gòu)的偏移地址和長度信息等),所以,不能直接根據(jù)需要對(duì)dex文件中的代碼進(jìn)行修改、添加或者刪除,否則,代碼所占空間(代碼的長度)發(fā)生變化會(huì)引起其他結(jié)構(gòu)偏移地址和長度信息等信息發(fā)生變化,當(dāng)dex文件被執(zhí)行時(shí)就會(huì)出錯(cuò)。因此,還要保證所述運(yùn)行時(shí)將不被執(zhí)行的代碼塊和調(diào)用指令的代碼所占空間的總和與原dex文件中待擴(kuò)展功能的代碼塊所占空間相同。
      [0040]完成以上步驟后,當(dāng)程序運(yùn)行到運(yùn)行時(shí)將不被執(zhí)行的代碼塊和調(diào)用指令的位置處時(shí),程序直接啟動(dòng)調(diào)用指令,查找存放待擴(kuò)展功能的代碼塊和實(shí)現(xiàn)擴(kuò)展的功能的代碼塊的外部文件,并查找到與該位置處相應(yīng)的待擴(kuò)展功能的代碼塊和實(shí)現(xiàn)擴(kuò)展的功能的代碼塊,執(zhí)行待擴(kuò)展功能的代碼塊和實(shí)現(xiàn)擴(kuò)展的功能的代碼塊。
      當(dāng)前第1頁1 2 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1