Flutter项目编译失败::telephony:compileDebugKotlin任务执行出错
解决Flutter telephony插件编译失败:未实现RequestPermissionsResultListener接口问题
错误信息
e: C:\src\flutter.pub-cache\hosted\pub.dartlang.org\telephony-0.1.4\android\src\main\kotlin\com\shounakmulay\telephony\sms\SmsMethodCallHandler.kt: (49, 1): 类'SmsMethodCallHandler'并非抽象类,且未实现io.flutter.plugin.common.PluginRegistry.RequestPermissionsResultListener中定义的抽象方法public abstract fun onRequestPermissionsResult(p0: Int, p1: Array<(out) String!>, p2: IntArray): Boolean e: C:\src\flutter.pub-cache\hosted\pub.dartlang.org\telephony-0.1.4\android\src\main\kotlin\com\shounakmulay\telephony\sms\SmsMethodCallHandler.kt: (357, 3): 'onRequestPermissionsResult'未重写任何方法 FAILURE: 构建过程中出现异常。 出错原因: 执行任务':telephony:compileDebugKotlin'失败。 编译错误,查看日志获取更多详情。 建议尝试: 使用--stacktrace选项获取堆栈跟踪;使用--info或--debug选项获取更多日志输出;使用--scan选项获取完整分析信息。 如需更多帮助,请访问https://help.gradle.org 构建耗时17秒,最终失败 异常:Gradle任务assembleDebug执行失败,退出码1
问题原因
telephony 0.1.4版本存在代码bug:SmsMethodCallHandler类声明实现了PluginRegistry.RequestPermissionsResultListener接口,但未按接口要求正确重写onRequestPermissionsResult方法,方法签名与接口定义不匹配,导致Kotlin编译报错。
解决方案
方案1:升级插件到最新稳定版(推荐)
- 打开项目根目录的
pubspec.yaml,找到telephony依赖项,替换为最新版本号:dependencies: telephony: ^0.2.0 - 执行以下命令更新依赖并重新构建:
flutter pub get flutter clean flutter run
方案2:手动修改插件代码(临时应急)
如果暂时无法升级插件,可手动修复本地缓存的插件代码:
- 找到报错文件:
C:\src\flutter.pub-cache\hosted\pub.dartlang.org\telephony-0.1.4\android\src\main\kotlin\com\shounakmulay\telephony\sms\SmsMethodCallHandler.kt - 修改
onRequestPermissionsResult方法的签名,使其与接口定义一致:override fun onRequestPermissionsResult( requestCode: Int, permissions: Array<String>, grantResults: IntArray ): Boolean { // 保留原方法内的业务逻辑 return true } - 保存文件后执行
flutter run重新构建项目。
内容的提问来源于stack exchange,提问作者Jamiu Olanrewaju
相关产品推荐
相关产品推荐

