日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android 集成x5内核时 本地没有,腾讯浏览服务-接入文档

發布時間:2025/3/11 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 集成x5内核时 本地没有,腾讯浏览服务-接入文档 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

三、SDK集成步驟

1. 第一步

下載 SDK jar 包放到工程的libs目錄下,將源碼和XML里的系統包和類替換為SDK里的包和類,具體對應如下:

系統內核

SDK內核

android.webkit.ConsoleMessage

com.tencent.smtt.export.external.interfaces.ConsoleMessage

android.webkit.CacheManager

com.tencent.smtt.sdk.CacheManager(deprecated)

android.webkit.CookieManager

com.tencent.smtt.sdk.CookieManager

android.webkit.CookieSyncManager

com.tencent.smtt.sdk.CookieSyncManager

android.webkit.CustomViewCallback

com.tencent.smtt.export.external.interfaces.IX5WebChromeClient.CustomViewCallback

android.webkit.DownloadListener

com.tencent.smtt.sdk.DownloadListener

android.webkit.GeolocationPermissions

com.tencent.smtt.export.external.interfaces.GeolocationPermissionsCallback

android.webkit.HttpAuthHandler

com.tencent.smtt.export.external.interfaces.HttpAuthHandler

android.webkit.JsPromptResult

com.tencent.smtt.export.external.interfaces.JsPromptResult

android.webkit.JsResult

com.tencent.smtt.export.external.interfaces.JsResult

android.webkit.SslErrorHandler

com.tencent.smtt.export.external.interfaces.SslErrorHandler

android.webkit.ValueCallback

com.tencent.smtt.sdk.ValueCallback

android.webkit.WebBackForwardList

com.tencent.smtt.sdk.WebBackForwardList

android.webkit.WebChromeClient

com.tencent.smtt.sdk.WebChromeClient

android.webkit.WebHistoryItem

com.tencent.smtt.sdk.WebHistoryItem

android.webkit.WebIconDatabase

com.tencent.smtt.sdk.WebIconDatabase

android.webkit.WebResourceResponse

com.tencent.smtt.export.external.interfaces.WebResourceResponse

android.webkit.WebSettings

com.tencent.smtt.sdk.WebSettings

android.webkit.WebSettings.LayoutAlgorithm

com.tencent.smtt.sdk.WebSettings.LayoutAlgorithm

android.webkit.WebStorage

com.tencent.smtt.sdk.WebStorage

android.webkit.WebView

com.tencent.smtt.sdk.WebView

android.webkit.WebViewClient

com.tencent.smtt.sdk.WebViewClient

需要注意的是:

1)請不要在代碼里使用下述寫法:

import android.*;

import android.webkit.*;

import android.webkit.WebStorage.*;

import android.net.*;

import android.net.http.*;

2)除了源碼里需要把相關的包名和類名進行替換,布局xml里的聲明也需要替換,例如:

android:id="@+id/forum_context"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:paddingLeft="5dp"

android:paddingRight="5dp" />

為了確保替換的完整,可以使用腳本checkqbsdk.sh 點擊下載 進行掃描,windows 上使用TBSSdk接入掃描工具.exe 點擊下載 進行掃描。腳本放在所有源碼的頂級目錄下運行即可。后續的版本發布前盡量都運行一遍掃描,以免上次掃描后新提交的代碼有未替換的情況發生。替換不完全時,可能發生的問題是關于cookie的身份錯誤、類轉換時的crash等。cookie問題產生的原理是:一段代碼把cookie塞給了系統內核,另外一段代碼嘗試從x5的內核里讀取cookie就失敗了。類轉換的錯誤產生的原理是:比如xml里指定的是系統的webview,java的代碼里把它當作x5的webview使用。

2. 第二步

3. 第三步

AndroidManifest.xml里加入權限聲明:

4. 第四步

優化異常上報:

為了提高合作方的webview場景穩定性,及時發現并解決x5相關問題,當客戶端發生crash等異常情況并上報給服務器時請務必帶上x5內核相關信息。x5內核異常信息獲取接口為:com.tencent.smtt.sdk.WebView.getCrashExtraMessage(context)。以bugly日志上報為例:

