美文网首页android
Android-接入腾讯X5内核的WebView

Android-接入腾讯X5内核的WebView

作者: 阿博聊编程 | 来源:发表于2022-08-02 11:52 被阅读0次
    图片来源网络,入侵必删

    在维护一些原生+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

    相关文章

      网友评论

        本文标题:Android-接入腾讯X5内核的WebView

        本文链接:https://www.haomeiwen.com/subject/zgzdwrtx.html