uni-app如何取消Manifest文件中的未配置模块警告

作者:袖梨 2026-08-10

manifest.json中残留空模块配置(如"Push":{})会触发“未添加xxx模块”警告,需手动在源码视图中删除对应键值对;已实际使用的模块(如含<video>标签或API调用)即使配置为空对象也必须保留;本地离线打包还需同步处理Android权限、SDK引用及初始化逻辑。

manifest.json里残留空模块配置会触发警告

打包时弹出“未添加xxx模块”提示,但你根本没用这个功能——大概率是manifest.json里留了空的模块声明。比如之前勾选过Push、VideoPlayer或Bluetooth,后来删了代码却没清理配置,"modules": {"Push": {}, "VideoPlayer": {}}这种空对象会被打包系统当成“需要但缺失”的模块处理。

删掉源码视图里的空模块键值对

别只在HBuilderX图形界面取消勾选,那只是改了UI状态,不一定会同步删除manifest.json源码。必须手动进「源码视图」删干净:

  1. 打开manifest.json → 切换到「源码视图」标签页
  2. 找到"app-plus""modules"对象
  3. 逐个检查键名,把确定不用的模块整行删掉,例如:"Push": {}"Bluetooth": {}
  4. 删完后保存文件,再执行「发行」→「原生App-云打包」或「生成本地打包资源」

某些模块即使没调用API也要显式声明

不是所有模块都能靠“删配置”解决。像CameraVideoPlayerGeolocation这类模块,只要项目里用了对应HTML标签(如<video><camera>)或API(如uni.chooseImage),就必须在modules里保留非空配置。此时空对象{"Camera":{}}反而是合法写法,删掉才会报错。

关键看是否实际使用:没用就删;用了就留,哪怕只留一个空{}

本地离线打包要额外注意Android权限和SDK引用

如果用的是本地离线打包(非云端),光改manifest.json不够。比如Bluetooth模块,还必须在原生Android工程里:

  1. AndroidManifest.xml中补全android.permission.BLUETOOTH_SCAN等权限
  2. 确认libs目录下有对应版本的蓝牙SDK aar包
  3. 检查MainApplication.java是否注册了蓝牙模块初始化逻辑

云端打包自动处理这些,本地打包得自己兜底——否则删了manifest.json里的Bluetooth也还是会报错,因为原生层根本没加载模块。

真正容易被忽略的是:图形界面勾选/取消操作和源码实际内容不同步。每次改完模块配置,务必切到源码视图确认键值对是否真的存在或消失,而不是依赖UI反馈。

相关文章

精彩推荐