本發明專利技術公開了一種在目標平臺運行原平臺代碼的實現方法及裝置,以解決修改接口函數工作量較大,并且不利于后期維護的問題。該方法包括:將構建的類導入目標平臺,所述構建的類包括原平臺代碼中與目標平臺不同的接口函數,所述構建的類與原平臺代碼中包括所述不同接口函數的類同名;對構建的類進行反射。
【技術實現步驟摘要】
【專利摘要】本專利技術公開了一種在目標平臺運行原平臺代碼的實現方法及裝置,以解決修改接口函數工作量較大,并且不利于后期維護的問題。該方法包括:將構建的類導入目標平臺,所述構建的類包括原平臺代碼中與目標平臺不同的接口函數,所述構建的類與原平臺代碼中包括所述不同接口函數的類同名;對構建的類進行反射。【專利說明】一種在目標平臺運行原平臺代碼的實現方法及裝置
本專利技術涉及計算機
,尤其涉及一種在目標平臺運行原平臺代碼的實現方法及裝置。
技術介紹
利用JAVA實現跨平臺時,是通過虛擬機實現的,虛擬機運行需要進行反射操作并調用大量的接口函數。具有相同功能的軟件在不同的平臺時,代碼框架可能相同或者類似,但是調用的接口參數不同,因此需要運行的虛擬機也并不相同。當具有相同功能的軟件實現在目標平臺運行原平臺代碼的操作時,需要修改接口函數。但是對于某些基類接口函數出現頻率較大,如果需要修改調用,需要在虛擬機中一一修改調用,工作量相對較大。一旦出現差錯,使得軟件可能不能運行,或者軟件可能不能進行升級操作,并且對于后期維護可能也增加了困難。
技術實現思路
本專利技術實施例提供一種在目標平臺運行原平臺代碼的實現方法及裝置,以解決修改接口函數工作量較大,并且不利于后期維護的問題。 本專利技術實施例提供了一種在目標平臺運行原平臺代碼的實現方法,該方法包括: 將構建的類導入目標平臺,該構建的類包括原平臺代碼中與目標平臺不同的接口函數,該構建的類與原平臺代碼中包括上述不同接口函數的類同名; 對構建的類進行反射。 較佳的,若原平臺代碼中的所述類需要通過獲取對象,并利用對象調用接口函數,上述對構建的類進行反射,具體包括: 對構建的類中獲取對象的接口函數進行反射,反射后返回沒有實際值的對象; 并對需要利用對象調用的接口函數進行反射。 較佳的,若原平臺代碼中的所述類中包含子類,上述對構建的類進行反射,具體包括: 對所述構建的類進行第一次反射,獲取子類中接口函數的對象; 對所述對象進行第二次反射,獲取子類中的接口函數。 較佳的,若原平臺代碼中的所述類中包含具有實際值的對象,上述對構建的類進行反射,具體包括: 獲取構建的類中具有實際值的對象; 根據具有實際值的對象對構建的類進行反射。 基于與方法實施例同樣的專利技術構思,本專利技術實施例提供了一種在目標平臺運行原平臺代碼的實現裝置,該裝置包括: 導入單元,用于將構建的類導入目標平臺,所述構建的類包括原平臺中與目標平臺不同的接口函數,所述構建的類與原平臺代碼中包括所述不同的接口函數的類同名; 反射單元,用于對構建的類進行反射。 較佳的,反射單元還用于,在原平臺代碼中的所述類要通過獲取對象,并利用對象調用函數時,對構建的類中獲取對象的接口函數進行反射,反射后返回沒有實際值的對象;并對需要利用對象調用的接口函數進行反射。 較佳的,反射單元還用于,當原平臺代碼中的上述類中包含子類時,對所述構建的類進行第一次反射,獲取子類中接口函數的對象;對所述對象進行第二次反射,獲取子類中的接口函數。 較佳的,反射單元還用于,當原平臺的類中包含具有實際值的對象時,獲取構建的類中具有實際值的對象;根據具有實際值的對象對構建的類進行反射。 現有技術中需要對源代碼中所有接口的類進行反射,利用本專利技術提供的方案,僅需對構建的類進行反射,也就是對在原平臺中與目標平臺不同的接口函數進行反射,從而提高了在目標平臺運行原平臺代碼的效率,并且有利于后期維護。 【專利附圖】【附圖說明】 圖1為本專利技術實施例提供的在目標平臺運行原平臺代碼的實現方法流程圖; 圖2為本專利技術實施例提供的在目標平臺運行原平臺代碼的實現裝置示意圖。 【具體實施方式】 本專利技術實施例提供一種在目標平臺運行原平臺代碼的實現方法及裝置,以解決修改接口函數工作量較大,并且不利于后期維護的問題。 下面結合附圖對本專利技術實施例作進一步說明。 本專利技術實施例提供了一種在目標平臺運行原平臺代碼的實現方法,如圖1所示,該方法包括: SlOl:將構建的類導入目標平臺,該構建的類包括原平臺中與目標平臺不同的接口函數,該構建的類與原平臺代碼中包括上述不同的接口函數的類同名。 其中,將構建的類導入目標平臺,是對源代碼中目標平臺與原平臺不同的接口的類的應用路徑進行修改,根據修改后的應用路徑導入到目標平臺。 較佳的,構建的類可以稱為與原平臺的類的同名類。 S102:對構建的類進行反射。從而實現了在目標平臺運行原平臺代碼,即實現跨平臺操作。 反射就是JAVA語言在運行時擁有的一項自觀的能力,它能夠創建靈活的代碼。這些代碼在運行時裝載,不需要在組建時進行源代碼的鏈接。反射能夠使程序代碼裝載到虛擬機中,并獲取虛擬機中類的內部信息。允許在執行程序時才得到所需要的類的內部信息,而不再需要編寫代碼時就必須知道所需要的類的內部信息。 例如:在安卓平臺的telephony類,該類是在不同平臺都需要使用的一個重要基類,每個平臺都含有這個類,但是在這個類中定義的變量和函數是不一樣的,或者相同函數的實現方法和參數也有可能不一樣。當需要實現跨平臺時,按照常規方法,需要對這個類的所有接口和變量執行反射,這種方法對于被調用少的接口來說是可行的,但是對于TelephonyManager這個類的修改幾乎不太可能實現。以TelephonyManager.getDefault ().1sMultiSimEnabled()為例,這個函數在整個工程上有很多,不可能一個一個執行對接口函數的反射修改。利用本專利技術實施例提供的方法,例如=TelephonyManager類在安卓系統中的標準路徑是:import android, telephony.TelephonyManager,該路徑是在framework層,重新定義應用路徑為: import com.hisense.mms.frameworks, telephony.Telephony Manager。該重新定義應用路徑的類為構建的類,該類中僅包括目標平臺與原平臺不同的接口函數。 根據修改后的應用路徑就可以將構建的類導入到目標平臺,然后直接執行反射操作了。現有技術中需要對源代碼中所有接口的類進行反射,利用本專利技術提供的方案,僅需對構建的類進行反射,也就是對在原平臺中與目標平臺不同的接口函數進行反射,從而提高了在目標平臺運行原平臺代碼的效率,并且有利于后期維護。 在利用本專利技術在目標平臺運行原平臺代碼時也需要用到反射,在利用本專利技術的方法進行修改同名路徑后,標準的反射操作不再適用,由此可以采用以下反射方式: 第一種反射方式,在本專利技術實施例中命名為跨介反射。 跨介反射即為需要跳過一層進行反射,或者在中間一層做成假的接口,在下一介進行反射。 較佳的,跨介反射適用于類需要通過獲取對象,并利用對象調用函數的情況。例如:Te I ephonyManager.getDefault ().1sMultiSimEnabled ();這個接口在源代碼中的意思是通過getDefault O獲取TelephonyManager類的一個對象實現對象實例化,然后再通過得到的對象來調用函數isMultiSimEnabled O。本文檔來自技高網...

【技術保護點】
一種在目標平臺運行原平臺代碼的實現方法,其特征在于,包括:將構建的類導入目標平臺,所述構建的類包括原平臺代碼中與目標平臺不同的接口函數,所述構建的類與原平臺代碼中包括所述不同接口函數的類同名;對構建的類進行反射。
【技術特征摘要】
【專利技術屬性】
技術研發人員:張立震,闕遠,
申請(專利權)人:青島海信移動通信技術股份有限公司,
類型:發明
國別省市:山東;37
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。