国产精品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>

      動(dòng)態(tài)加載安卓類的方法

      文檔序號(hào):6543782閱讀:112來(lái)源:國(guó)知局
      動(dòng)態(tài)加載安卓類的方法
      【專利摘要】本發(fā)明涉及智能終端計(jì)算。本發(fā)明針對(duì)現(xiàn)有技術(shù)中在Android的Dalvik虛擬機(jī)中,只能調(diào)用本地靜態(tài)方法,無(wú)法像Java中那樣方便的實(shí)現(xiàn)動(dòng)態(tài)加載類的問(wèn)題,提供一種動(dòng)態(tài)加載安卓類的方法,首先,系統(tǒng)設(shè)定動(dòng)態(tài)加載入口;然后,系統(tǒng)通過(guò)配置動(dòng)態(tài)加載環(huán)境,并通過(guò)安卓中的Dex類加載器實(shí)現(xiàn)安卓類的動(dòng)態(tài)加載;最后,系統(tǒng)通過(guò)讀取動(dòng)態(tài)加載入口配置實(shí)現(xiàn)應(yīng)用跳轉(zhuǎn),并使用反射來(lái)啟動(dòng)加載類。通過(guò)安卓中的Dex類加載器實(shí)現(xiàn)安卓類的動(dòng)態(tài)加載,可以動(dòng)態(tài)加載含有Android類的Dalvik字節(jié)碼,實(shí)現(xiàn)插件式軟件架構(gòu)的開發(fā),可以以此實(shí)現(xiàn)自定義控件、動(dòng)態(tài)加載應(yīng)用甚至是應(yīng)用加密等功能。適用于動(dòng)態(tài)加載安卓類的方法。
      【專利說(shuō)明】動(dòng)態(tài)加載安卓類的方法
      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明涉及智能終端計(jì)算,特別涉及動(dòng)態(tài)加載安卓類的方法。
      【背景技術(shù)】
      [0002]安卓,(以下簡(jiǎn)稱Android)是一種基于Linux的自由開放源代碼的操作系統(tǒng),最初由Andy Rubin開發(fā),2005年8月被Google收購(gòu)注資。2007年11月,Google聯(lián)合軟硬件開發(fā)商及電信運(yùn)營(yíng)商組建開放手機(jī)聯(lián)盟。至2012年11止,Android已占據(jù)全球智能手機(jī)操作市場(chǎng)76%份額,在中國(guó)市場(chǎng)占有率為90%。
      [0003]Android應(yīng)用開發(fā)具有簡(jiǎn)潔易上手的特點(diǎn),在一般情況下,其常規(guī)的開發(fā)方式與代碼結(jié)構(gòu)就能夠滿足大多數(shù)開發(fā)需求。但是,在某些情況下,需要一種插件式軟件架構(gòu)的開發(fā),以實(shí)現(xiàn)自定義控件、動(dòng)態(tài)加載插件甚至是應(yīng)用加密等功能,使得我們可以靈活的加載執(zhí)行的類。
      [0004]在標(biāo)準(zhǔn)的Java虛擬機(jī)中,類加載可以從Class文件中讀取,也可是其他二進(jìn)制流,從而將對(duì)應(yīng)類加載到內(nèi)存中,供程序運(yùn)行調(diào)用,通常會(huì)使用繼承自加載器(以下簡(jiǎn)稱ClassLoader)的類加載器。然而在Android的Dalvik虛擬機(jī)中,這種方式只能調(diào)用本地靜態(tài)方法,無(wú)法像Java中那樣方便的實(shí)現(xiàn)動(dòng)態(tài)加載類。

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

      [0005]本發(fā)明所要解決的技術(shù)問(wèn)題,就是提供一種動(dòng)態(tài)加載安卓類的方法,以達(dá)到可以動(dòng)態(tài)加載并執(zhí)行另外一個(gè)單獨(dú)存在的Dalvik字節(jié)碼文件的效果。
      [0006]本發(fā)明解決所述技術(shù)問(wèn)題,采用的技術(shù)方案是,動(dòng)態(tài)加載安卓類的方法,包括以下幾個(gè)步驟:
      [0007]步驟1、系統(tǒng)設(shè)定動(dòng)態(tài)加載入口;
      [0008]步驟2、系統(tǒng)通過(guò)配置動(dòng)態(tài)加載環(huán)境,并通過(guò)安卓中的Dex類加載器實(shí)現(xiàn)安卓類的動(dòng)態(tài)加載;
      [0009]步驟3、系統(tǒng)通過(guò)讀取動(dòng)態(tài)加載入口配置實(shí)現(xiàn)應(yīng)用跳轉(zhuǎn),并使用反射來(lái)啟動(dòng)加載類。
      [0010]具體的,所述步驟I中,系統(tǒng)設(shè)定動(dòng)態(tài)加載入口,包括配置加載Dalvik字節(jié)碼文件的類信息及待加載Dalvik字節(jié)碼文件的類信息,所述加載Dalvik字節(jié)碼文件,計(jì)為A,所述待加載Dalvik字節(jié)碼文件,計(jì)為B。
      [0011]進(jìn)一步的,所述配置文件A的類信息,包括修改安卓配置文件中應(yīng)用標(biāo)簽下name屬性為文件A的應(yīng)用類名。
      [0012]進(jìn)一步的,所述配置文件B的類信息,包括在安卓配置文件中的應(yīng)用標(biāo)簽后插入meta-data標(biāo)簽,所述meta-data有兩個(gè)屬性,分別為name和value,其中name值設(shè)定為C,value值為文件B的應(yīng)用類名。
      [0013]進(jìn)一步的,所述步驟2包括以下步驟:[0014]步驟21、配置動(dòng)態(tài)加載環(huán)境;配置動(dòng)態(tài)加載環(huán)境,即利用Java反射機(jī)制,調(diào)用安卓系統(tǒng)啟動(dòng)進(jìn)程及當(dāng)前運(yùn)行進(jìn)程的方法;
      [0015]步驟22、配置Dex類加載器的相關(guān)參數(shù),包括文件B的路徑及其庫(kù)文件路徑,修改系統(tǒng)組件類加載器的父元素為Dex類加載器,實(shí)現(xiàn)動(dòng)態(tài)加載文件B中的安卓類。
      [0016]進(jìn)一步的,所述步驟21中,通過(guò)利用Java反射機(jī)制,調(diào)用安卓系統(tǒng)啟動(dòng)進(jìn)程及當(dāng)前運(yùn)行進(jìn)程的方法配置動(dòng)態(tài)加載環(huán)境。
      [0017]進(jìn)一步的,所述步驟3包括以下步驟:
      [0018]步驟301:系統(tǒng)讀取動(dòng)態(tài)加載入口配置,返回meta-data標(biāo)簽下name屬性值為C的value值,返回值,計(jì)為D ;
      [0019]步驟302:系統(tǒng)配置當(dāng)前進(jìn)程、應(yīng)用及應(yīng)用類信息;
      [0020]步驟303:系統(tǒng)獲取文件A的應(yīng)用類;
      [0021]步驟304:系統(tǒng)讀取當(dāng)前進(jìn)程的應(yīng)用列表;
      [0022]步驟305:系統(tǒng)在當(dāng)前進(jìn)程的應(yīng)用列表中移除文件A的應(yīng)用類;
      [0023]步驟306:系統(tǒng)創(chuàng)建文件B的應(yīng)用類信息;
      [0024]步驟307:系統(tǒng)利用D值加載文件B的應(yīng)用類信息;
      [0025]步驟308:系統(tǒng)獲取文件B的應(yīng)用類;
      [0026]步驟309:系統(tǒng)創(chuàng)建文件B進(jìn)程的容器映射;
      [0027]步驟310:系統(tǒng)創(chuàng)建迭代器遍歷B進(jìn)程的容器映射;
      [0028]步驟311:系統(tǒng)啟動(dòng)文件B的應(yīng)用類。
      [0029]本發(fā)明的有益效果是,通過(guò)安卓中的Dex類加載器實(shí)現(xiàn)安卓類的動(dòng)態(tài)加載,可以動(dòng)態(tài)加載含有Android類的Dalvik字節(jié)碼,實(shí)現(xiàn)插件式軟件架構(gòu)的開發(fā),可以以此實(shí)現(xiàn)自定義控件、動(dòng)態(tài)加載應(yīng)用甚至是應(yīng)用加密等功能。
      【專利附圖】

      【附圖說(shuō)明】
      [0030]圖1為本發(fā)明動(dòng)態(tài)加載安卓類的方法實(shí)施例的流程圖;
      [0031]圖2為本發(fā)明動(dòng)態(tài)加載安卓類的方法實(shí)施例的反射使用加載類流程圖。
      【具體實(shí)施方式】
      [0032]下面結(jié)合附圖及實(shí)施例詳細(xì)描述本發(fā)明的技術(shù)方案:
      [0033]本發(fā)明針對(duì)現(xiàn)有技術(shù)中在Android的Dalvik虛擬機(jī)中,只能調(diào)用本地靜態(tài)方法,無(wú)法像Java中那樣方便的實(shí)現(xiàn)動(dòng)態(tài)加載類的問(wèn)題,提供一種動(dòng)態(tài)加載安卓類的方法,首先,系統(tǒng)設(shè)定動(dòng)態(tài)加載入口 ;然后,系統(tǒng)通過(guò)配置動(dòng)態(tài)加載環(huán)境,并通過(guò)安卓中的Dex類加載器實(shí)現(xiàn)安卓類的動(dòng)態(tài)加載;最后,系統(tǒng)通過(guò)讀取動(dòng)態(tài)加載入口配置實(shí)現(xiàn)應(yīng)用跳轉(zhuǎn),并使用反射來(lái)啟動(dòng)加載類。通過(guò)安卓中的Dex類加載器實(shí)現(xiàn)安卓類的動(dòng)態(tài)加載,可以動(dòng)態(tài)加載含有Android類的Dalvik字節(jié)碼,實(shí)現(xiàn)插件式軟件架構(gòu)的開發(fā),可以以此實(shí)現(xiàn)自定義控件、動(dòng)態(tài)加載應(yīng)用甚至是應(yīng)用加密等功能。
      [0034]實(shí)施例
      [0035]為了更好的闡述和理解本發(fā)明的思想,本例以流程圖的方式進(jìn)行進(jìn)一步的闡述。
      [0036]本例提供一種動(dòng)態(tài)加載Android類的方案,可以動(dòng)態(tài)加載含有Android類的Dalvik字節(jié)碼,如圖1所示,具體包括以下步驟:
      [0037]步驟1、設(shè)定動(dòng)態(tài)加載入口:
      [0038]Android系統(tǒng)中的程序是由不同組件構(gòu)成的,系統(tǒng)僅在其需要時(shí)才會(huì)啟動(dòng)該程序組件,因此動(dòng)態(tài)加載必須在系統(tǒng)啟動(dòng)組件之前完成入口的設(shè)定,而應(yīng)用作為整個(gè)應(yīng)用的上下文,會(huì)被系統(tǒng)第一時(shí)間調(diào)用,通過(guò)修改Android安裝包中安卓配置文件可以實(shí)現(xiàn)動(dòng)態(tài)加載入口的設(shè)定,為方便描述,假設(shè)加載Dalvik字節(jié)碼文件為A,待加載Dalvik字節(jié)碼文件為B0
      [0039]具體的,其中修改步驟如下:
      [0040]步驟101:配置文件A的類信息,修改安卓配置文件中應(yīng)用標(biāo)簽下name屬性為文件A中的應(yīng)用類名。
      [0041]步驟102:配置文件B的類信息,在應(yīng)用標(biāo)簽后插入meta-data標(biāo)簽,meta-data有兩個(gè)屬性,分別為name和value,其中name值設(shè)定為C, value值為文件B中的應(yīng)用類名。
      [0042]步驟2、動(dòng)態(tài)加載Android類:
      [0043]通過(guò)配置動(dòng)態(tài)加載環(huán)境,并通過(guò)Android中的Dex類加載器的方法實(shí)現(xiàn)Android類的動(dòng)態(tài)加載,其中具體步驟如下:
      [0044]步驟201:配置動(dòng)態(tài)加載環(huán)境,即當(dāng)前活動(dòng)進(jìn)程的相關(guān)配置;
      [0045]步驟202:配置Dex類加載器方法相關(guān)參數(shù),包括文件B的路徑及其Iib文件路徑,修改系統(tǒng)組件類加載器的父元素為Dex類加載器,實(shí)現(xiàn)動(dòng)態(tài)加載文件B中的Android類。
      [0046]步驟3、通過(guò)反射啟動(dòng)加載類:
      [0047]動(dòng)態(tài)加載后的Android類并不能直接使用,通過(guò)讀取入口配置實(shí)現(xiàn)應(yīng)用跳轉(zhuǎn),并使用反射來(lái)啟動(dòng)加載類,如圖2所示,其中具體步驟如下:
      [0048]步驟301:系統(tǒng)讀取動(dòng)態(tài)加載入口配置,返回meta-data標(biāo)簽下name屬性值為C的value值,返回值,計(jì)為D ;
      [0049]步驟302:系統(tǒng)配置當(dāng)前進(jìn)程、應(yīng)用及應(yīng)用類信息;
      [0050]步驟303:系統(tǒng)獲取文件A的應(yīng)用類;
      [0051]步驟304:系統(tǒng)讀取當(dāng)前進(jìn)程的應(yīng)用列表;
      [0052]步驟305:系統(tǒng)在當(dāng)前進(jìn)程的應(yīng)用列表中移除文件A的應(yīng)用類;
      [0053]步驟306:系統(tǒng)創(chuàng)建文件B的應(yīng)用類信息;
      [0054]步驟307:系統(tǒng)利用D值加載文件B的應(yīng)用類信息;
      [0055]步驟308:系統(tǒng)獲取文件B的應(yīng)用類;
      [0056]步驟309:系統(tǒng)創(chuàng)建文件B進(jìn)程的容器映射;
      [0057]步驟310:系統(tǒng)創(chuàng)建迭代器遍歷B進(jìn)程的容器映射;
      [0058]步驟311:系統(tǒng)啟動(dòng)文件B的應(yīng)用類。
      [0059]本方法在Android平臺(tái)下實(shí)現(xiàn)了插件式的軟件開發(fā)架構(gòu),可對(duì)Android類進(jìn)行動(dòng)態(tài)加載并執(zhí)行,可以根據(jù)開發(fā)需求靈活實(shí)現(xiàn)自定義控件、動(dòng)態(tài)加載代碼甚至是應(yīng)用加密等功能。
      【權(quán)利要求】
      1.動(dòng)態(tài)加載安卓類的方法,其特征在于,包括以下幾個(gè)步驟: 步驟1、系統(tǒng)設(shè)定動(dòng)態(tài)加載入口 ; 步驟2、系統(tǒng)通過(guò)配置動(dòng)態(tài)加載環(huán)境,并通過(guò)安卓中的Dex類加載器實(shí)現(xiàn)安卓類的動(dòng)態(tài)加載; 步驟3、系統(tǒng)通過(guò)讀取動(dòng)態(tài)加載入口配置實(shí)現(xiàn)應(yīng)用跳轉(zhuǎn),并使用反射來(lái)啟動(dòng)加載類。
      2.根據(jù)權(quán)利要求1所述的動(dòng)態(tài)加載安卓類的方法,其特征在于,所述步驟I中,系統(tǒng)設(shè)定動(dòng)態(tài)加載入口,包括配置加載Dalvik字節(jié)碼文件的類信息及待加載Dalvik字節(jié)碼文件的類信息,所述加載Dalvik字節(jié)碼文件,計(jì)為A,所述待加載Dalvik字節(jié)碼文件,計(jì)為B。
      3.根據(jù)權(quán)利要求2所述的動(dòng)態(tài)加載安卓類的方法,其特征在于,所述配置文件A的類信息,包括修改安卓配置文件中應(yīng)用標(biāo)簽下name屬性為文件A的應(yīng)用類名。
      4.根據(jù)權(quán)利要求2所述的動(dòng)態(tài)加載安卓類的方法,其特征在于,所述配置文件B的類信息,包括在安卓配置文件中的應(yīng)用標(biāo)簽后插入meta-data標(biāo)簽,所述meta-data有兩個(gè)屬性,分別為name和value,其中name值設(shè)定為C, value值為文件B的應(yīng)用類名。
      5.根據(jù)權(quán)利要求2所述的動(dòng)態(tài)加載安卓類的方法,其特征在于,所述步驟2包括以下步驟: 步驟21、配置動(dòng)態(tài)加載環(huán)境;配置動(dòng)態(tài)加載環(huán)境,即利用Java反射機(jī)制,調(diào)用安卓系統(tǒng)啟動(dòng)進(jìn)程及當(dāng)前運(yùn)行進(jìn)程的方法; 步驟22、配置Dex類加載器的相關(guān)參數(shù),包括文件B的路徑及其庫(kù)文件路徑,修改系統(tǒng)組件類加載器的父元素為Dex類加載器,實(shí)現(xiàn)動(dòng)態(tài)加載文件B中的安卓類。
      6.根據(jù)權(quán)利要求5所述的動(dòng)態(tài)加載安卓類的方法,其特征在于,所述步驟21中,通過(guò)利用Java反射機(jī)制,調(diào)用安卓系統(tǒng)啟動(dòng)進(jìn)程及當(dāng)前運(yùn)行進(jìn)程的方法配置動(dòng)態(tài)加載環(huán)境。
      7.根據(jù)權(quán)利要求2所述的動(dòng)態(tài)加載安卓類的方法,其特征在于,所述步驟3包括以下步驟: 步驟301:系統(tǒng)讀取動(dòng)態(tài)加載入口配置,返回meta-data標(biāo)簽下name屬性值為C的value值,返回值,計(jì)為D ; 步驟302:系統(tǒng)配置當(dāng)前進(jìn)程、應(yīng)用及應(yīng)用類信息; 步驟303:系統(tǒng)獲取文件A的應(yīng)用類; 步驟304:系統(tǒng)讀取當(dāng)前進(jìn)程的應(yīng)用列表; 步驟305:系統(tǒng)在當(dāng)前進(jìn)程的應(yīng)用列表中移除文件A的應(yīng)用類; 步驟306:系統(tǒng)創(chuàng)建文件B的應(yīng)用類信息; 步驟307:系統(tǒng)利用D值加載文件B的應(yīng)用類信息; 步驟308:系統(tǒng)獲取文件B的應(yīng)用類; 步驟309:系統(tǒng)創(chuàng)建文件B進(jìn)程的容器映射; 步驟310:系統(tǒng)創(chuàng)建迭代器遍歷B進(jìn)程的容器映射; 步驟311:系統(tǒng)啟動(dòng)文件B的應(yīng)用類。
      【文檔編號(hào)】G06F9/445GK103970563SQ201410150636
      【公開日】2014年8月6日 申請(qǐng)日期:2014年4月15日 優(yōu)先權(quán)日:2014年4月15日
      【發(fā)明者】譚源泉, 張 浩, 康紅娟, 王艷艷 申請(qǐng)人:四川長(zhǎng)虹電器股份有限公司
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1