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:
- 修改
pubspec.yaml:
dependencies: # 移除flutter_sms: ^2.3.3 send_sms: ^2.0.0 # 使用最新版本号
- 在
android/app/src/main/AndroidManifest.xml添加权限:
<uses-permission android:name="android.permission.SEND_SMS"/> <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
- 示例调用代码(需先请求权限):
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
相关产品推荐
相关产品推荐

