iapp网站做软件教程,扬州seo,wordpress标签加颜色,青岛网络seo公司三、SDK集成步骤1. 第一步下载 SDK jar 包放到工程的libs目录下#xff0c;将源码和XML里的系统包和类替换为SDK里的包和类#xff0c;具体对应如下#xff1a;系统内核SDK内核android.webkit.ConsoleMessagecom.tencent.smtt.export.external.interfaces.ConsoleMessageand…三、SDK集成步骤1. 第一步下载 SDK jar 包放到工程的libs目录下将源码和XML里的系统包和类替换为SDK里的包和类具体对应如下系统内核SDK内核android.webkit.ConsoleMessagecom.tencent.smtt.export.external.interfaces.ConsoleMessageandroid.webkit.CacheManagercom.tencent.smtt.sdk.CacheManager(deprecated)android.webkit.CookieManagercom.tencent.smtt.sdk.CookieManagerandroid.webkit.CookieSyncManagercom.tencent.smtt.sdk.CookieSyncManagerandroid.webkit.CustomViewCallbackcom.tencent.smtt.export.external.interfaces.IX5WebChromeClient.CustomViewCallbackandroid.webkit.DownloadListenercom.tencent.smtt.sdk.DownloadListenerandroid.webkit.GeolocationPermissionscom.tencent.smtt.export.external.interfaces.GeolocationPermissionsCallbackandroid.webkit.HttpAuthHandlercom.tencent.smtt.export.external.interfaces.HttpAuthHandlerandroid.webkit.JsPromptResultcom.tencent.smtt.export.external.interfaces.JsPromptResultandroid.webkit.JsResultcom.tencent.smtt.export.external.interfaces.JsResultandroid.webkit.SslErrorHandlercom.tencent.smtt.export.external.interfaces.SslErrorHandlerandroid.webkit.ValueCallbackcom.tencent.smtt.sdk.ValueCallbackandroid.webkit.WebBackForwardListcom.tencent.smtt.sdk.WebBackForwardListandroid.webkit.WebChromeClientcom.tencent.smtt.sdk.WebChromeClientandroid.webkit.WebHistoryItemcom.tencent.smtt.sdk.WebHistoryItemandroid.webkit.WebIconDatabasecom.tencent.smtt.sdk.WebIconDatabaseandroid.webkit.WebResourceResponsecom.tencent.smtt.export.external.interfaces.WebResourceResponseandroid.webkit.WebSettingscom.tencent.smtt.sdk.WebSettingsandroid.webkit.WebSettings.LayoutAlgorithmcom.tencent.smtt.sdk.WebSettings.LayoutAlgorithmandroid.webkit.WebStoragecom.tencent.smtt.sdk.WebStorageandroid.webkit.WebViewcom.tencent.smtt.sdk.WebViewandroid.webkit.WebViewClientcom.tencent.smtt.sdk.WebViewClient需要注意的是:1)请不要在代码里使用下述写法import android.*;import android.webkit.*;import android.webkit.WebStorage.*;import android.net.*;import android.net.http.*;2)除了源码里需要把相关的包名和类名进行替换布局xml里的声明也需要替换例如android:idid/forum_contextandroid:layout_widthfill_parentandroid:layout_heightfill_parentandroid:paddingLeft5dpandroid:paddingRight5dp /为了确保替换的完整可以使用脚本checkqbsdk.sh 点击下载 进行扫描windows 上使用TBSSdk接入扫描工具.exe 点击下载 进行扫描。脚本放在所有源码的顶级目录下运行即可。后续的版本发布前尽量都运行一遍扫描以免上次扫描后新提交的代码有未替换的情况发生。替换不完全时可能发生的问题是关于cookie的身份错误、类转换时的crash等。cookie问题产生的原理是:一段代码把cookie塞给了系统内核另外一段代码尝试从x5的内核里读取cookie就失败了。类转换的错误产生的原理是比如xml里指定的是系统的webviewjava的代码里把它当作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;}Overridepublic 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 的可以传入 nullinitX5Environment 内部会创建一个线程向后台查询当前可用内核版本号这个函数内是异步执行所以不会阻塞 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:configChangesorientation|screenSize|keyboardHidden2)视频为了避免闪屏和透明问题需要如下设置a)网页中的视频上屏幕的时候可能出现闪烁的情况需要如下设置Activity在onCreate时需要设置:getWindow().setFormat(PixelFormat.TRANSLUCENT);(这个对宿主没什么影响建议声明)b)在非硬绘手机和声明需要controller的网页上视频切换全屏和全屏切换回页面内会出现视频窗口透明问题需要如下设置声明当前false为不透明。特别说明这个视各app情况所需不强制需求如果声明了对体验更有利c)以下接口禁止(直接或反射)调用避免视频画面无法显示webview.setLayerType()webview.setDrawingCacheEnabled(true);8. 第八步输入法设置避免输入法界面弹出后遮挡输入光标的问题方法一在AndroidManifest.xml中设置android:windowSoftInputModestateHidden|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 自定义 UA10. 第十步app混淆时的处理由于我们提供的 TBS jar 已经混淆过所以 App 混淆时可以不再混淆我们的 TBS jar或者也可以把我们的混淆策略 proguard 点击下载 加入 App 的混淆策略里注意如果 App没有按照该规则混淆了 TBS jar可能导致无法使用 x5内核