必须做自定义基座,否则所有原生能力(如蓝牙、地图、uniPush、支付等)在真机上直接失效或白屏;标准基座未编译原生插件代码,调用uni.getProvider或plus.*会报module not found或静默失败。
必须做自定义基座,否则所有原生能力(蓝牙、地图、unipush、支付、自定义相机等)在真机上直接失效或白屏。这不是可选项,是硬性前提。
为什么“运行到手机”不等于真机可用
标准基座(io.dcloud.HBuilder)是个通用壳,没编译你的任何原生插件代码。调用 uni.getProvider 或 plus.*** 时会报 module not found 或静默失败。manifest.json 里勾了支付/推送/地图模块,只是声明需求,不等于功能已集成——集成动作发生在制作自定义基座时。
- 常见错误现象:
当前运行的基座不包含原生插件[xxx]、plus is not defined、页面空白但控制台无报错 - 只要用了原生插件、uniPush、支付宝/微信支付、高德/腾讯地图、蓝牙、NFC、文件系统深度操作,就必须走自定义基座
- Android 和 iOS 都强制要求;iOS 还额外需要证书 + UDID 绑定,缺一不可
Android 自定义基座:从 USB 连接到 APK 安装成功
核心卡点不在代码,而在设备连接状态和基座构建条件。很多“制作失败”“安装后打不开”问题,根源在前两步就断了。
- 手机必须同时开启:
USB 调试+USB 调试(安全设置)(MIUI/HarmonyOS 常见隐藏开关)+ 连接模式设为文件传输(不是“仅充电”) - HBuilderX 插件必须装全:
App真机运行+App开发版SDK(工具 → 插件安装) - 安卓签名证书(
.keystore)路径不能含中文或空格;别名、密码要记牢,云端打包时会校验 - 制作流程:
运行 → 运行到手机或模拟器 → 制作自定义基座 → 填写包名/证书/别名/密码 → 提交云端打包(耗时 1–3 分钟) - 打包成功后,再执行
运行到安卓 App 基座,HBuilderX 才会自动安装并启动调试环境
iOS 自定义基座:证书、UDID、描述文件三者缺一不可
iOS 没有“adb push”这种绕过机制,苹果强制签名链完整。跳过任意一环,App 直接无法安装或闪退无日志。
-
UDID必须提前添加到苹果开发者账号的Devices列表(推荐用爱思助手获取,格式如3A12BC4D-5E67-8F90-1234-56789ABCDEF0) - 开发证书(
.p12)需从钥匙串导出,密码不能为空;描述文件(.mobileprovision)必须绑定该证书 + 该 UDID + 正确 Bundle ID - manifest.json 中
app-plus.distribute.ios.bundleIdentifier必须与描述文件里配置的 Bundle ID 完全一致 - HBuilderX 制作 iOS 自定义基座时,三个文件(.p12、.mobileprovision、.cer)缺一个都会失败,错误提示常为
CodeSign error或invalid provisioning profile
chrome://inspect 调试 WebView 的三个硬条件
想在 Chrome 里看 Network、改样式、打断点?这功能默认关闭,且只对自定义基座开放。
- 手机已连电脑 +
USB 调试开启 + 数据线稳定(建议原装线) - 运行的 App 必须是刚制作成功的自定义基座(标准基座或 H5 预览无效)
- 代码中必须显式启用调试:
plus.webview.getCurrentWebview().setStyle({ debug: true }),加在main.js或App.vue的onLaunch里 - Chrome 访问
chrome://inspect/#devices后设备为空?先检查手机是否弹出“允许 USB 调试”授权框,未点允许则不会显示
最容易被忽略的是:自定义基座一旦制作成功,它就是一个独立 APK/IPA,后续每次修改原生插件代码、更新 manifest.json 中的模块配置、更换证书,都必须重新制作——热更新只刷新 JS 层,不重编译原生层。











