Android StudioでFlutterのアプリ開発を行っていたところ、Androidのビルドでエラーになりました。この問題の解決方法を記録しておきます。
エラー内容
エラーメッセージは次の通りです。(見やすくするために分割しました)
e: /Users/UserName/development/flutter/.pub-cache/hosted/pub.dartlang.org/sound_stream-0.3.0/android/src/main/kotlin/vn/casperpas/sound_stream/SoundStreamPlugin.kt: (45, 8): Class 'SoundStreamPlugin' is not abstract and does not implement abstract member public abstract fun onRequestPermissionsResult(p0: Int, p1: Array<(out) String!>, p2: IntArray): Boolean defined in io.flutter.plugin.common.PluginRegistry.RequestPermissionsResultListener
e: /Users/UserName/development/flutter/.pub-cache/hosted/pub.dartlang.org/sound_stream-0.3.0/android/src/main/kotlin/vn/casperpas/sound_stream/SoundStreamPlugin.kt: (182, 5): 'onRequestPermissionsResult' overrides nothing
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':sound_stream:compileDebugKotlin'.
> Compilation error. See log for more details
* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 1s
Running Gradle task 'assembleDebug'... 2,093ms
Exception: Gradle task assembleDebug failed with exit code 1
上記2つが今回解消すべきエラーで、SoundStreamPluginクラスのonRequestPermissionsResultメソッドに問題があるようです。
解決方法
/Users/UserName/development/flutter/.pub-cache/hosted/pub.dartlang.org/sound_stream-0.3.0/android/src/main/kotlin/vn/casperpas/sound_stream/SoundStreamPlugin.kt を開きます。
そしてonRequestPermissionsResult()を探します。
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>?, grantResults: IntArray?): Boolean {
when (requestCode) {
audioRecordPermissionCode -> {
if (grantResults != null) {
permissionToRecordAudio = grantResults.isNotEmpty() &&
grantResults[0] == PackageManager.PERMISSION_GRANTED
}
completeInitializeRecorder()
return true
}
}
return false
}
この中の引数の’?’を削除します。
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray): Boolean {
再度、Androidでビルドします。
成功しました。