必须彻底清理 manifest.json 的 permissions 数组、App模块配置、App原生插件配置三处 SMS 权限,并用 Android Studio 验包确认 manifests/AndroidManifest.xml 中无 READ_SMS/SEND_SMS;同时删除隐私政策中所有短信相关描述,禁用原生短信 API 调用。

直接删掉 READ_SMS 和 SEND_SMS 权限声明,否则华为、小米等应用市场必然驳回。
manifest.json 里必须清理的三处位置
很多开发者只改了 permissions 数组,结果打包后 APK 里仍有 SMS 权限——因为 uni-app 的权限来源不止一处:
-
manifest.json→ “App模块配置” → 勾选的“短信”权限(哪怕没勾,某些旧版基座默认带) -
manifest.json→ “App原生插件配置” → 本地或云端插件(如分享、统计、推送类插件)可能隐式引入READ_SMS -
manifest.json→"permissions"数组中手动添加的<uses-permission android:name="android.permission.READ_SMS"/>等原始声明
如何确认 APK 真的没残留 SMS 权限
别信 manifest 文件,要验包:
- 用 Android Studio 打开 APK → 进入
manifests/AndroidManifest.xml -
Ctrl+F搜索READ_SMS、SEND_SMS、SMS - 出现任何匹配项都说明没清干净,必须回退排查插件或模块
注意:部分第三方 SDK(如老版本友盟、个推)会在编译期自动注入短信权限,即使你没写也会出现。这类情况只能换 SDK 或升级到无 SMS 依赖的版本。
全局代码里也要搜一遍
有些开发者会用原生桥接调用短信 API,导致权限被间接触发:
- 全局搜索
READ_SMS、SEND_SMS、getSms、sendSms等关键词 - 检查
uni.getProvider、plus.android.invoke、plus.runtime.install相关调用链 - 特别留意自定义基座或本地原生插件里的 Java/Kotlin 代码(如果有)
隐私政策页面不能提“短信”相关用途
华为审核会扫描隐私政策文本。如果页面里写着“我们申请短信权限用于验证码登录”,哪怕 manifest 已删干净,也会被拒:
- 删除所有提及
READ_SMS、SEND_SMS、短信验证码的描述 - 改用
uni.login({ provider: 'univerify' })实现一键登录,它不依赖短信权限 - 若仍需短信验证,改用服务端下发验证码 + 用户手动输入,前端不触碰 SMS API
真正容易被忽略的是:插件和隐私文案这两块,比 manifest 配置更难排查,也更容易成为上架卡点。


















