.NET Maui中Android.Telephony发布失败,求替代方案及解决建议
.NET Maui短信应用发布打包失败(关联Android.Telephony)的解决办法
针对Android.Telephony的排查修复步骤
- 补全权限声明:确认AndroidManifest.xml里加全短信相关权限:
SEND_SMS、RECEIVE_SMS、READ_SMS,发布模式下权限校验更严格,缺权限会触发打包失败。 - 清缓存重编译:删掉项目根目录的
bin、obj文件夹,再执行命令dotnet nuget locals all --clear清空NuGet缓存,重新生成发布包,解决编译缓存冲突问题。 - 匹配SDK版本:检查项目的Android目标SDK版本,建议调整到33或34,确保和Android.Telephony的API版本兼容,同时保证编译SDK版本和目标版本一致。
- 禁用Telephony类混淆:发布模式默认开启混淆,若Telephony相关类被混淆会导致打包失败,在
proguard.cfg里添加规则:-keep class android.telephony.** { *; } -keep class android.provider.Telephony.** { *; } - 升级.NET Maui版本:换成最新稳定版的.NET Maui SDK,旧版本可能存在与Android.Telephony的兼容性bug,升级后大概率能解决已知问题。
替代方案推荐
- 用.NET Maui Essentials的SMS API:不用直接操作Android.Telephony,Essentials封装了简化的短信功能,代码更简洁且兼容性更好,示例:
var smsMessage = new SmsMessage("接收号码", "短信内容"); await Sms.ComposeAsync(smsMessage); - 调用系统短信应用:如果不需要后台处理短信,直接调用系统默认短信APP发送,完全绕开Telephony API,示例:
var smsUri = Android.Net.Uri.Parse($"smsto:接收号码"); var sendIntent = new Intent(Intent.ActionSendto, smsUri); sendIntent.PutExtra("sms_body", "短信内容"); Platform.CurrentActivity.StartActivity(sendIntent); - 改用第三方云端短信服务:比如阿里云、腾讯云的短信服务,通过HTTP接口发送短信,彻底脱离Android原生Telephony依赖,适合批量发送或需要云端管控的场景。
内容的提问来源于stack exchange,提问作者Ambie James Nicolas
相关产品推荐
相关产品推荐

