一種快速實現(xiàn)Android系統(tǒng)HCE服務(wù)的方法
【專利說明】-種快速實現(xiàn)Android系統(tǒng)HCE服務(wù)的方法
【背景技術(shù)】
[0001] 移動通訊技術(shù)的發(fā)展改變了人的生活狀態(tài),總所周知,大部分的移動通訊設(shè)備中 的應(yīng)用程序都是基于Android系統(tǒng)開發(fā)的。HCE(host_basedcardemulation)的定義為: 基于主機的卡模擬,HCE是一種是基于軟件的,不需要提供安全模塊SE(SecureElement) 的智能卡模擬技術(shù),目前主流的安卓手機系統(tǒng)(AndroicM. 4或更高版本)均支持HCE技術(shù)。 Android系統(tǒng)上的HCE技術(shù)是通過系統(tǒng)服務(wù)實現(xiàn)的,使用系統(tǒng)服務(wù)的優(yōu)勢是它可以一直在 后臺運行而不需要有用戶界面,也就是說對用戶是透明的,如果開發(fā)者要開發(fā)個性化的HCE 服務(wù)時,只需重寫Android系統(tǒng)提供的系統(tǒng)服務(wù)的服務(wù)基類相關(guān)方法,以及進行相應(yīng)的安 裝配置,即可實現(xiàn)個性化的HCE服務(wù)。
[0002] JavaCard應(yīng)用是一種基于Java語言編寫的運行在智能卡中的應(yīng)用程序,開發(fā) JavaCard應(yīng)用的語法是Java編程語言語法的子集,并且JavaCard底層運行的虛擬機 (JCVM)也是Java虛擬機(JVM)的一個子集。JavaCard應(yīng)用與Android系統(tǒng)的HCE服務(wù) 的不同點只在于JavaCard應(yīng)用依賴的底層類庫與傳統(tǒng)Java應(yīng)用依賴的系統(tǒng)類庫有所不 同及編譯和運行的機制有所區(qū)別。而Android系統(tǒng)的主開發(fā)語言也是Java,這與JavaCard 的開發(fā)語言幾乎沒有區(qū)別。因此,可以利用成熟的JavaCard應(yīng)用快速實現(xiàn)Android系統(tǒng) 的HCE服務(wù)。
[0003] 在現(xiàn)有技術(shù)中,要實現(xiàn)一個特定的Android系統(tǒng)HCE服務(wù),需要在Android開發(fā)環(huán) 境下新建項目,并利用Android提供的API進行程序編寫。當相同功能的應(yīng)用需要分別部 署到JavaCard平臺和Android平臺時,開發(fā)人員往往需要為JavaCard平臺和Android 平臺編寫兩套邏輯相同但風(fēng)格迥異的代碼,從而使開發(fā)工作變得更加繁重。而且由于應(yīng)用 在上述兩個平臺的代碼不一致,更會導(dǎo)致開發(fā)出的應(yīng)用的可維護性降低。
[0004] 本發(fā)明開發(fā)出了 一種快速實現(xiàn)Android系統(tǒng)HCE服務(wù)的方法,實現(xiàn)了一次性在上 述兩個平臺上開發(fā)應(yīng)用,有效的提高了開發(fā)應(yīng)用的效率也降低了應(yīng)用的維護難度。
【發(fā)明內(nèi)容】
[0005] -種快速實現(xiàn)Android系統(tǒng)HCE服務(wù)的方法,所述方法包括,將JavaCard平臺的 底層類庫移植至Android系統(tǒng)中構(gòu)成Android系統(tǒng)的JavaCard中間層類庫。該方法進一 步包括以下步驟:步驟1):對JavaCard底層類庫進行篩選,確定具體需要移植的類和接 口,并保持需要移植的類庫的包名、包路徑不變;步驟2):針對JavaCard平臺與Android 系統(tǒng)HCE服務(wù)平臺的底層虛擬機對內(nèi)存的不同管理,確定應(yīng)用內(nèi)部持久數(shù)據(jù)對象在創(chuàng)建、 服務(wù)啟動、服務(wù)結(jié)束時的處理方法;步驟3):基于原生的Android類庫實現(xiàn)對步驟1)中所 選類庫進行移植,使其成為Android平臺的JavaCard中間層類庫。步驟1)中所選的類庫 包括,javacard.framework類包、javacard.security類包、javacard.crypto類包、org. globalplatform類包。步驟2)中的所述處理方法包括,a)JavaCard文件系統(tǒng)采用Android 的應(yīng)用私有文件存儲方式來實現(xiàn);b)密鑰等數(shù)據(jù)采用Android輕量級數(shù)據(jù)庫SQLite的方 式實現(xiàn);c)具體實現(xiàn)的Android系統(tǒng)HCE服務(wù)需要在預(yù)定時機進行文件或數(shù)據(jù)庫方式的持 久化讀取和寫入,以保證HCE服務(wù)在斷電或其他原因重啟后仍然具有合適的持久化數(shù)據(jù)。 步驟3)中的移植方法包括,a)調(diào)用java,security類庫加解密相關(guān)的API實現(xiàn)中間層類庫 javacard.security、javacard.crypto的加解密功能;b)根據(jù)Android平臺的特性封裝實 現(xiàn)javacard.framework包和org.globalplatform包,達到模擬部分卡片主安全域功能的 效果。步驟3)可以被步驟4)所替代:步驟4)于Android原生類庫全新開發(fā)一個HCE服務(wù) 應(yīng)用。其中的應(yīng)用內(nèi)部持久數(shù)據(jù)對象包括,文件系統(tǒng)、密鑰數(shù)據(jù)、其他持久數(shù)據(jù)。JavaCard 平臺的架構(gòu)包括JavaCard應(yīng)用,JavaCard底層類庫,JavaCard虛擬機,而Android系 統(tǒng)HCE服務(wù)平臺的架構(gòu)包括Android系統(tǒng)HCE服務(wù),JavaCard中間層類庫,Android類庫, Dalvik虛擬機。
[0006] 本發(fā)明通過上述移植方法,將JavaCard平臺底層類庫移植至Android系統(tǒng)中,從 而實現(xiàn)了將原有的基于JavaCard平臺開發(fā)的應(yīng)用直接應(yīng)用于Android系統(tǒng)HCE服務(wù)中, 提高了應(yīng)用的轉(zhuǎn)換效率。
【附圖說明】
[0007] 圖I:JavaCard平臺與AndroidHCE平臺的架構(gòu)比較。 具體實施例
[0008] 現(xiàn)結(jié)合說明書附圖,以及具體實施例進一步闡述本發(fā)明的技術(shù)方案,具體實施例 僅是本發(fā)明的布局約束的具體方案,任何負荷本發(fā)明精神的技術(shù)方案均落在其保護范圍之 內(nèi)。
[0009] 本發(fā)明通過將JavaCard底層類庫移植到Android平臺,如此之下,Android平臺 開發(fā)也獲取了JavaCard底層類庫的編程接口,從而,在JavaCard平臺和Android平臺開 發(fā)相同的應(yīng)用時,該應(yīng)用本身無需做太大的改動,即可從JavaCard平臺移植到Android系 統(tǒng)成為HCE服務(wù),從而可以快速地基于原有的JavaCard應(yīng)用實現(xiàn)具有相同功能的Android HCE服務(wù)。
[0010] 參見圖1,JavaCard平臺與Android系統(tǒng)HCE服務(wù)平臺的架構(gòu)對比中可以看出, JavaCard平臺的架構(gòu)包括JavaCard應(yīng)用,JavaCard底層類庫,JavaCard虛擬機,而 Android系統(tǒng)HCE服務(wù)平臺的架構(gòu)包括Android系統(tǒng)HCE服務(wù),JavaCard中間層類庫, Android類庫,Dalvik虛擬機。本發(fā)明將JavaCard平臺的底層類庫移植至Android系統(tǒng) HCE服務(wù)平臺中構(gòu)成Android系統(tǒng)HCE服務(wù)的JavaCard中間層類庫,使得無需再次開發(fā), 即可將現(xiàn)有成熟的基于JavaCard平臺開發(fā)的應(yīng)用應(yīng)用于Android系統(tǒng)HCE服務(wù)中,從而 實現(xiàn)該應(yīng)用的功能。
[0011] Java Card應(yīng)用依賴的底層類庫包含以下類包(package) : java, io、java, lang、java.rmi、javacard. framework、javacard. security、javacard