将Unity项目集成到Flutter的Android Studio项目时遇重复类问题求助
我正在将Unity项目集成到基于Flutter的Android Studio项目中,遇到了如下重复类冲突问题:
Duplicate class androidx.viewpager.widget.ViewPager$3 found in modules jetified-support-core-ui-25.1.0-runtime (:support-core-ui-25.1.0:) and viewpager-1.0.0-runtime (androidx.viewpager:viewpager:1.0.0)
Duplicate class androidx.viewpager.widget.ViewPager$4 found in modules jetified-support-core-ui-25.1.0-runtime (:support-core-ui-25.1.0:) and viewpager-1.0.0-runtime (androidx.viewpager:viewpager:1.0.0) Duplicate class androidx.viewpager.widget.ViewPager$DecorView found in modules jetified-support-core-ui-25.1.0-runtime (:support-core-ui-25.1.0:) and viewpager-1.0.0-runtime (androidx.viewpager:viewpager:1.0.0) Duplicate class androidx.viewpager.widget.ViewPager$ItemInfo found in modules jetified-support-core-ui-25.1.0-runtime (:support-core-ui-25.1.0:) and viewpager-1.0.0-runtime (androidx.viewpager:viewpager:1.0.0) Duplicate class androidx.viewpager.widget.ViewPager$LayoutParams found in modules jetified-support-core-ui-25.1.0-runtime (:support-core-ui-25.1.0:) and viewpager-1.0.0-runtime (androidx.viewpager:viewpager:1.0.0) Duplicate class androidx.viewpager.widget.ViewPager$MyAccessibilityDelegate found in modules jetified-support-core-ui-25.1.0-runtime (:support-core-ui-25.1.0:) and viewpager-1.0.0-runtime (androidx.viewpager:viewpager:1.0.0) Duplicate class androidx.viewpager.widget.ViewPager$OnAdapterChangeListener found in modules jetified-support-core-ui-25.1.0-runtime (:support-core-ui-25.1.0:) and viewpager-1.0.0-runtime (androidx.viewpager:viewpager:1.0.0) Duplicate class androidx.viewpager.widget.ViewPager$OnPageChangeListener found in modules jetified-support-core-ui-25.1.0-runtime (:support-core-ui-25.1.0:) and viewpager-1.0.0-runtime (androidx.viewpager:viewpager:1.0.0) Duplicate class androidx.viewpager.widget.ViewPager$PageTransformer found in modules jetified-support-core-ui-25.1.0-runtime (:support-core-ui-25.1.0:) and viewpager-1.0.0-runtime (androidx.viewpager:viewpager:1.0.0) Duplicate class androidx.viewpager.widget.ViewPager$PagerObserver found in modules jetified-support-core-ui-25.1.0-runtime (:support-core-ui-25.1.0:) and viewpager-1.0.0-runtime (androidx.viewpager:viewpager:1.0.0) Duplicate class androidx.viewpager.widget.ViewPager$SavedState found in modules jetified-support-core-ui-25.1.0-runtime (:support-core-ui-25.1.0:) and viewpager-1.0.0-runtime (androidx.viewpager:viewpager:1.0.0) Duplicate class androidx.viewpager.widget.ViewPager$SavedState$1 found in modules jetified-support-core-ui-25.1.0-runtime (:support-core-ui-25.1.0:) and viewpager-1.0.0-runtime (androidx.viewpager:viewpager:1.0.0) Duplicate class androidx.viewpager.widget.ViewPager$SimpleOnPageChangeListener found in modules jetified-support-core-ui-25.1.0-runtime (:support-core-ui-25.1.0:) and viewpager-1.0.0-runtime (androidx.viewpager:viewpager:1.0.0) Duplicate class androidx.viewpager.widget.ViewPager$ViewPositionComparator found in modules jetified-support-core-ui-25.1.0-runtime (:support-core-ui-25.1.0:) and viewpager-1.0.0-runtime (androidx.viewpager:viewpager:1.0.0)
解决方案
这个冲突是因为Unity导出的Android模块包含旧版support-core-ui库,而Flutter项目依赖了AndroidX规范的viewpager库,两者的ViewPager相关类重复导致的。可以通过以下方法解决:
1. 排除Unity模块中的冲突依赖
在Flutter项目的android/build.gradle文件中,找到Unity模块的依赖配置,排除其中的support-core-ui库:
dependencies { // 其他依赖声明... implementation project(':unityLibrary') { exclude group: 'com.android.support', module: 'support-core-ui' } }
2. 强制统一依赖版本(可选)
如果排除依赖后仍有问题,可以在android/build.gradle的allprojects块中添加强制规则,确保所有模块使用同一版本的AndroidX ViewPager:
allprojects { repositories { // 仓库配置... } configurations.all { resolutionStrategy { force 'androidx.viewpager:viewpager:1.0.0' } } }
3. 配置Unity使用AndroidX
打开Unity编辑器,进入Edit > Project Settings > Player,在Android > Publishing Settings中勾选Use AndroidX选项,重新导出Unity项目后再集成到Flutter中。
4. 清理重建项目
完成以上设置后,执行以下命令清理缓存并重建项目:
./gradlew clean ./gradlew assembleDebug
内容的提问来源于stack exchange,提问作者Allan Macatingrao

