uni-app 的 appid 需按平台分层配置:微信小程序必须在 manifest.json 的 mp-weixin 节点下设 appid,抖音小程序同理配 mp-toutiao 节点,h5/android/ios 不适用该字段;根级 appid 仅用于 dcloud 云服务鉴权。
uni-app 的 appid 不是“设一次就完事”的全局配置,而是按平台、按环境、按发布目标分层管理的——直接改 manifest.json 里的顶层 appid 字段,只对 uni-app 原生应用(如 5+app)生效;小程序和 h5 必须在对应平台节点下单独配。
mp-weixin 节点下配微信小程序 AppID
微信小程序的 AppID 不读取 manifest.json 根级的 appid,必须显式写在 mp-weixin 子节点里。否则 HBuilderX 编译后,微信开发者工具会报错 “invalid appid” 或直接白屏。
- 打开
manifest.json,确保存在"mp-weixin"对象(没有就手动加) - 在该对象内添加
"appid"字段,值为你在微信公众平台申请的小程序 AppID(格式如wx1234567890abcdef) - 不要把测试环境和生产环境的 AppID 写死在同一份文件里——团队协作时容易误发
- 若需多主体支持(如同时发布到两个不同微信账号),得配合条件编译 +
uni-app.scripts动态注入,不能只靠静态 JSON
{
"name": "my-app",
"appid": "__UNI__ABC123", // ← 这个对微信小程序无效
"mp-weixin": {
"appid": "wx1234567890abcdef", // ← 必须在这里配
"setting": {
"urlCheck": false
}
}
}
mp-toutiao 节点下配抖音小程序 AppID
抖音小程序同理,但字段名和平台标识固定为 mp-toutiao。漏配或拼错节点名,会导致每次编译后抖音 IDE 都提示“未设置 AppID”,必须手动填——这不是 IDE 问题,是 uni-app 构建时根本没把 ID 注入进去。
- 节点名必须是
"mp-toutiao"(不是mp-douyin或其他变体) -
appid值需与抖音小程序开放平台中创建的应用完全一致(格式如tt046372de9a00e2cd01) - 建议同时配
"projectname"字段,避免抖音 IDE 识别项目名失败 - 如果用了云打包或自建构建流程,确保构建命令中指定了
UNI_PLATFORM=mp-toutiao,否则该节点会被忽略
{
"mp-toutiao": {
"appid": "tt046372de9a00e2cd01",
"projectname": "我的抖音小程序"
}
}
H5 和 Android/iOS 的 AppID 配置逻辑完全不同
H5 没有传统意义上的 AppID;Android 和 iOS 的 AppID 是包名(Bundle ID)或签名信息,不是微信那种字符串 ID。强行往 manifest.json 根级填 AppID 并不会影响 H5 输出,反而可能干扰原生端构建。
- H5:关注的是
"h5"节点下的"domain"、"router"和"template",AppID 相关字段在此节点下无意义 - Android:实际使用的是
"android"节点下的"package"(如com.example.myapp),不是 AppID - iOS:依赖
"ios"节点中的"bundleId"和证书配置,跟小程序 AppID 完全不兼容 - 所有平台共用的根级
appid字段,仅用于 DCloud 云服务鉴权(如 uniCloud、推送),不影响前端运行
动态切换 AppID 的实际落地方式
硬编码多个 AppID 到 JSON 里不可维护,真正在企业项目中跑通的方式,是构建时注入——而不是靠人眼切换。
- 用
package.json中的uni-app.scripts定义不同环境脚本,例如build:weapp:prod和build:weapp:test - 每个脚本通过
cross-env传入环境变量(如VUE_APP_WEAPP_APPID=wxprod123) - 在
vue.config.js或自定义构建脚本(如modifyManifest.js)中读取环境变量,动态改写manifest.json对应平台节点 - 注意:HBuilderX 可视化编译不走 npm script,所以这种方式只适用于 CLI 构建或 CI/CD 流程
最常被忽略的一点:抖音和微信小程序的 AppID 配置节点名、字段路径、甚至校验逻辑都不同,不能复制粘贴了事。一个拼写错误(比如 mp-tt 或 mp-douyin)就会让整个配置失效,而错误提示往往藏在构建日志末尾,不容易被发现。











