基于騰訊X5內(nèi)核的混合APP開發(fā)模式

這是一個(gè)移動(dòng)互聯(lián)的時(shí)代,這是一個(gè)屬于Android刻像,屬于iOS的時(shí)代畅买,在響應(yīng)大眾創(chuàng)業(yè)萬(wàn)眾創(chuàng)新的號(hào)召下,越來越多的開發(fā)者轉(zhuǎn)向了移動(dòng)開發(fā)的領(lǐng)域细睡。在Android谷羞,iOS剛剛興起的時(shí)候,對(duì)于開發(fā)者而言溜徙,要開發(fā)一整套完整的App是一件相對(duì)困難的事情湃缎,因?yàn)榧偃缧枰С值囊苿?dòng)系統(tǒng)越多,需要學(xué)習(xí)的編程語(yǔ)言蠢壹、開發(fā)平臺(tái)也就越多嗓违。例如你需要學(xué)習(xí)Java從而開發(fā)Android,你需要學(xué)習(xí)Object-C從而開發(fā)iOS图贸。

這也就是所謂的原生開發(fā)模式蹂季,相信早期進(jìn)入移動(dòng)開發(fā)的程序員們對(duì)原生開發(fā)模式之痛深有感觸冕广,雖然體驗(yàn)感性能都非常的好,但復(fù)雜的開發(fā)維護(hù)成本令不少開發(fā)者不勝其煩偿洁。H5相關(guān)技術(shù)的流行給程序員帶來了福音,因?yàn)橥ㄟ^H5制作的前端頁(yè)面具有先天的跨平臺(tái)性撒汉,這樣我們就可以在一套統(tǒng)一的界面下實(shí)現(xiàn)不同移動(dòng)系統(tǒng)的交互了,這就是現(xiàn)在流行的Web?App以及Hybrid?App開發(fā)模式.當(dāng)前相對(duì)于純粹的Web?App而言,HybridApp?具有更強(qiáng)大的能力涕滋,2者的比較請(qǐng)見下圖:

從圖中可見睬辐,Hybrid?App相對(duì)WebApp最主要的能力就在于可以通過一些中間件調(diào)用到手機(jī)底層的物理設(shè)備,例如傳感器,攝像頭等等,增強(qiáng)與用戶的交互性。而WebApp只是一個(gè)純粹的html界面,更主要是做數(shù)據(jù)的呈現(xiàn)而已何吝。但不管是Hybrid?App還是WebApp,在手機(jī)設(shè)備上面運(yùn)行的時(shí)候都是借助WebView組件來對(duì)h5界面進(jìn)行渲染展示的溉委,所以可以這樣說鹃唯,WebView的能力直接決定了Hybrid?/ WebApp的前端交互能力爱榕。相信很多直接使用默認(rèn)WebView組件呈現(xiàn)h5的開發(fā)者都有一種直觀的感覺,就算h5頁(yè)面中圖片與文本信息并不多,但在WebView中展示的時(shí)候都會(huì)出現(xiàn)拖拽不流暢,切換留白,窗口閃爍等的現(xiàn)象坡慌,這就是WebView自身渲染能力不強(qiáng)的問題所致黔酥。今天這編文章不打算細(xì)致分析WebView內(nèi)核的實(shí)現(xiàn),而是引導(dǎo)讀者如何使用騰訊的X5內(nèi)核去替代系統(tǒng)內(nèi)置的WebView,解決手機(jī)系統(tǒng)默認(rèn)WebView能力不足的狀況洪橘。

騰訊X5瀏覽服務(wù)是致力于優(yōu)化移動(dòng)端WebView體驗(yàn)的解決方案,由QQ瀏覽器團(tuán)隊(duì)出品,使用騰訊X5瀏覽服務(wù)內(nèi)核SDK和騰訊X5瀏覽服務(wù)云端服務(wù),解決移動(dòng)端WebView使用過程中出現(xiàn)的拖拽不流暢,切換留白,窗口閃爍等問題跪者。經(jīng)過筆者測(cè)試, 性能提升比較明顯, 對(duì)采用WebApp與HybridApp開發(fā)模式的程序員來說是一個(gè)非常值得推薦的選擇,它的具體優(yōu)點(diǎn)有:

1)速度快:相比系統(tǒng)WebView的網(wǎng)頁(yè)加載速度有近30%的提升

2)省流量:云端優(yōu)化技術(shù)使流量節(jié)省20%