UserStrategy strategy = new UserStrategy(appContext);

strategy.setCrashHandleCallback(new CrashReport.CrashHandleCallback() {

public Map onCrashHandleStart(int crashType, String errorType, String errorMessage, String errorStack) {

LinkedHashMap map = new LinkedHashMap();

String x5CrashInfo = com.tencent.smtt.sdk.WebView.getCrashExtraMessage(appContext);

map.put("x5crashInfo", x5CrashInfo);

return map;

}

@Override

public byte[] onCrashHandleStart2GetExtraDatas(int crashType, String errorType, String errorMessage, String errorStack) {

try {

return "Extra data.".getBytes("UTF-8");

} catch (Exception e) {

return null;

}

}

});

CrashReport.initCrashReport(appContext, APPID, true, strategy);

5. 第五步

適配修改:

1) App 首次就可以加載 x5 內核

App 在啟動后(例如在 Application 的 onCreate 中)立刻調用 QbSdk 的預加載接口 initX5Environment ,可參考接入示例,第一個參數傳入 context,第二個參數傳入 callback,不需要 callback 的可以傳入 null,initX5Environment 內部會創建一個線程向后臺查詢當前可用內核版本號,這個函數內是異步執行所以不會阻塞 App 主線程,這個函數內是輕量級執行所以對 App 啟動性能沒有影響,當

App 后續創建 webview 時就可以首次加載 x5 內核了

2) 目前,由于SDK WebView所提供的WebView類,是對系統WebView的聚合包裝,所以:獲取系統內核的WebView或者 x5內核的WebView的寬高

android.webkit.WebView webView = new android.webkit.WebView(this);

int width = webView.getWidth();

需要采用下面的方式進行

com.tencent.smtt.sdk.WebView webView = new com.tencent.smtt.sdk.WebView(this);

int width = webView.getView().getWidth();

6. 第六步

調整cookie的使用:

com.tencent.smtt.sdk.CookieManager和com.tencent.smtt.sdk.CookieSyncManager的相關接口的調用,在接入SDK后,需要放到創建X5的WebView之后(也就是X5內核加載完成)進行;否則,cookie的相關操作只能影響系統內核。

7. 第七步

兼容視頻播放:

1)享受頁面視頻的完整播放體驗需要做如下聲明:

頁面的Activity需要聲明android:configChanges="orientation|screenSize|keyboardHidden"

2)視頻為了避免閃屏和透明問題,需要如下設置

a)網頁中的視頻,上屏幕的時候,可能出現閃爍的情況,需要如下設置:Activity在onCreate時需要設置:

getWindow().setFormat(PixelFormat.TRANSLUCENT);(這個對宿主沒什么影響,建議聲明)

b)在非硬繪手機和聲明需要controller的網頁上,視頻切換全屏和全屏切換回頁面內會出現視頻窗口透明問題,需要如下設置

聲明當前false為不透明。

特別說明:這個視各app情況所需,不強制需求,如果聲明了,對體驗更有利

c)以下接口禁止(直接或反射)調用,避免視頻畫面無法顯示:

webview.setLayerType()

webview.setDrawingCacheEnabled(true);

8. 第八步

輸入法設置

避免輸入法界面彈出后遮擋輸入光標的問題

方法一:在AndroidManifest.xml中設置

android:windowSoftInputMode="stateHidden|adjustResize"

方法二:在代碼中動態設置:

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE | WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

9. 第九步

app 自定義 UA 的說明

如果 app 需要自定義 UA,建議采取在 SDK 默認UA 后追加 app UA 的方式示例:

webSetting.setUserAgentString(webSetting.getUserAgentString() + APP_NAME_UA);

其中 APP_NAME_UA 是 app 自定義 UA

10. 第十步

app混淆時的處理

由于我們提供的 TBS jar 已經混淆過,所以 App 混淆時可以不再混淆我們的 TBS jar,或者也可以把我們的混淆策略 proguard 點擊下載 加入 App 的混淆策略里注意:如果 App沒有按照該規則混淆了 TBS jar,可能導致無法使用 x5內核

總結

以上是生活随笔為你收集整理的android 集成x5内核时 本地没有,腾讯浏览服务-接入文档的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。