uni-app 的 appid 必须按平台和用途分开配置:微信小程序 appid 填在 manifest.json 的 mp-weixin 节点下,根级 appid 仅用于 dcloud 原生应用;h5/android/ios 不使用 mp-weixin 配置;运行时需用条件编译变量(如 __uni_mp_weixin__)硬编码 appid,不可读取 manifest.json。

uni-app 的 appid 不是统一填一个地方就完事的,必须按平台、按用途分开配——填错位置,微信开发者工具直接报 invalid appid 或白屏,H5 和 App 里还可能引发云函数调用失败。
微信小程序 AppID 必须写在 mp-weixin 节点下
manifest.json 根级的 appid 字段只对 DCloud 原生应用(如 5+App)生效,微信小程序完全不读它。如果你只改了顶层 appid,编译后微信开发者工具会认不出身份。
- 打开
manifest.json,确保存在"mp-weixin"对象(没有就手动加) - 在该对象内添加
"appid"字段,值为你在微信公众平台申请的小程序 AppID(格式如wx1234567890abcdef) - 不要把测试环境和生产环境的 AppID 写死在同一份文件里——团队协作时容易误发
- 若需同时支持多个微信主体(比如不同客户的小程序),得用条件编译 +
uni-app.scripts动态注入,不能只靠静态 JSON
H5/Android/iOS 不用配 mp-weixin 的 AppID
H5 页面不需要微信 AppID;Android 和 iOS 打包时,appid 字段只用于 DCloud 云服务鉴权,跟微信无关。填错位置反而可能干扰云打包流程。
使用 JSON Schema 验证 JSON 数据,从示例 JSON 生成 schema,并将其转换为 TypeScript 接口、Python 数据类或 Markdown 文档。
- 安卓 APK 打包依赖的是
app-plus节点下的配置,比如"distribute": { "appid": "..." }—— 这里的appid是 DCloud 分配的原生应用 ID,不是微信的 - H5 端完全忽略
mp-weixin节点,也不读根级appid - 如果代码里需要运行时判断当前平台并使用对应 AppID(比如调用微信 JS-SDK),要用
__UNI_MP_WEIXIN__条件编译变量,而不是从 manifest.json 里读取
运行时拿不到 manifest.json 里的 AppID
manifest.json 是构建时读取的配置文件,打包完成后就不再参与运行时逻辑。你在 JS 里执行 JSON.parse 读取它,或者试图用 uni.getSystemInfo 拿到 AppID,全都不行。
- 正确做法:用条件编译变量(如
__UNI_MP_WEIXIN__)配合硬编码 AppID - 示例:
const appId = __UNI_MP_WEIXIN__ ? 'wx123456789' : __UNI_MP_ALIPAY__ ? '2021000123456789' : ''; - 如果项目要对接云函数或第三方 SDK(如友盟、极光),它们初始化所需的 AppID 必须通过这种方式传入,而非尝试解析 manifest.json
最容易被忽略的点是:manifest.json 里 mp-weixin 下的 appid 只影响构建阶段的合法性校验,而业务代码里真正“用上”这个值,必须靠条件编译 + 手动写死——两者缺一不可。










