添加了允许非wifi网络下载
把Cordova
的WebView
替换为腾讯的X5。使用腾讯浏览服务TBS完整版SDK。
- 安装包体积小:由于QQ、微信、QQ空间等在**的巨大装机量,与
Crosswalk
比较,X5
内核仅增加不到300KB左右的apk
大小。 - 兼容性强:统一不同设备到同一内核,不需要担心国产ROM奇特“定制”及老版本
WebView
造成的兼容性问题。 - 视频播放能力强:自带多种解码器,也可支持直播。
- 新浏览器特性支持:如HTTP/2、Service Worker等。
- 海外用户量:海外只能共享手机QQ的X5内核
- Google Play上架风险:需要使用精简版本SDK,否则可能不予上架。
- 在某些手机上,app首次运行可能还是使用系统内核
- cordova-android > 4
- Android > 4.0
cordova plugin add @youtuosoft/cordova-plugin-webview-x5
- 在MainActivity.java中添加以下代码(如果需要首次启动加载x5)
package io.cordova.hellocordova;
import android.os.Bundle;
import org.apache.cordova.*;
import com.tencent.smtt.export.external.TbsCoreSettings;
import com.tencent.smtt.sdk.QbSdk;
import java.util.HashMap;
public class MainActivity extends CordovaActivity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// enable Cordova apps to be started in the background
Bundle extras = getIntent().getExtras();
if (extras != null && extras.getBoolean("cdvStartInBackground", true)) {
// moveTaskToBack(true);
}
if(!QbSdk.canLoadX5(this)) {
HashMap map = new HashMap();
map.put(TbsCoreSettings.TBS_SETTINGS_USE_PRIVATE_CLASSLOADER, true);
QbSdk.setDownloadWithoutWifi(true);
QbSdk.initTbsSettings(map);
QbSdk.initX5Environment(this, new QbSdk.PreInitCallback() {
@Override
public void onCoreInitFinished() {
System.out.println(" tbs init ok1");
}
@Override
public void onViewInitFinished(boolean b) {
System.out.println(" tbs init view1: " + b);
}
});
System.out.println("no can load x5.");
try {
Thread.sleep(800);
} catch (InterruptedException e) {
e.printStackTrace();
}
} else {
System.out.println("can load x5.");
}
// Set by <content src="index.html" /> in config.xml
loadUrl(launchUrl);
}
}
要加在loadUrl(launchUrl);之前
com.tencent.tbs.tbssdk:sdk:43993
此项目继承自项目:https://github.com/runner525/x5webview-cordova-plugin.git
此项目参照的互联网上若干项目
与本项目有关的问题,如加载后无法正常启动,在本项目Issue区内提交新Issue即可。
X5相关问题,请参阅:X5技术指南
请使用官方TBS Studio测试,如其安装的TBS Demo左上角仍显示Sys core
,证明X5内核可能无法被第三方App调用。请参阅X5技术指南或反馈到X5官方。
不推荐同时使用Crosswalk和x5,可能有潜在的兼容风险。 如果确认要使用,可以在初始化内核之前添加这句:
HashMap map = new HashMap();
map.put(TbsCoreSettings.TBS_SETTINGS_USE_PRIVATE_CLASSLOADER, true);
QbSdk.initTbsSettings(map);
使用独立ClassLoader进行加载
当手机上有宿主(QQ、微信或QQ空间)时,其他AP只要接入了x5的SDK就会去共享宿主的内核,当没有宿主或是宿主都没有可用的内核时会自己去下载内核
官网(https://x5.tencent.com/tbs/)