3)更安全:24小時(shí)安全問題解決機(jī)制

4)更穩(wěn)定:經(jīng)過億級(jí)用戶的使用考驗(yàn)熄求,crash率0.15%

5)集成強(qiáng)大的視頻播放器渣玲,支持各種視頻格式直接打開

6)適屏排版、字體設(shè)置等瀏覽增強(qiáng)功能的提供

(注意,Appcan原先的h5界面假如直接在X5內(nèi)核中展示,默認(rèn)情況下會(huì)影響原先的排版布局的,需要借助viewport進(jìn)行重新排版.在注意事項(xiàng)中有說明)

7)HTML5更完整支持

8)無系統(tǒng)碎片化問題弟晚、更少的兼容性問題

下面我們來引導(dǎo)一下這個(gè)內(nèi)核的使用方式忘衍。

1. 首先我們應(yīng)該先訪問http://x5.tencent.com/,點(diǎn)擊導(dǎo)航欄中的"開發(fā)者后臺(tái)"功能.

2. 利用自己的QQ賬號(hào)進(jìn)行登錄

3. 登錄完畢后,填寫信息登記

4. 填寫完畢后,就可以進(jìn)入開發(fā)者后臺(tái)了

5. 點(diǎn)擊"添加"按鈕,新建應(yīng)用, 設(shè)置應(yīng)用相關(guān)信息,提交后將得到應(yīng)用的Appke

6. 訪問http://x5.tencent.com/doc?id=1004,這是接入指南,建議程序員多看,但想吐槽一下,即便是一線服務(wù)商了,但百度也好,騰訊也好在開發(fā)文檔完善性方面還是要有待加強(qiáng),否則程序員就要耗費(fèi)更多的時(shí)間精力進(jìn)行摸索.

7. 下載Android?SDK以及接口示例,過程不表

8. 點(diǎn)擊"接入文檔",按要求操作:

1) 復(fù)制sdk jar到工程的libs目錄下

2) 對(duì)原先項(xiàng)目中所有與WebView組件相關(guān)的類庫(kù)進(jìn)行替換,更換為騰訊 WebView相關(guān)組件.替換規(guī)范為

如我項(xiàng)目代碼所示,這是更換后的結(jié)果:

3) 替換layout布局文件中的WebView,改為騰訊的WebView. 如我項(xiàng)目代碼所示,這是更換后的結(jié)果:

4) 聲明權(quán)限,下面是涉及到的所有權(quán)限

"Android.permission.INTERNET"/>

"Android.permission.ACCESS_NETWORK_STATE"/>

"Android.permission.WRITE_EXTERNAL_STORAGE"/>

"Android.permission.ACCESS_WIFI_STATE"/>

"Android.permission.ACCESS_NETWORK_STATE"/>

"Android.permission.READ_PHONE_STATE"/>

"Android.permission.READ_SETTINGS"/>

"Android.permission.WRITE_SETTINGS"/>

"Android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

"Android.permission.READ_EXTERNAL_STORAGE"/>


"Android.permission.GET_TASKS"/>

5) 在Application標(biāo)簽中聲明Appkey.

Android:name="QBSDKAppKey"

Android:value="ohhDlM1XPcmVpSYpWZWJAQat"/>

9. 大功告成, 以下是注意事項(xiàng)說明:

1) 假如我們自己開發(fā)的頁(yè)面是基于Appcan的,需要把viewport修改為下面的形式,否則樣式會(huì)變小

2) 在設(shè)置啟動(dòng)Javascript之前先設(shè)置js服務(wù)類,測(cè)試發(fā)現(xiàn)不是這個(gè)順序的話會(huì)找不到服務(wù)類對(duì)象

WebView.addJavascriptInterface(newProductsInfoActivityJSService(

this),"Javahelper");???// 這在前

WebView.getSettings().setJavaScriptEnabled(true);??// js啟動(dòng)在后

3) 在騰訊的WebView中,數(shù)據(jù)類型監(jiān)測(cè)更加嚴(yán)格.例如服務(wù)類中某個(gè)方法假如參數(shù)類型設(shè)置為String的話,那么js調(diào)動(dòng)這個(gè)方法的時(shí)候需要注意好類型的匹配

如:

服務(wù)類方法-參數(shù)為String:

@JavascriptInterface

