欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于Android系統(tǒng)的框架代碼修改方法及裝置的制造方法

文檔序號:8412327閱讀:343來源:國知局
一種基于Android系統(tǒng)的框架代碼修改方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及Android技術(shù)領(lǐng)域,尤其涉及一種基于Android系統(tǒng)的框架代碼修改方法及裝置。
【背景技術(shù)】
[0002]Android是谷歌推出的一種智能的移動終端操作系統(tǒng)。在Android實際開發(fā)過程中,往往都會有一些因針對Android框架中原有功能或職責(zé)的拓展而導(dǎo)致的源碼修改。
[0003]從代碼角度看,如果要對原生的Android框架做修改,那么最佳的方式就是以類擴(kuò)展的形式進(jìn)行修改。但是這樣修改的話,遇到訪問權(quán)限的問題就必須修改原生的類文件,增加接口或是修改原本的訪問權(quán)限,這樣的修改不但偏離了谷歌的設(shè)計理念,而且最后也會把Android的源碼改得面目全非,對于后續(xù)的平臺版本升級來說既費時又費力并且危險。
[0004]從實際的開發(fā)角度出發(fā),類擴(kuò)展的形式首先需要考驗到開發(fā)者的設(shè)計能力,而且對于小的功能增加或修改來說無疑是太過復(fù)雜,并且用類擴(kuò)展的形式?jīng)]有直接在源代碼中修改來的直觀,因此在實際的開發(fā)過程中也不太適用類擴(kuò)展的形式來拓展Android框架中原有類的功能或職責(zé)。
[0005]因此,現(xiàn)有技術(shù)還有待于改進(jìn)和發(fā)展。

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

