一種瀏覽器訪問icu庫函數(shù)的方法、系統(tǒng)及瀏覽器的制造方法
【專利摘要】本發(fā)明公開了一種瀏覽器訪問ICU庫函數(shù)的方法,包括:瀏覽器獲取當(dāng)前Android操作系統(tǒng)的版本號(hào),所述瀏覽器為基于Webkit內(nèi)核的瀏覽器;所述瀏覽器根據(jù)所述獲取的當(dāng)前Android操作系統(tǒng)的版本號(hào),確定當(dāng)前Android操作系統(tǒng)對應(yīng)的ICU庫版本號(hào);所述瀏覽器根據(jù)所述確定的ICU庫版本號(hào)訪問ICU庫函數(shù)。本發(fā)明還相應(yīng)地公開了一種瀏覽器訪問ICU庫函數(shù)的系統(tǒng)及瀏覽器,通過本發(fā)明,基于Webkit內(nèi)核的瀏覽器便于瀏覽器的定制和功能擴(kuò)展,且能實(shí)現(xiàn)與不同Android操作系統(tǒng)的兼容。
【專利說明】—種瀏覽器訪問ICU庫函數(shù)的方法、系統(tǒng)及瀏覽器
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及互聯(lián)網(wǎng)技術(shù),尤其涉及一種瀏覽器訪問ICU庫函數(shù)的方法、系統(tǒng)及瀏
JaLzHFT O
【背景技術(shù)】
[0002]ICU (International Component for Unicode)庫是 IBM 與開源組織合作研究,基于“IBM公共許可證”的用于支持軟件國際化的開源項(xiàng)目。WebKit是一個(gè)開源的瀏覽器內(nèi)核引擎,與之相對應(yīng)的引擎有Gecko (Mozilla Firefox等使用)和Trident (也稱MSHTML,IE使用)。同時(shí)WebKit也是蘋果Mac OS X系統(tǒng)引擎框架版本的名稱,主要用于Safari,Dashboard, Mail 和其他一些 Mac OS X 程序。
[0003]Android操作系統(tǒng)使用ICU庫作為統(tǒng)一碼(Unicode)庫,因此,Android操作系統(tǒng)上基于Webkit內(nèi)核的第三方瀏覽器大多數(shù)會(huì)調(diào)用此I⑶庫。但是,由于Android操作系統(tǒng)版本較多,且不同Android操作系統(tǒng)版本之間存在著ICU庫的差異(即相同的函數(shù)符號(hào)可能對應(yīng)不同的函數(shù)體,同一函數(shù)體在不同的Android操作系統(tǒng)版本中可能對應(yīng)不同的函數(shù)符號(hào)),所以容易導(dǎo)致Android平臺(tái)上基于Webkit內(nèi)核的瀏覽器存在兼容性問題。例如,Android平臺(tái)I對應(yīng)版本號(hào)為2.1的Android操作系統(tǒng),Android平臺(tái)2對應(yīng)版本號(hào)為2.3的Android操作系統(tǒng),一基于Webkit內(nèi)核的瀏覽器與Android平臺(tái)I兼容,那么,如果將該基于Webkit內(nèi)核的瀏覽器應(yīng)用于Android平臺(tái)2時(shí),由于版本號(hào)為2.3的Android操作系統(tǒng)與版本號(hào)為2.1的Android操作系統(tǒng)中I⑶庫版本號(hào)不同,基于I⑶庫版本號(hào)訪問ICU庫函數(shù)時(shí),該基于Webkit內(nèi)核的瀏覽器將因ICU庫函數(shù)符號(hào)名不同而無法訪問ICU庫函數(shù)或無法訪問希望訪問的ICU庫函數(shù),從而導(dǎo)致編解碼出錯(cuò)。
[0004]當(dāng)前解決ICU庫兼容性問題一般有以下兩種思路:
[0005](I)把IQJ庫或者其他Unicode庫編譯進(jìn)瀏覽器的Webkit內(nèi)核,不再使用Android操作系統(tǒng)自帶的ICU庫,以避免兼容性問題。
[0006](2)第三方瀏覽器不帶Webkit內(nèi)核,而是調(diào)用Android操作系統(tǒng)自帶的Wekbit內(nèi)核,以避免兼容性問題,如UCWeb、海豚瀏覽器等。
[0007]但是,對于上述第一種思路,如果把I⑶庫或者其他Unicode庫編譯進(jìn)瀏覽器的Webkit內(nèi)核,會(huì)造成瀏覽器程序的安裝包大小增大,不利于用戶體驗(yàn);對于上述第二種思路,則不利于瀏覽器的定制和功能擴(kuò)展。
【發(fā)明內(nèi)容】
[0008]有鑒于此,本發(fā)明的主要目的在于提供一種瀏覽器訪問ICU庫函數(shù)的方法、系統(tǒng)及瀏覽器,能夠提高瀏覽器的兼容性,且便于瀏覽器的定制和功能擴(kuò)展。
[0009]為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的:
[0010]一種瀏覽器訪問ICU庫函數(shù)的方法,包括:
[0011]瀏覽器獲取當(dāng)前Android操作系統(tǒng)的版本號(hào),所述瀏覽器為基于Webkit內(nèi)核的瀏IrWSB
兄器;
[0012]所述瀏覽器根據(jù)所述獲取的當(dāng)前Android操作系統(tǒng)的版本號(hào),確定當(dāng)前Android操作系統(tǒng)對應(yīng)的ICU庫版本號(hào);
[0013]所述瀏覽器根據(jù)所述確定的ICU庫版本號(hào)訪問ICU庫函數(shù)。
[0014]該方法還包括:配置Android操作系統(tǒng)的版本號(hào)與I⑶庫版本號(hào)的對應(yīng)關(guān)系,
[0015]所述瀏覽器根據(jù)所述獲取的當(dāng)前Android操作系統(tǒng)的版本號(hào),確定當(dāng)前Android操作系統(tǒng)對應(yīng)的ICU庫版本號(hào)為:所述瀏覽器根據(jù)所述獲取的當(dāng)前Android操作系統(tǒng)的版本號(hào),查詢預(yù)先配置的Android操作系統(tǒng)的版本號(hào)與ICU庫版本號(hào)的對應(yīng)關(guān)系,確定當(dāng)前Android操作系統(tǒng)對應(yīng)的I⑶庫版本號(hào)。
[0016]所述瀏覽器根據(jù)所述確定的ICU庫版本號(hào)訪問ICU庫函數(shù)為:
[0017]所述瀏覽器的Webkit內(nèi)核向封裝模塊發(fā)送需要訪問的函數(shù)名;
[0018]所述封裝模塊將所述函數(shù)名和所述ICU庫版本號(hào)組合,形成需要訪問的函數(shù)符號(hào),所述函數(shù)符號(hào)為函數(shù)名+ICU庫版本號(hào);
[0019]所述封裝模塊根據(jù)所述需要訪問的函數(shù)符號(hào)獲取相應(yīng)的函數(shù)地址,并根據(jù)所述函數(shù)地址訪問I⑶庫中的函數(shù)。
[0020]所述封裝模塊根據(jù)所述需要訪問的函數(shù)符號(hào)獲取相應(yīng)的函數(shù)地址為:根據(jù)所述需要訪問的函數(shù)符號(hào),通過dlopen獲取相應(yīng)的函數(shù)地址。
[0021]—種瀏覽器,包括:操作系統(tǒng)版本號(hào)獲取模塊、I⑶庫版本號(hào)確定模塊和Webkit內(nèi)核;其中,
[0022]所述操作系統(tǒng)版本號(hào)獲取模塊,用于獲取當(dāng)前Android操作系統(tǒng)的版本號(hào);
[0023]所述ICU庫版本號(hào)確定模塊,用于根據(jù)所述獲取的當(dāng)前Android操作系統(tǒng)的版本號(hào),確定當(dāng)前Android操作系統(tǒng)對應(yīng)的ICU庫版本號(hào);
[0024]所述Webkit內(nèi)核,用于根據(jù)所述確定的ICU庫版本號(hào)訪問ICU庫函數(shù)。
[0025]該瀏覽器還包括配置模塊,
[0026]所述配置模塊,用于配置Android操作系統(tǒng)的版本號(hào)與I⑶庫版本號(hào)的對應(yīng)關(guān)系;
[0027]所述ICU庫版本號(hào)確定模塊,具體用于根據(jù)所述獲取的當(dāng)前Android操作系統(tǒng)的版本號(hào),查詢預(yù)先配置的Android操作系統(tǒng)的版本號(hào)與ICU庫版本號(hào)的對應(yīng)關(guān)系,確定當(dāng)前Android操作系統(tǒng)對應(yīng)的I⑶庫版本號(hào)。
[0028]該瀏覽器還包括封裝模塊,
[0029]所述Webkit內(nèi)核,還用于向封裝模塊發(fā)送需要訪問的函數(shù)名;
[0030]所述封裝模塊,用于將所述函數(shù)名和所述ICU庫版本號(hào)組合,形成需要訪問的函數(shù)符號(hào),所述函數(shù)符號(hào)為函數(shù)名+ICU庫版本號(hào),以及根據(jù)所述需要訪問的函數(shù)符號(hào)獲取相應(yīng)的函數(shù)地址,并根據(jù)所述函數(shù)地址訪問I⑶庫中的函數(shù)。
[0031]所述封裝模塊,具體用于根據(jù)所述需要訪問的函數(shù)符號(hào),通過dlopen獲取相應(yīng)的函數(shù)地址。
[0032]以下一項(xiàng)或多項(xiàng)設(shè)置于Webkit內(nèi)核中:操作系統(tǒng)版本號(hào)獲取模塊、I⑶庫版本號(hào)確定模塊、配置模塊、封裝模塊。
[0033]一種瀏覽器訪問I⑶庫函數(shù)的系統(tǒng),包括:瀏覽器和I⑶庫;其中,所述瀏覽器為權(quán)利要求5至9任一項(xiàng)所述的瀏覽器。
[0034]本發(fā)明瀏覽器訪問ICU庫函數(shù)的方法、系統(tǒng)及瀏覽器,瀏覽器獲取當(dāng)前Android操作系統(tǒng)的版本號(hào),所述瀏覽器為基于Webkit內(nèi)核的瀏覽器;所述瀏覽器根據(jù)所述獲取的當(dāng)前Android操作系統(tǒng)的版本號(hào),確定當(dāng)前Android操作系統(tǒng)對應(yīng)的ICU庫版本號(hào);所述瀏覽器根據(jù)所述確定的ICU庫版本號(hào)訪問ICU庫函數(shù)。通過本發(fā)明,基于Webkit內(nèi)核的瀏覽器便于瀏覽器的定制和功能擴(kuò)展,且能實(shí)現(xiàn)與不同Android操作系統(tǒng)的兼容。
【專利附圖】
【附圖說明】
[0035]圖1為本發(fā)明提出的瀏覽器訪問ICU庫函數(shù)的方法流程示意圖;
[0036]圖2為本發(fā)明訪問ICU庫函數(shù)的具體執(zhí)行過程示意圖。
【具體實(shí)施方式】
[0037]圖1為本發(fā)明提出的瀏覽器訪問ICU庫函數(shù)的方法流程示意圖,如圖1所示,該方法包括:
[0038]步驟101:瀏覽器獲取當(dāng)前Android操作系統(tǒng)的版本號(hào),所述瀏覽器為基于Webkit內(nèi)核的瀏覽器;
[0039]步驟102:所述瀏覽器根據(jù)所述獲取的當(dāng)前Android操作系統(tǒng)的版本號(hào),確定當(dāng)前Android操作系統(tǒng)對應(yīng)的I⑶庫版本號(hào);
[0040]步驟103:所述瀏覽器根據(jù)所述確定的ICU庫版本號(hào)訪問ICU庫函數(shù)。
[0041]步驟101中,瀏覽器一般在程序啟動(dòng)時(shí)獲取當(dāng)前Android操作系統(tǒng)的版本號(hào)。
[0042]可選的,該方法還包括:配置Android操作系統(tǒng)的版本號(hào)與I⑶庫版本號(hào)的對應(yīng)關(guān)系,例如,配置Android操作系統(tǒng)的版本號(hào)與ICU庫版本號(hào)的對應(yīng)關(guān)系如表1所示:
[0043]
【權(quán)利要求】
1.一種瀏覽器訪問ICU庫函數(shù)的方法,其特征在于,該方法包括: 瀏覽器獲取當(dāng)前Android操作系統(tǒng)的版本號(hào),所述瀏覽器為基于Webkit內(nèi)核的瀏覽器; 所述瀏覽器根據(jù)所述獲取的當(dāng)前Android操作系統(tǒng)的版本號(hào),確定當(dāng)前Android操作系統(tǒng)對應(yīng)的ICU庫版本號(hào); 所述瀏覽器根據(jù)所述確定的ICU庫版本號(hào)訪問ICU庫函數(shù)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,該方法還包括:配置Android操作系統(tǒng)的版本號(hào)與ICU庫版本號(hào)的對應(yīng)關(guān)系, 所述瀏覽器根據(jù)所述獲取的當(dāng)前Android操作系統(tǒng)的版本號(hào),確定當(dāng)前Android操作系統(tǒng)對應(yīng)的ICU庫版本號(hào)為:所述瀏覽器根據(jù)所述獲取的當(dāng)前Android操作系統(tǒng)的版本號(hào),查詢預(yù)先配置的Andro i d操作系統(tǒng)的版本號(hào)與I CU庫版本號(hào)的對應(yīng)關(guān)系,確定當(dāng)前Andro i d操作系統(tǒng)對應(yīng)的ICU庫版本號(hào)。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述瀏覽器根據(jù)所述確定的ICU庫版本號(hào)訪問ICU庫函數(shù)為: 所述瀏覽器的Webkit內(nèi)核向封裝模塊發(fā)送需要訪問的函數(shù)名; 所述封裝模塊將所述函數(shù)名和所述ICU庫版本號(hào)組合,形成需要訪問的函數(shù)符號(hào),所述函數(shù)符號(hào)為函數(shù)名+ICU庫版本號(hào); 所述封裝模塊根據(jù)所述需要訪問的函數(shù)符號(hào)獲取相應(yīng)的函數(shù)地址,并根據(jù)所述函數(shù)地址訪問I⑶庫中的函數(shù)。`
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述封裝模塊根據(jù)所述需要訪問的函數(shù)符號(hào)獲取相應(yīng)的函數(shù)地址為:根據(jù)所述需要訪問的函數(shù)符號(hào),通過dlopen獲取相應(yīng)的函數(shù)地址。
5.—種瀏覽器,其特征在于,該瀏覽器包括:操作系統(tǒng)版本號(hào)獲取模塊、ICU庫版本號(hào)確定模塊和Webkit內(nèi)核;其中, 所述操作系統(tǒng)版本號(hào)獲取模塊,用于獲取當(dāng)前Android操作系統(tǒng)的版本號(hào); 所述ICU庫版本號(hào)確定模塊,用于根據(jù)所述獲取的當(dāng)前Android操作系統(tǒng)的版本號(hào),確定當(dāng)前Android操作系統(tǒng)對應(yīng)的ICU庫版本號(hào); 所述Webkit內(nèi)核,用于根據(jù)所述確定的ICU庫版本號(hào)訪問ICU庫函數(shù)。
6.根據(jù)權(quán)利要求5所述的瀏覽器,其特征在于,該瀏覽器還包括配置模塊, 所述配置模塊,用于配置Android操作系統(tǒng)的版本號(hào)與ICU庫版本號(hào)的對應(yīng)關(guān)系; 所述ICU庫版本號(hào)確定模塊,具體用于根據(jù)所述獲取的當(dāng)前Android操作系統(tǒng)的版本號(hào),查詢預(yù)先配置的Android操作系統(tǒng)的版本號(hào)與ICU庫版本號(hào)的對應(yīng)關(guān)系,確定當(dāng)前Android操作系統(tǒng)對應(yīng)的I⑶庫版本號(hào)。
7.根據(jù)權(quán)利要求5所述的瀏覽器,其特征在于,該瀏覽器還包括封裝模塊, 所述Webkit內(nèi)核,還用于向封裝模塊發(fā)送需要訪問的函數(shù)名; 所述封裝模塊,用于將所述函數(shù)名和所述ICU庫版本號(hào)組合,形成需要訪問的函數(shù)符號(hào),所述函數(shù)符號(hào)為函數(shù)名+ICU庫版本號(hào),以及根據(jù)所述需要訪問的函數(shù)符號(hào)獲取相應(yīng)的函數(shù)地址,并根據(jù)所述函數(shù)地址訪問I⑶庫中的函數(shù)。
8.根據(jù)權(quán)利要求7所述的瀏覽器,其特征在于,所述封裝模塊,具體用于根據(jù)所述需要訪問的函數(shù)符號(hào),通過dlopen獲取相應(yīng)的函數(shù)地址。
9.根據(jù)權(quán)利要求7或8所述的瀏覽器,其特征在于,以下一項(xiàng)或多項(xiàng)設(shè)置于Webkit內(nèi)核中:操作系統(tǒng)版本號(hào)獲取模塊、ICU庫版本號(hào)確定模塊、配置模塊、封裝模塊。
10.一種瀏覽器訪問ICU庫函數(shù)的系統(tǒng),其特征在于,該系統(tǒng)包括:瀏覽器和ICU庫;其中,所述瀏覽器為權(quán) 利要求5至9任一項(xiàng)所述的瀏覽器。
【文檔編號(hào)】G06F9/44GK103677764SQ201210319011
【公開日】2014年3月26日 申請日期:2012年8月31日 優(yōu)先權(quán)日:2012年8月31日
【發(fā)明者】任立斌, 孔利 申請人:騰訊科技(深圳)有限公司