51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

Android-接入腾讯X5内核的WebView

在维护一些原生+H5Android项目的时候,我们会发现项目是接入了X5内核WebView来提高H5的用户体验感。这篇博客我知道的X5内核WebView相关的知识,希望对看文章的小伙伴有所帮助。

X5内核的WebView

项目集成

项目的build.gradle中加入:

repositories {
    google()
    // 增加这行
    mavenCentral()
}

app的build.gradle加入:

dependencies {
    ...
    // 增加这行
    api 'com.tencent.tbs:tbssdk:44216'
}

权限设置:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

混淆配置

-dontwarn dalvik.**
-dontwarn com.tencent.smtt.**

-keep class com.tencent.smtt.** {
    *;
}

-keep class com.tencent.tbs.** {
    *;
}

预加载

这个是我比较喜欢的点,SDK有给我们做好预加载的方法:

QbSdk.initX5Environment(appContext, new new PreInitCallback() {
    @Override
    public void onCoreInitFinished() {
        // 内核初始化完成,可能为系统内核,也可能为系统内核
    }

    /**
    * 预初始化结束
    * 由于X5内核体积较大,需要依赖网络动态下发,所以当内核不存在的时候,默认会回调false,此时将会使用系统内核代替
    * @param isX5 是否使用X5内核
    */
    @Override
    public void onViewInitFinished(boolean isX5) {

    }
});

首次冷启动优化方案

  1. 设置开启优化方案

    // 在调用TBS初始化、创建WebView之前进行如下配置 HashMap map = new HashMap(); map.put(TbsCoreSettings.TBS_SETTINGS_USE_SPEEDY_CLASSLOADER, true); map.put(TbsCoreSettings.TBS_SETTINGS_USE_DEXLOADER_SERVICE, true); QbSdk.initTbsSettings(map);

2.增加Service声明,在AndroidManifest.xml中增加内核首次加载时优化Service声明:

<service 
    android:name="com.tencent.smtt.export.external.DexClassLoaderProviderService"
    android:label="dexopt"
    android:process=":dexopt" />

具体的使用

1.XML的使用:

<com.tencent.smtt.sdk.WebView
    android:id="@+id/forum_context"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:paddingLeft="5dp"
    android:paddingRight="5dp" />

2.所有系统内核的包名更换成com.tencent.smtt

3.需要注意的是,代码不要出现以下的写法:

import android.*;
import android.webkit.*;
import android.webkit.WebStorage.*;
import android.net.*;
import android.net.http.*;

上面是简单的使用方法,更具体的用法请看官方wiki

赞(7)
未经允许不得转载:工具盒子 » Android-接入腾讯X5内核的WebView