publicvoidshowProductById(String id){

Intent i =newIntent(context, ProductInfoActivity.class);

i.putExtra("pid", id);

context.startActivity(i);

}

js調(diào)用此方法-需要確保參數(shù)也為string:

functionloadProductByCID(cid){

cid=cid.toString();

Javahelper.showProducts(cid);// 調(diào)用服務(wù)類完成窗口的跳轉(zhuǎn)

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市卿城,隨后出現(xiàn)的幾起案子枚钓,更是在濱河造成了極大的恐慌,老刑警劉巖瑟押,帶你破解...
    沈念sama閱讀 216,324評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件搀捷,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡多望,警方通過查閱死者的電腦和手機(jī)嫩舟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來怀偷,“玉大人家厌,你說我怎么就攤上這事∈嗑溃” “怎么了像街?”我有些...
    開封第一講書人閱讀 162,328評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵黎棠,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我镰绎,道長(zhǎng)脓斩,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,147評(píng)論 1 292
  • 正文 為了忘掉前任畴栖,我火速辦了婚禮随静,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘吗讶。我一直安慰自己燎猛,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,160評(píng)論 6 388
  • 文/花漫 我一把揭開白布照皆。 她就那樣靜靜地躺著重绷,像睡著了一般。 火紅的嫁衣襯著肌膚如雪膜毁。 梳的紋絲不亂的頭發(fā)上昭卓,一...
    開封第一講書人閱讀 51,115評(píng)論 1 296
  • 那天,我揣著相機(jī)與錄音瘟滨,去河邊找鬼候醒。 笑死,一個(gè)胖子當(dāng)著我的面吹牛杂瘸,可吹牛的內(nèi)容都是我干的倒淫。 我是一名探鬼主播,決...
    沈念sama閱讀 40,025評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼败玉,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼敌土!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起绒怨,我...
    開封第一講書人閱讀 38,867評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤纯赎,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后南蹂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體犬金,經(jīng)...
    沈念sama閱讀 45,307評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,528評(píng)論 2 332
  • 正文 我和宋清朗相戀三年六剥,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了晚顷。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,688評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡疗疟,死狀恐怖该默,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情策彤,我是刑警寧澤栓袖,帶...
    沈念sama閱讀 35,409評(píng)論 5 343
  • 正文 年R本政府宣布匣摘,位于F島的核電站,受9級(jí)特大地震影響裹刮,放射性物質(zhì)發(fā)生泄漏音榜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,001評(píng)論 3 325
  • 文/蒙蒙 一捧弃、第九天 我趴在偏房一處隱蔽的房頂上張望赠叼。 院中可真熱鬧,春花似錦违霞、人聲如沸嘴办。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)涧郊。三九已至,卻和暖如春癞谒,著一層夾襖步出監(jiān)牢的瞬間底燎,已是汗流浹背刃榨。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評(píng)論 1 268
  • 我被黑心中介騙來泰國(guó)打工弹砚, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人枢希。 一個(gè)月前我還...
    沈念sama閱讀 47,685評(píng)論 2 368
  • 正文 我出身青樓桌吃,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親苞轿。 傳聞我的和親對(duì)象是個(gè)殘疾皇子茅诱,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,573評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,070評(píng)論 25 707
  • 關(guān)于這份調(diào)研報(bào)告,不是從技術(shù)角度深入探索搬卒,重點(diǎn)是從產(chǎn)品本身分析瑟俭,通俗易懂才是重點(diǎn)。主要是為了鍛煉平時(shí)做技術(shù)調(diào)研和競(jìng)...
    石先閱讀 23,397評(píng)論 13 48
  • 上周項(xiàng)目有需要契邀,集成了“騰訊X5瀏覽器內(nèi)核”過程中摆寄,也遇到了一些問題。經(jīng)過摸索坯门,也順帶補(bǔ)充解決了之前ABI方面的理...
    tomguan閱讀 27,237評(píng)論 13 27
  • 最基礎(chǔ)的使用方法 最簡(jiǎn)單的布局: 在Activity中使用WebView: 但只是這樣的話微饥,在模擬器上是會(huì)直接調(diào)到...
    HolenZhou閱讀 7,799評(píng)論 12 33
  • 在受到了太多的誤解之后,和陰郁宮廷范兒的哥特音樂比起來古戴,朋克雖然是搖滾樂眾多流派之母欠橘,但他可不是娘娘腔。 朋克音樂...
    maofay閱讀 332評(píng)論 0 1