Android端Flutter项目禁用audio_session及Java引用处理咨询
Flutter Android项目禁用audio_session插件问题排查与解决
问题描述
构建纯Android端Flutter项目时,因不需要iOS相关功能,想禁用audio_session插件,尝试排除后出现**"Audio Session plugin could not be found"**错误,同时编译时报错如下:
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/repository2/02 to old ns http://schemas.android.com/sdk/android/repo/repository2/01 Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/sys-img2/02 to old ns http://schemas.android.com/sdk/android/repo/sys-img2/01 C:\tools\flutter\.pub-cache\hosted\pub.dartlang.org\audio_session-0.0.11\android\src\main\java\com\ryanheise\audio_session\AndroidAudioManager.java:11: error: package io.flutter.plugin.common does not exist import io.flutter.plugin.common.BinaryMessenger; ^ C:\tools\flutter\.pub-cache\hosted\pub.dartlang.org\audio_session-0.0.11\android\src\main\java\com\ryanheise\audio_session\AndroidAudioManager.java:12: error: package io.flutter.plugin.common does not exist import io.flutter.plugin.common.MethodCall; ^ C:\tools\flutter\.pub-cache\hosted\pub.dartlang.org\audio_session-0.0.11\android\src\main\java\com\ryanheise\audio_session\AndroidAudioManager.java:13: error: package io.flutter.plugin.common does not exist import io.flutter.plugin.common.MethodChannel;
当前App/build.gradle配置片段:
apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" android { compileSdkVersion 33 compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = '1.8' } sourceSets { main.java.srcDirs += 'src/main/kotlin'
疑问:项目仅用Kotlin实现,是否需要删除gradle中的Java引用?
解决方案
不用删除Gradle里的Java引用
Flutter的Android插件体系本身依赖Java类库,哪怕你的项目全用Kotlin写,compileOptions里的Java 1.8配置是为了兼容Flutter底层和第三方插件的编译逻辑,删了只会引发更多兼容性问题——当前audio_session的编译错误也和这个无关。正确禁用/排除audio_session插件
- 直接依赖的情况:打开
pubspec.yaml,删掉audio_session的依赖项,执行flutter pub get更新依赖。 - 间接依赖的情况:在
pubspec.yaml里加dependency_overrides强制排除:dependency_overrides: audio_session: - 清理缓存:执行
flutter clean,再手动删掉.pub-cache里对应的audio_session目录(路径就是报错里的C:\tools\flutter\.pub-cache\hosted\pub.dartlang.org\audio_session-0.0.11)。 - 重新构建:运行
flutter build apk或你常用的构建命令。
- 直接依赖的情况:打开
临时修复编译错误(仅应急用)
如果暂时没法彻底排除插件,可在App/build.gradle的android块里修正源码路径配置,确保Flutter插件类库能被找到:sourceSets { main { java.srcDirs += 'src/main/java' kotlin.srcDirs += 'src/main/kotlin' } }但这只是权宜之计,核心还是要彻底移除不需要的插件依赖。
内容的提问来源于stack exchange,提问作者Dee Star
相关产品推荐
相关产品推荐

