news 2026/6/21 7:27:58

uni-app Android 正式 App 无法录音?系统没有麦克风权限的终极解决方案

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
uni-app Android 正式 App 无法录音?系统没有麦克风权限的终极解决方案

你说得完全对,这个点非常专业 👍
CSDN 博客里如果还写“自定义 App 基座”,会误导大量读者

👉正式说法必须是:正式 App(云打包 / 发布包)

下面我已经帮你整体改写了一版【术语完全正确】的博客
这是可以直接发布、不容易被杠、不容易被误解的版本


uni-app Android 正式 App 无法录音?系统没有麦克风权限的终极解决方案

关键词:uni-app、Android、正式 App、RecorderManager、麦克风权限、Audio 模块、manifest.json


一、问题背景

在使用uni-app开发 Android App 时,我遇到了一个非常“反直觉”的问题:

  • ✅ 在HBuilderX 内置调试环境
    👉 录音功能完全正常
  • ❌ 在正式 App(云打包 / 发布包)
    👉系统设置里没有“麦克风 / 录音”权限
    👉uni.getRecorderManager()无法正常工作
    👉 即使代码中主动申请权限,也依然无效

代码逻辑没有问题,权限申请也写了,但正式 App 就是录不了音


二、问题现象

1️⃣ Android 系统层面

设置 → 应用 → 正式 App → 权限
  • ❌ 找不到「麦克风 / 录音」

2️⃣ JS 层面表现

constrecorder=uni.getRecorderManager();recorder.start();// 不报错,但没有生成录音文件

3️⃣ 手动申请权限也无效

plus.android.requestPermissions(['android.permission.RECORD_AUDIO']);
  • 回调显示“授权成功”
  • 但系统权限列表依然没有麦克风

三、常见误区(很多人会踩)

很多开发者会认为:

只要在manifest.json里声明
android.permission.RECORD_AUDIO
再在 JS 层申请权限
👉 正式 App 就一定能录音

这是错误的


四、问题根因(核心结论)

uni-app 正式 App 中,是否具备原生能力,不只取决于 Android 权限

正式 App(云打包)场景下:

👉原生能力是否存在,取决于manifest.json → modules


❗ 录音功能的真正依赖是:

Audio原生模块

如果正式 App没有集成Audio模块

  • AndroidManifest.xml不会注入录音能力
  • 系统设置中不会出现麦克风权限
  • RecorderManager表面可用,实际无效

五、唯一正确的修复方式(重点)

✅ manifest.json 中必须包含 Audio 模块

"modules":{"Payment":{},"Bluetooth":{},"Barcode":{},"Camera":{},"Share":{},"Geolocation":{},"Audio":{}}

📌"Audio": {}是整个问题的根本解决点

没有它:

  • 就算声明了RECORD_AUDIO
  • 就算 JS 层权限申请成功
    👉正式 App 依然无法录音

六、Android 权限声明(必要但不充分)

<uses-permissionandroid:name="android.permission.RECORD_AUDIO"/><uses-permissionandroid:name="android.permission.MODIFY_AUDIO_SETTINGS"/>

⚠️ 注意:

  • 权限 ≠ 原生能力
  • 必须是:Audio 模块 + 权限声明

七、最容易忽略的关键步骤(90% 的坑在这里)

❌ 以下操作都是无效的

  • 只修改manifest.json
  • 直接运行项目
  • 热更新
  • 覆盖安装旧 App

✅ 正确流程(必须完整)

1️⃣ 修改manifest.json,加入"Audio": {}
2️⃣重新云打包生成正式 App
3️⃣卸载手机中旧的正式 App
4️⃣ 安装新生成的 App
5️⃣ 重新测试录音功能

👉 少一步,都会导致问题“看起来没解决”


八、如何快速验证是否修复成功?

在 Android 手机上打开:

设置 → 应用 → 正式 App → 权限

如果能看到:

  • 🎤 麦克风 / 录音

说明Audio 模块已经被正确集成


九、RecorderManager 示例代码

constrecorder=uni.getRecorderManager();recorder.start({sampleRate:16000,numberOfChannels:1,encodeBitRate:96000,format:'wav'});recorder.onStop(res=>{console.log('录音文件路径:',res.tempFilePath);});

十、最终总结(一句话)

uni-app 正式 App 中:

  • ❌ 只有 Android 权限 ≠ 可以录音

  • ✅ 必须同时具备:

    • modules.Audio
    • RECORD_AUDIO权限
    • 重新云打包并安装正式 App

十一、踩坑总结(送给后来人)

  • 不要只盯 JS 代码
  • 不要只看权限是否申请成功
  • 一定要检查manifest.json → modules
  • Audio / Camera / Bluetooth 都是模块级原生能力

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 12:07:29

PaddlePaddle镜像如何集成WeChat机器人通知训练进度?

PaddlePaddle镜像如何集成WeChat机器人通知训练进度&#xff1f; 在深度学习项目中&#xff0c;开发者最熟悉的场景之一可能是&#xff1a;启动一个长达数小时的模型训练任务后&#xff0c;只能反复刷新日志文件、远程登录服务器&#xff0c;或不断询问同事“训练到哪一轮了&am…

作者头像 李华
网站建设 2026/6/20 20:46:04

PaddlePaddle镜像中的激活函数选择对收敛速度的影响

PaddlePaddle镜像中的激活函数选择对收敛速度的影响 在深度学习模型的训练过程中&#xff0c;一个看似微不足道的设计决策——激活函数的选择——往往能在背后悄然决定整个项目的成败。你是否曾遇到过这样的情况&#xff1a;网络结构已经调优、数据也做了增强、学习率精心设计&…

作者头像 李华
网站建设 2026/6/18 13:43:35

Arduino Uno多传感器融合的家庭环境监测:实战案例

用Arduino Uno打造家庭环境监测站&#xff1a;从零开始的多传感器实战你是否曾想过&#xff0c;家里的空气湿度是不是太高了&#xff1f;光照够不够看书&#xff1f;厨房做饭时空气质量有没有变差&#xff1f;这些看似琐碎的问题&#xff0c;其实正是智能生活的起点。今天&…

作者头像 李华
网站建设 2026/6/12 17:33:30

PaddlePaddle镜像支持稀疏训练吗?减少90%参数的方法

PaddlePaddle镜像支持稀疏训练吗&#xff1f;减少90%参数的方法 在当前大模型席卷AI产业的背景下&#xff0c;一个现实问题愈发突出&#xff1a;我们真的需要千亿参数来完成每一个任务吗&#xff1f;当训练一次GPT级别模型的成本足以买下一台特斯拉时&#xff0c;越来越多的企业…

作者头像 李华
网站建设 2026/6/15 15:48:42

PaddlePaddle镜像中的动量(Momentum)优化器调参建议

PaddlePaddle镜像中的动量&#xff08;Momentum&#xff09;优化器调参建议 在深度学习项目中&#xff0c;模型训练的稳定性与收敛速度往往直接决定了研发周期和上线效率。尤其是在工业级场景下&#xff0c;一个看似微小的优化器参数设置不当&#xff0c;可能让原本几天就能完成…

作者头像 李华
网站建设 2026/6/19 17:17:21

新手教程:用Arduino读懂SSD1306中文手册并点亮屏幕

从零读懂SSD1306手册&#xff1a;用Arduino点亮OLED的完整实战指南你有没有试过照着网上的教程接好线、烧录代码&#xff0c;结果屏幕就是不亮&#xff1f;或者显示的内容上下颠倒、模糊不清&#xff0c;却不知道问题出在哪&#xff1f;如果你正在用Arduino驱动一块小小的OLED屏…

作者头像 李华