Giter VIP home page Giter VIP logo

cordova-plugin-x5-tbs's Introduction

cordova-plugin-x5-tbs

CordovaWebView替换为腾讯的X5。使用腾讯TBS完整版SDK。

优劣比较

优势

  • 安装包体积小:由于QQ、微信、QQ空间等在**的巨大装机量,与Crosswalk比较,X5内核仅增加不到300KB左右的apk大小。
  • 兼容性强:统一不同设备到同一内核,不需要担心国产ROM奇特“定制”及老版本WebView造成的兼容性问题。
  • 视频播放能力强:自带多种解码器,也可支持直播。
  • 新浏览器特性支持:如HTTP/2、Service Worker等。

劣势

支持环境

  • cordova-android > 6.4
  • Android > 4.0

安装

cordova plugin add cordova-plugin-x5-tbs

为确保App启动后即启动X5内核,需要在项目的MainActivityonCreate方法内,增加以下代码:

QbSdk.initX5Environment(this, null);

另出于某些玄学原因,如应用出现Crash,请手动将以下权限复制入AndroidManifest.xml

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<!-- 硬件加速对X5视频播放非常重要,建议开启 -->
<uses-permission android:name="android.permission.GET_TASKS" />

环境

当前版本

X5:tbs_sdk_thirdapp_v4.3.0.1148_43697_sharewithdownloadwithfile_withoutGame_obfs_20190805_175505.jar

内核替换

你当然可以手动升级到X5内核最新版,或者替换成精简版内核。你只需要删除platforms/android/libs/tbs_sdk_*.jar,替换为你需要使用的版本即可。这会使此插件无法通过cordova plugin remove等指令被完全删除,还请注意。

感谢

此项目继承自项目:https://github.com/offbye/cordova-plugin-x5engine-webview

技术支持

与本项目有关的问题,如加载后无法正常启动,在本项目Issue区内提交新Issue即可。

X5相关问题,请参阅:X5技术指南

常见玄学问题

为什么X5内核没有被成功加载

先测试是否是64位程序的问题。修改platforms/android/build.gradle,在productFlavors之下,armv7之上,加入ndk{abiFilters "armeabi"},再看看是否有问题。该条问题见:https://x5.tencent.com/tbs/technical.html#/detail/sdk/1/34cf1488-7dc2-41ca-a77f-0014112bcab7

请使用官方TBS Studio测试,如其安装的TBS Demo左上角仍显示Sys core,证明X5内核可能无法被第三方App调用。请参阅X5技术指南或反馈到X5官方。

cordova-plugin-x5-tbs's People

Contributors

zsxsoft avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

cordova-plugin-x5-tbs's Issues

是否支持cordova-android 7.0以上

您好

使用您的插件,发现使用[email protected],以上

用6.4.0可以的

编译的时候提示错误,

`cp: copyFileSync: could not write to dest file (code=ENOENT):E:\tmp\hello\platforms\android\res\xml\config.xml

Parsing E:\tmp\hello\platforms\android\res\xml\config.xml failed
(node:144) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: ENOENT: no such file or directory, open 'E:\tmp\hello\platforms\android\res\xml\config.xml'
(node:144) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.`

cookie doesn't work

如题 使用X5webview后cookie就失效了,具体表现是设置cookie后取不到相应值。
例:
cookie.set('token', 'abc');
cookie.get('token'); // expected output: abc(际拿到的是undefined或者null)
移除cordova-plugin-x5-tbs插件后cookie能正常使用。
猜测原因是官方文档提到的(cookie问题产生的原理是:一段代码把cookie塞给了系统内核,另外一段代码尝试从x5的内核里读取cookie就失败了。类转换的错误产生的原理是:比如xml里指定的是系统的webview,java的代码里把它当作x5的webview使用。)但是就是不知道从哪里入手,求赐教。

input type=file点确定后报错

懒得pr了……

X5WebChromeClient.java

257行改为:
Uri[] result = android.webkit.WebChromeClient.FileChooserParams.parseResult(resultCode, intent);

因x5会报告
02-05 13:51:04.054 2990-2990/com.ztcrkj.app E/ReflectionUtils: 'com.tencent.smtt.webkit.FileChooserParamsAdapter' invoke static method 'parseFileChooserResult' failed
java.lang.ClassNotFoundException: Didn't find class "com.tencent.smtt.webkit.FileChooserParamsAdapter" on path: DexPathList[[zip file "/data/user/0/com.tencent.mm/app_tbs/core_share/tbs_jars_fusion_dex.jar"],nativeLibraryDirectories=[/data/user/0/com.tencent.mm/app_tbs/core_share, /data/user/0/com.tencent.mm/app_tbs/share/plugins/com.tencent.qb.plugin.videodecode, /system/lib, /vendor/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:380)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at com.tencent.common.utils.ReflectionUtils.a(Unknown Source)
at com.tencent.common.utils.ReflectionUtils.invokeStaticMethod(Unknown Source)
at com.tencent.tbs.tbsshell.WebCoreProxy.invokeStaticMethod(Unknown Source)
at com.tencent.tbs.tbsshell.WebCoreProxy.parseFileChooserResult(Unknown Source)
at java.lang.reflect.Method.invoke(Native Method)
at com.tencent.smtt.export.external.DexLoader.invokeStaticMethod(Unknown Source)
at com.tencent.smtt.sdk.bl.a(Unknown Source)
at com.tencent.smtt.sdk.WebChromeClient$FileChooserParams.parseResult(Unknown Source)
at com.zsxsoft.cordova.x5.X5WebChromeClient$5.onActivityResult(X5WebChromeClient.java:257)
at org.apache.cordova.CordovaInterfaceImpl.onActivityResult(CordovaInterfaceImpl.java:152)
at org.apache.cordova.CordovaActivity.onActivityResult(CordovaActivity.java:358)
at android.app.Activity.dispatchActivityResult(Activity.java:7125)
at android.app.ActivityThread.deliverResults(ActivityThread.java:4186)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:4233)
at android.app.ActivityThread.-wrap20(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1606)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:163)
at android.app.ActivityThread.main(ActivityThread.java:6365)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:791)
02-05 13:51:04.055 2990-2990/com.ztcrkj.app D/X5WebChromeClient: Receive file chooser URL: null

add error

D:\cordova\EPC>cordova plugin add cordova-plugin-x5-tbs --save
Installing "cordova-plugin-x5-tbs" for android
Android Studio project detected
config file /manifest/uses-sdk requested for changes not found at D:\cordova\EPC\platforms\android\manifest\uses-sdk, ignoring

com.tencent.smtt.sdk.WebView

Error: Interface com.tencent.smtt.utils.j$a(classpath class) used as super class of com.tencent.smtt.utils.j$b.

请问这个要在哪加?QbSdk.initX5Environment(this, null);

我直接修改%cordova%\platforms\android\CordovaLib\src\org\apache\cordova.java,
选 import com.tencent.smtt.sdk.QbSdk;
然后在onCreate中加入QbSdk.initX5Environment(this, null);
cordova build android时报错..报com.tencent.smtt.sdk.QbSdk找不到...
platforms\android\lib目录下有(无替换了)tbs_sdk_thirdapp_v3.2.0.1104_43200_sharewithdownload_withfilereader_withoutGame_obfs_20170609_115346
我看了这个jar有 com.tencent.smtt.sdk.QbSdk这个包..

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.