[0006]鑒于上述現(xiàn)有技術(shù)的不足,本發(fā)明的目的在于提供一種基于Android系統(tǒng)的框架代碼修改方法及裝置,旨在解決現(xiàn)有的代碼修改方式維護(hù)難、影響原有Android框架、操作復(fù)雜等問題。
[0007]本發(fā)明的技術(shù)方案如下:
一種基于Android系統(tǒng)的框架代碼修改方法,其中,包括步驟:
A、對Android框架代碼進(jìn)行功能擴(kuò)展時,解耦成擴(kuò)展代碼和原生代碼,框架代碼的功能擴(kuò)展寫在擴(kuò)展代碼中,使擴(kuò)展代碼和原生代碼分離;
B、在進(jìn)行編譯時,將原生代碼和擴(kuò)展代碼進(jìn)行代碼重組,使原生代碼和擴(kuò)展代碼之間實現(xiàn)互訪,以及通過特定轉(zhuǎn)換將擴(kuò)展代碼重塑為可供外部訪問的類對象。
[0008]所述的基于Android系統(tǒng)的框架代碼修改方法,其中,所述步驟A中,解耦成擴(kuò)展代碼時,擴(kuò)展代碼的包名與原生代碼的報名一致;擴(kuò)展代碼的文件名包含有原生代碼的特定標(biāo)識;擴(kuò)展代碼中有一個參數(shù)為原生代碼的構(gòu)造器,并且原生代碼的實例保存在擴(kuò)展代碼中。
[0009]所述的基于Android系統(tǒng)的框架代碼修改方法,其中,所述步驟B中,將原生代碼和擴(kuò)展代碼進(jìn)行代碼重組的過程具體包括:
B1、合并原生代碼和擴(kuò)展代碼的導(dǎo)入信息;
B2、導(dǎo)入擴(kuò)展代碼使擴(kuò)展代碼成為原生代碼中的內(nèi)部類; B3、去除擴(kuò)展代碼的公共字段,使擴(kuò)展代碼變成包訪問權(quán)限的嵌套類,降低擴(kuò)展代碼對外訪問范圍;
B4、在擴(kuò)展代碼中加入靜態(tài)字段,使擴(kuò)展代碼成為原生代碼的嵌套類;
B5、構(gòu)建出一個嵌套類的子類對象。
[0010]所述的基于Android系統(tǒng)的框架代碼修改方法,其中,所述步驟B中,通過特定轉(zhuǎn)換將擴(kuò)展代碼重塑為可供外部訪問的類對象的步驟具體包括:
BI’、重塑擴(kuò)展代碼中原有的導(dǎo)入信息;
B2’、創(chuàng)建一個繼承自原生代碼的嵌套類的擴(kuò)展類;
B3’、創(chuàng)建一個參數(shù)為原生代碼的構(gòu)造器;
B4’、創(chuàng)建一個靜態(tài)方法,來擴(kuò)展類對象。
[0011]所述的基于Android系統(tǒng)的框架代碼修改方法,其中,所述步驟B3’,構(gòu)造器的實現(xiàn)為調(diào)用父類的構(gòu)造。
[0012]所述的基于Android系統(tǒng)的框架代碼修改方法,其中,所述步驟B4’,靜態(tài)方法為get O方法,內(nèi)部實現(xiàn)為通過原生代碼獲取其對應(yīng)的擴(kuò)展代碼。
[0013]—種基于Android系統(tǒng)的框架代碼修改裝置,其中,包括:
分離模塊,用于對Android框架代碼進(jìn)行功能擴(kuò)展時,解耦成擴(kuò)展代碼和原生代碼,框架代碼的功能擴(kuò)展寫在擴(kuò)展代碼中,使擴(kuò)展代碼和原生代碼分離;
編譯模塊,用于在進(jìn)行編譯時,將原生代碼和擴(kuò)展代碼進(jìn)行代碼重組,使原生代碼和擴(kuò)展代碼之間實現(xiàn)互訪,以及通過特定轉(zhuǎn)換將擴(kuò)展代碼重塑為可供外部訪問的類對象。
[0014]所述的基于Android系統(tǒng)的框架代碼修改裝置,其中,所述編譯模塊包括:
合并單元,用于合并原生代碼和擴(kuò)展代碼的導(dǎo)入信息;
導(dǎo)入單元,用于導(dǎo)入擴(kuò)展代碼使擴(kuò)展代碼成為原生代碼中的內(nèi)部類;
去除單元,用于去除擴(kuò)展代碼的公共字段,使擴(kuò)展代碼變成包訪問權(quán)限的嵌套類,降低擴(kuò)展代碼對外訪問范圍;
靜態(tài)字段加入單元,用于在擴(kuò)展代碼中加入靜態(tài)字段,使擴(kuò)展代碼成為原生代碼的嵌套類;
構(gòu)建單元,用于構(gòu)建出一個嵌套類的子類對象。
[0015]所述的基于Android系統(tǒng)的框架代碼修改裝置,其中,所述編譯模塊還包括:
重塑單元,用于重塑擴(kuò)展代碼中原有的導(dǎo)入信息;
第一創(chuàng)建單元,用于創(chuàng)建一個繼承自原生代碼的嵌套類的擴(kuò)展類;
第二創(chuàng)建單元,用于創(chuàng)建一個參數(shù)為原生代碼的構(gòu)造器;
第三創(chuàng)建單元,用于創(chuàng)建一個靜態(tài)方法,來擴(kuò)展類對象。
[0016]所述的基于Android系統(tǒng)的框架代碼修改裝置,其中,所述分離模塊中,解耦成擴(kuò)展代碼時,擴(kuò)展代碼的包名與原生代碼的報名一致;擴(kuò)展代碼的文件名包含有原生代碼的特定標(biāo)識;擴(kuò)展代碼中有一個參數(shù)為原生代碼的構(gòu)造器,并且原生代碼的實例保存在擴(kuò)展代碼中。
[0017]有益效果:本發(fā)明使用擴(kuò)展代碼和原生代碼分離的形式來修改Android框架源碼,使得原本應(yīng)該在Android框架代碼中修改的代碼統(tǒng)一放到擴(kuò)展代碼中,并且分離出來的擴(kuò)展代碼與原生代碼有著相互的完全互訪的權(quán)限,即,僅在擴(kuò)展代碼與原生代碼之間打破Java規(guī)范下的訪問權(quán)限限制,對于其他的外部代碼來說,他們之間的訪問是受到Java規(guī)范的訪問權(quán)限的約束。
【附圖說明】
[0018]圖1為本發(fā)明一種基于Android系統(tǒng)的框架代碼修改方法較佳實施例的流程圖。
[0019]圖2為本發(fā)明的框架代碼修改方法的原理圖。
[0020]圖3為本發(fā)明的原生代碼和擴(kuò)展代碼的關(guān)系示意圖。
[0021]圖4為本發(fā)明的物理結(jié)構(gòu)示意圖。
[0022]圖5為本發(fā)明中擴(kuò)展代碼和原生代碼合并與重塑時的原理圖。
[0023]圖6為圖1中步驟S102 —實施例的具體流程圖。
[0024]圖7為圖1中步驟S102另一實施例的具體流程圖。
[0025]圖8為本發(fā)明基于Android系統(tǒng)的框架代碼修改裝置較佳實施例的結(jié)構(gòu)框圖。
[0026]圖9為圖8所示裝置中編譯模塊一實施例的結(jié)構(gòu)框圖。
[0027]圖10為圖8所示裝置中編譯模塊另一實施例的具體結(jié)構(gòu)框圖。
【具體實施方式】
[0028]本發(fā)明提供一種基于Android系統(tǒng)的框架代碼修改方法及裝置,為使本發(fā)明的目的、技術(shù)方案及效果更加清楚、明確,以下對本發(fā)明進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0029]請參閱圖1,圖1為本發(fā)明一種基于Android系統(tǒng)的框架代碼修改方法較佳實施例的流程圖,如圖所示,其包括步驟:
5101、對Android框架代碼進(jìn)行功能擴(kuò)展時,解耦成擴(kuò)展代碼和原生代碼,框架代碼的功能擴(kuò)展寫在擴(kuò)展代碼中,使擴(kuò)展代碼和原生代碼分離;
5102、在進(jìn)行編譯時,將原生代碼和擴(kuò)展代碼進(jìn)行代碼重組,使原生代碼和擴(kuò)展代碼之間實現(xiàn)互訪,以及通過特定轉(zhuǎn)換將擴(kuò)展代碼重塑為可供外部訪問的類對象。
[0030]在本實施例中,對Android框架代碼的修改,解親成Android原生代碼和擴(kuò)展代碼兩部分,而這兩部分的聯(lián)系則是通過一個稱為Silica的手段實現(xiàn)(后文詳述),如圖2所示,本發(fā)明的代碼修改方式其是一種低耦合的代碼開發(fā)方式,較其他的代碼修改方式簡化了很多。
[0031]所述步驟SlOl中,解耦成擴(kuò)展代碼時,擴(kuò)展代碼的書寫規(guī)范需符合一定要求,擴(kuò)展代碼是獨立于原生代碼的一個單獨類文件,即為一個特殊的類,其規(guī)范包括:
1、文件放置位置要求:放在易找到的位置,方便在系統(tǒng)編譯時找到該文件;
2、包名的要求:擴(kuò)展代碼的包名與原生代碼的包名一致;
3、文件名的要求:擴(kuò)展代碼的文件名包含有原生代碼的特定標(biāo)識,其目的是為了在系統(tǒng)編譯時可識別出擴(kuò)展代碼是某個原生代碼的一個擴(kuò)展文件,比如原生類文件名為XXX.java,那么擴(kuò)展類(擴(kuò)展代碼)文件名為ExtXXX.java,以Ext開頭為標(biāo)志(即特定標(biāo)識)用于識別ExtXXX即為XXX的擴(kuò)展文件,諸如此類的功能的都可以。
[0032]4、擴(kuò)展文件構(gòu)造器要求:擴(kuò)展代碼中有一個參數(shù)為原生代碼的構(gòu)造器,并且原生代碼的實例保存在擴(kuò)展代碼中,有了原生代碼的實例,才能實現(xiàn)擴(kuò)展代碼與原生代碼之間的溝通。
[0033]通過上述規(guī)范,擴(kuò)展代碼與原生代碼之間的關(guān)系如圖3所示。
[0034]前面提到的Silica是一種與編譯時緊密結(jié)合的技術(shù),在編譯時發(fā)揮效果,在Silica技術(shù)的影響下,原生代碼和擴(kuò)展代碼不直接參與編譯,而是先把原生代碼和擴(kuò)展代碼通過代碼重組(也稱吸附)成新的代碼參與到編譯中,然后再把擴(kuò)展代碼通過特定轉(zhuǎn)換(也稱壓制成型)成新的代碼以供使用,其物理結(jié)構(gòu)如圖4所示。
[0035]由于框架代碼的功能擴(kuò)展已經(jīng)按規(guī)范寫在了擴(kuò)展代碼中,而圖4中的編譯時工序中吸附正是把原生代碼和擴(kuò)展代碼結(jié)合起來,發(fā)揮作用,這樣就與在原生代碼中直接修改效果一樣,與此同時,也正好可以解決二者的訪問權(quán)限問題,吸附可以讓二者之間有相互的完全訪問的權(quán)限。經(jīng)過吸附后,擴(kuò)展代碼已經(jīng)消失(即擴(kuò)展代碼已經(jīng)重組到原生代碼中),為了保證類對象的完整以及對外部代碼訪問的權(quán)限控制,編譯時還需要通過壓制成型將擴(kuò)展代碼重塑為可供外部訪問的類對象,并且重塑后的類對象模型與擴(kuò)展代碼的
當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
台江县| 鸡东县| 淅川县| 石阡县| 伽师县| 白城市| 上饶县| 庆元县| 郯城县| 麻江县| 曲麻莱县| 嘉禾县| 定南县| 施甸县| 井研县| 博白县| 吉林省| 上饶县| 香格里拉县| 罗江县| 大渡口区| 广宁县| 沽源县| 玉环县| 佳木斯市| 禹城市| 晋城| 石台县| 鱼台县| 富平县| 蒙自县| 临湘市| 遂溪县| 海安县| 清水县| 云和县| 嵊州市| 安丘市| 包头市| 朝阳市| 西乌珠穆沁旗|