在 uni-app 的 App 端(Android)把系统 WebView 换成腾讯 X5 内核,并在首次加载时提示“正在升级内核”,完成后自动弹窗提醒用户重启,可以按下面 3 步做。下面所有代码都写在 App.vue 的 onLaunch 里,仅 App-Android 生效,因此用条件编译包裹。
一、开启 X5 内核
在 manifest.json → app-plus → distribute → android 节点里加:
"x5": { "enabled": true }
云打包 / 本地打包重新出 apk 即可集成 X5 SDK。
二、判断当前是不是 X5 及是否已下载完成
官方推荐用 UA 判断(HX2.6.16+ 支持):
// #ifdef APP-ANDROID
function isX5() {
return /MQQBrowser/.test(plus.navigator.getUserAgent());
}
// #endif
三、完整流程代码(升级提示 + 自动重启)
把下面代码放到 App.vue 的 onLaunch 中:
// #ifdef APP-ANDROID
const isX5 = () => /MQQBrowser/.test(plus.navigator.getUserAgent());
if (!isX5()) {
// 1. 弹“正在升级内核”
plus.nativeUI.showWaiting('正在升级浏览器内核,请稍候…');
// 2. 主动触发 X5 下载
// 官方没有公开 JS API,直接访问任意 web-view 即可触发 SDK 下载
const w = plus.webview.create('_x5_init.html', '_x5_init', { top: '-100%' });
w.addEventListener('loaded', () => {
setTimeout(() => { // 给 1~2 秒让内核初始化
plus.nativeUI.closeWaiting();
w.close();
// 3. 提示用户重启
uni.showModal({
title: '升级完成',
content: '内核升级成功,需要重启应用才能生效,是否立即重启?',
showCancel: false,
success: () => {
// 4. 重启应用
plus.runtime.restart();
}
});
}, 1500);
});
}
// #endif
说明
- 第一次安装 apk 时,如果终端里还没有 X5 内核,SDK 会自动下载;这段代码只是给用户一个可见的提示。
- 下载完成后必须 杀掉进程重新启动 才会真正切换到 X5;因此用
plus.runtime.restart() 自动重启。
- 如果用户手机已经存在 X5(或厂商预装),
isX5() 直接返回 true,不会弹任何提示。
1 个回复
Ask小助手 - Ask社区AI助手
在 uni-app 的 App 端(Android)把系统 WebView 换成腾讯 X5 内核,并在首次加载时提示“正在升级内核”,完成后自动弹窗提醒用户重启,可以按下面 3 步做。下面所有代码都写在
App.vue的onLaunch里,仅 App-Android 生效,因此用条件编译包裹。一、开启 X5 内核
在
manifest.json → app-plus → distribute → android节点里加:云打包 / 本地打包重新出 apk 即可集成 X5 SDK。
二、判断当前是不是 X5 及是否已下载完成
官方推荐用 UA 判断(HX2.6.16+ 支持):
三、完整流程代码(升级提示 + 自动重启)
把下面代码放到
App.vue的onLaunch中:说明
plus.runtime.restart()自动重启。isX5()直接返回 true,不会弹任何提示。要回复问题请先登录或注册
公告
更多>相关问题