将Unity项目导入Flutter时出现unityLibrary配置匹配错误
Unity嵌入Flutter时依赖解析错误的解决方案
问题背景
尝试将Unity 2022.3项目作为组件导入Flutter应用,执行以下操作后构建失败:
- 将Unity项目导出至Flutter应用的
android文件夹内 - 在Android级
settings.gradle中配置:
include ":unityLibrary" include ":app" project(":unityLibrary").projectDir = new File("../unity/unityLibrary")
- 在应用级
build.gradle中添加依赖:
dependencies { implementation project(':unityLibrary') implementation 'androidx.multidex:multidex:2.0.1' }
错误信息
- 核心问题:无法确定任务
:app:compileDebugJavaWithJavac的依赖项
无法解析
:app:debugCompileClasspath配置的所有任务依赖项。
无法解析项目:unityLibrary。
被项目:app依赖未找到匹配的项目
:unityLibrary配置。消费者被配置为查找组件的API,最好是针对Android优化的,同时需要属性com.android.build.api.attributes.BuildTypeAttr值为debug,属性com.android.build.api.attributes.AgpVersionAttr值为7.3.0,属性org.jetbrains.kotlin.platform.type值为androidJvm,但:
- 没有可消费的配置包含这些属性。
环境信息
- SDK版本:34
- Unity版本:2022.3
- Gradle版本:1.7.10
已尝试操作
- 校验路径正确性
- 清理并重新构建项目
- 更新依赖项
- 在Unity中添加debug构建类型配置
解决方案
1. 统一AGP版本
错误中AgpVersionAttr不匹配是关键原因,需确保unityLibrary模块的Android Gradle Plugin版本与Flutter的app模块一致(当前为7.3.0):
- 打开
unityLibrary/build.gradle,修改插件版本:
plugins { id 'com.android.library' version '7.3.0' apply false }
- 同步该文件中
compileSdkVersion、targetSdkVersion与app模块一致(均为34)。
2. 配置Unity模块的可消费debug属性
在unityLibrary/build.gradle中补充配置,让debug构建类型暴露符合要求的可消费属性:
android { buildTypes { debug { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-unity.txt' // 添加fallback,避免debug配置缺失时回退到release matchingFallbacks = ['release'] } release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-unity.txt' } } } // 显式声明可被消费的debug配置 configurations { debugApiElements { canBeConsumed = true attributes { attribute(com.android.build.api.attributes.BuildTypeAttr, project.objects.named(com.android.build.api.attributes.BuildTypeAttr, 'debug')) attribute(org.jetbrains.kotlin.platform.type, project.objects.named(org.jetbrains.kotlin.platform.type, 'androidJvm')) } } }
3. 修正路径配置
settings.gradle位于Flutter的android目录下,路径无需回退上级,修改为:
include ":unityLibrary" include ":app" project(":unityLibrary").projectDir = new File("unity/unityLibrary")
4. 清理缓存并同步
- 执行命令:
flutter clean - 在Android Studio中点击
File -> Sync Project with Gradle Files - 重新运行
flutter run构建项目
内容的提问来源于stack exchange,提问作者Aryaman
相关产品推荐
相关产品推荐

