• 离线安装腾讯x5内核(附安装包下载地址)


    背景:由于项目需要在一个定制android设备上播放RTSP流视频,设备自带的浏览器内核不支持RTSP流播放,这就导致我使用webview播放h5网址上的视频的时候,无法正常播放视频。在android手机上都是可以播放的,所以猜测是定制android设备自带的浏览器内核兼容性比较差。通过对比,选择使用腾讯x5内核。

    由于设备没有联外网的,所以只能通过离线安装的方式。查看了腾讯浏览服务-SDK下载

    官网文档,发现流程写的并不清晰,而且没有提供离线安装包,所以这里做个整理。

    1.首先需要项目依赖x5 sdk库,通过sdk提供的api安装

     api 'com.tencent.tbs:tbssdk:44286'

    2.下载x5安装包,链接如下

    https://download.csdn.net/download/wangwenbo1019/88850590

    3.将下载好的安装包放到项目的assets目录下

    3.将项目目录下的安装包拷贝到sd卡,代码如下:(这里逻辑可以放在启动页或者首页去做)

    1. File internalStorage = this.getFilesDir();
    2. String path = internalStorage.getAbsolutePath();
    3. copyAssetsToSDCard(this, "tbs", path + "/tbs");
    1. public static void copyAssetsToSDCard(Context context, String sourceFolder, String destinationFolder) {
    2. AssetManager assetManager = context.getAssets();
    3. String[] files;
    4. try {
    5. // 获取assets文件夹下的所有文件和子文件夹
    6. files = assetManager.list(sourceFolder);
    7. } catch (IOException e) {
    8. e.printStackTrace();
    9. return;
    10. }
    11. // 创建目标文件夹
    12. File destFolder = new File(destinationFolder);
    13. if (!destFolder.exists()) {
    14. destFolder.mkdirs();
    15. }
    16. for (String filename : files) {
    17. InputStream in = null;
    18. OutputStream out = null;
    19. try {
    20. // 从assets中打开文件
    21. in = assetManager.open(sourceFolder + "/" + filename);
    22. // 指定输出目标文件
    23. File outFile = new File(destinationFolder, filename);
    24. out = new FileOutputStream(outFile);
    25. // 将文件内容复制到目标文件
    26. Log.i("Qbsdk","copy 开始");
    27. copyFile(in, out);
    28. } catch (IOException e) {
    29. e.printStackTrace();
    30. } finally {
    31. try {
    32. if (in != null) {
    33. in.close();
    34. }
    35. if (out != null) {
    36. out.close();
    37. }
    38. } catch (IOException e) {
    39. e.printStackTrace();
    40. }
    41. }
    42. }
    43. }
    1. private static void copyFile(InputStream in, OutputStream out) throws IOException {
    2. try {
    3. byte[] buffer = new byte[1024];
    4. int read;
    5. LogUtil.Companion.i("Qbsdk","copy 进行中...");
    6. while ((read = in.read(buffer)) != -1) {
    7. out.write(buffer, 0, read);
    8. }
    9. LogUtil.Companion.i("Qbsdk","copy 文件成功");
    10. } catch (Exception e) {
    11. e.printStackTrace();
    12. LogUtil.Companion.i("Qbsdk","copy 文件失败"+e.getMessage());
    13. }
    14. }

    4.通过调用腾讯sdk api执行安装任务

        QbSdk.installLocalTbsCore(this, 46514, path + "/tbs" + "/tbs_core_046514_20230612114949_nolog_fs_obfs_armeabi_release.tbs");
    

    其中46514表示安装包的版本号。

    5.添加监听

    1. QbSdk.setTbsListener(new TbsListener() {
    2. /**
    3. * @param stateCode 用户可处理错误码请参考{@link com.tencent.smtt.sdk.TbsCommonCode}
    4. */
    5. @Override
    6. public void onDownloadFinish(int stateCode) {
    7. LogUtil.Companion.i(TAG, "onDownloadFinished: " + stateCode);
    8. }
    9. /**
    10. * @param stateCode 用户可处理错误码请参考{@link com.tencent.smtt.sdk.TbsCommonCode}
    11. */
    12. @Override
    13. public void onInstallFinish(int stateCode) {
    14. LogUtil.Companion.i(TAG, "安装x5内核完成 重启app: ");
    15. }
    16. /**
    17. * 首次安装应用,会触发内核下载,此时会有内核下载的进度回调。
    18. * @param progress 0 - 100
    19. */
    20. @Override
    21. public void onDownloadProgress(int progress) {
    22. LogUtil.Companion.i(TAG, "Core Downloading: " + progress);
    23. }
    24. });

    6.安装成功之后重启app,查看是否可以加载x5内核

    1. Boolean canLoadX5 = QbSdk.canLoadX5(this);
    2. LogUtil.Companion.i("QbSdk", "是否可以加载X5内核: " + canLoadX5);

    7.加载成功之后在页面直接使用sdk提供的webview就可以使用x5内核加载h5网页了

    1. <com.tencent.smtt.sdk.WebView
    2. android:id="@+id/webView"
    3. android:layout_width="match_parent"
    4. android:layout_height="match_parent"/>

  • 相关阅读:
    11链表-迭代与递归
    痛快,SpringBoot终于禁掉了循环依赖
    算法|每日一题|只出现一次的数字Ⅲ|位运算
    N5235B是德科技网络分析仪50GHz
    零基础Linux_14(基础IO_文件)缓冲区+文件系统inode等
    LeetCode每日一练 —— 203. 移除链表元素
    Exploit Pack 漏洞利用工具包
    基于C++的关键字检索系统
    灵性图书馆:好书推荐-《太傻天书》
    Java反射
  • 原文地址:https://blog.csdn.net/wangwenbo1019/article/details/136175092