You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中flutter_sms与sms_advance插件无法使用的问题求助

解决Flutter短信插件Kotlin Gradle版本冲突问题

问题根源

你的项目使用的Android Gradle插件(7.3.1)要求Kotlin Gradle插件版本不低于1.5.20,但flutter_sms: ^2.3.3插件内部依赖的是旧版1.3.50,两者版本不兼容导致报错。


解决方案1:强制统一子项目Kotlin版本

修改项目根目录的build.gradle,在subprojects块中添加配置,强制所有插件使用项目指定的Kotlin版本:

subprojects {
    project.buildDir = "${rootProject.buildDir}/${project.name}"
    // 添加以下配置覆盖插件自带的Kotlin版本
    project.ext {
        set('kotlin.version', '1.7.10')
    }
    afterEvaluate {
        if (project.hasProperty("android")) {
            android {
                compileSdkVersion 33 // 可与app模块的compileSdkVersion保持一致
                kotlinOptions {
                    jvmTarget = '1.8'
                }
            }
        }
    }
}

subprojects {
    project.evaluationDependsOn(':app')
}

执行以下命令清理缓存并重新构建:

flutter clean
flutter pub get
flutter run

解决方案2:替换为维护更活跃的短信插件

flutter_sms插件更新频率低,易出现版本兼容问题,可替换为更活跃的替代插件,比如send_sms:

  1. 修改pubspec.yaml:
dependencies:
  # 移除flutter_sms: ^2.3.3
  send_sms: ^2.0.0 # 使用最新版本号
  1. 在android/app/src/main/AndroidManifest.xml添加权限:
<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
  1. 示例调用代码(需先请求权限):
import 'package:permission_handler/permission_handler.dart';
import 'package:send_sms/send_sms.dart';

Future<void> sendTestSms() async {
  var smsPermission = await Permission.sms.request();
  if (smsPermission.isGranted) {
    await SendSMS.sendSMS(phone: "目标手机号", message: "测试短信内容");
  }
}

额外检查项

  • 确认Android SDK Build Tools版本与AGP 7.3.1兼容(建议使用33.0.2及以上)
  • 检查app模块build.gradle中的compileSdkVersion、minSdkVersion是否符合插件要求

内容的提问来源于stack exchange,提问作者PLAA Hemantha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 03:42:42