1. 程式人生 > >Android-X5WebView詳細整合步驟

Android-X5WebView詳細整合步驟

本文意在瞭解掌握並快速整合騰訊X5系統核心,更好的提高Android與H5在應用上的渲染互動效果;X5web核心下該如何有效的管理cookie;X5webview下的ndk基本配置說明;X5webview常見問題等等。

Android-X5WebView封裝(含Cookie管理、進度監聽、適配8.1系統等策略)詳情請點選!

文章使用到的官方資料:

騰訊瀏覽服務

騰訊瀏覽服務技術指南

騰訊瀏覽服務接入技術文件

騰訊瀏覽服務SDK、API、Demo下載

1:什麼是騰訊X5Web?

移動網際網路時代,Web成為各超級App的通用基礎技術。Web瀏覽不再侷限於傳統瀏覽器,相反已經進入絕大部分App的各類應用場景。越來越多的App基於Hybrid模式開發和部署業務。騰訊瀏覽服務(TBS,Tencent Browsing Service)整合騰訊底層瀏覽技術和騰訊平臺資源及能力,提供整體瀏覽服務解決方案。騰訊瀏覽服務面向應用開發商和廣大開發者,提供瀏覽增強,內容框架,廣告體系,H5遊戲分發,大資料等服務,能夠幫助應用開發商大幅改善應用體驗,有效提升開發,運營,商業化的效率。傳統系統核心(Webview)存在適配成本高、不安全、不穩定、耗流量、速度慢、視訊播放差、檔案能力差等問題,這是移動應用開發商在進行Hybrid App開發時普遍面臨的難題。騰訊瀏覽服務基於騰訊X5核心解決方案(包括核心和雲服務),能夠有效解決傳統移動web技術面臨的普遍問題,同時能極大擴充套件應用(Hybrid App)內瀏覽場景的服務能力。

2:騰訊X5Web的優點:

騰訊X5宣傳優點

3:開始整合

A:整合前準備

個人建議還是首先執行騰訊下騰訊的X5Demo,不僅對X5有個初步印象,而且方便對專案中的功能進行篩選使用。下載demo,匯入AS(筆者的Android studio 是3.0版本)匯入後,就報了第一個錯誤...

 

官方Demo的錯誤

官方專案匯入結構圖

細心的老司機可能一眼就發現了問題,這裡就不多說問題直接給大家提供解決辦法:

解決辦法

在專案的 build.gradle裡面(綠色區域)按照筆者為大家截圖(也就是紅色區域)的位置,在對應區域新增紅色段落內程式碼即可。(程式碼內容如下)

buildscript {

repositories{ jcenter() }

dependencies{ classpath "com.android.tools.build:gradle:2.3.3" }

}

repositories {

maven {url 'http://repo1.maven.org/maven2' }

}

按照上面步驟,等待專案構建完畢以後,Demo理論上就可以正常運行了。(如果上述方法還是不行那隻能說臉黑自行解決咯)專案成功執行後的Demo效果如下:

X5執行圖

B:基本配置

    I:許可權配置

 

許可權配置

    II:jar包配置

 

jar包jniLibs配置

III:專案 build.gradle配置:

 

配置ndk

由於X5暫時不提供64位so檔案,為保證64位手機能正常載入x5核心,可以在專案依賴中去配置ndk。為什麼要配置ndk以及如何配置,詳細請參考 X5Web配置ndk的官方詳細說明

C:開始使用

首先:將Android系統原始碼和XML裡的系統包和類替換為騰訊X5WebSDK裡的包和類,

替換資源

舉個例子就是不要使用android系統的webview,而是使用騰訊的webview。當然,具體的替換規則可以參考文章前面的連結,裡面有詳細的使用說明。

其次:初始化設定

Application的配置

在自定義application裡面進行x5核心初始化介面,別忘記了在清單檔案裡面要配置自定義application。

接著:關於cookie的管理和使用

官方文件告知我們:com.tencent.smtt.sdk.CookieManager和com.tencent.smtt.sdk.CookieSyncManager的相關介面的呼叫,需要在接入SDK後,放到建立X5的WebView之後(也就是X5核心載入完成)進行;否則,cookie的相關操作只能影響系統核心。

圖下給大家提供了一種cookie在X5的使用策略(也是筆者的另一篇文章)需要了解的可以移步下面連結。

Cookie的有效管理

然後:X5Web相容視訊播放的使用

如果有視訊播放的需求,需要在享受頁面視訊的完整播放體驗需要在頁面的Activity(配置檔案)需要宣告android:configChanges="orientation|screenSize|keyboardHidden";

網頁中的視訊進入螢幕的時候,可能出現閃爍的情況,需要如下設定:Activity在onCreate時需要設定:getWindow().setFormat(PixelFormat.TRANSLUCENT);(這個對宿主沒什麼影響,建議宣告)

值得一提的是,以下介面禁止(直接或反射)呼叫,避免視訊畫面無法顯示:

webview.setLayerType() ; webview.setDrawingCacheEnabled(true);

最後:建議包裝x5webview

如何包裝?也就是自定義x5webview,建議:可以先花一點時間看一下官方的Demo,然後根據自身業務整合使用。當然,筆者自己也封裝了一些最基本的功能 X5WebView的封裝 大家可以參考下(寫得不好的話請見諒)

常見問題:

問題一:

如何拿到X5webview的載入進度,比如在Html載入前,客戶端這邊需要展示一張圖片,當載入完畢以後這張圖片就隱藏,然後顯示需要展示的html內容?

解決:在WebChromeClient這個類裡面(import com.tencent.smtt.sdk.WebChromeClient ; )有一個監聽進度的方法,如下圖

 

監聽進度

然後通過 setWebChromeClient( webChromeClient );即可完成進度的監聽。

問題二:如何去除滾動條?

解決:通過X5webview的 IX5WebViewExtension類物件,可以幫我們去除滾動條,參考程式碼如下

去除滾動條

問題三:如何去除廣告?

使用的小夥伴反饋說H5上面有廣告,這裡給兩種思路去解決,如果有更好的方法請直接在評論區提出:

1:可以使用Https

2:對載入的url進行簡單的判斷(可以跟後臺討論設定規則)允許的域名進行放行 其他就攔截,不允許的則攔截

點選這裡瞭解更多的X5問題大雜燴 X5問題大彙總

騰訊X5的基本介紹和使用就到這裡,當然可能有很多問題還沒有發現,筆者在專案中如果有遇到任何問題會及時更新文章,各位看官有任何問題請直接聯絡筆者或者評論區下提問。當然也希望各位老鐵多多點贊支援,如果寫的不好還請大家多多包涵。

說完了基本使用,我們再談封裝,關於X5WebView的基本封裝,大家可以參考我的另一篇文章 X5WebView封裝 裡面含原始碼及使用說明,望大家多多支援。

如果這篇文章對你有幫助,希望各位看官留下寶貴的star,謝謝。

Ps:著作權歸作者所有,轉載請註明作者, 商業轉載請聯絡作者獲得授權,非商業轉載請註明出處(開頭或結尾請新增轉載出處,新增原文url地址),文章請勿濫用,也希望大家尊重筆者的勞動成果,謝謝。



作者:騎小豬看流星
連結:https://www.jianshu.com/p/e4c1a3fc02e8
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯絡作者獲得授權並註明出處。