基于Flutter插件集成Android原生包时依赖解析失败问题
问题描述
从直接使用Android原生包迁移为开发Flutter插件时,构建报错,提示无法在Google、Maven Central等仓库找到依赖com.github.convertedin:android-pixel-sdk:1.4.4。该依赖托管在JitPack,但构建系统未检索该仓库。
错误信息
执行任务 ':app:checkStageReleaseDuplicateClasses' 失败。
无法解析配置 ':app:stageReleaseRuntimeClasspath' 的所有文件。
找不到 com.github.convertedin:android-pixel-sdk:1.4.4。
已在以下位置搜索:
Google Maven仓库、Maven Central、Flutter官方仓库、JCenter、UXCam SDK仓库
被以下项目依赖:
project :app > project :convertedin
当前插件的build.gradle配置
group = "com.petsegypt.convertedin" version = "1.0-SNAPSHOT" buildscript { ext.kotlin_version = "1.8.22" repositories { google() mavenCentral() } dependencies { classpath("com.android.tools.build:gradle:8.1.0") classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version") } } allprojects { repositories { google() mavenCentral() maven { url 'https://jitpack.io' } } } apply plugin: "com.android.library" apply plugin: "kotlin-android" android { if (project.android.hasProperty("namespace")) { namespace = "com.petsegypt.convertedin" } compileSdk = 34 compileOptions { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = JavaVersion.VERSION_1_8 } sourceSets { main.java.srcDirs += "src/main/kotlin" test.java.srcDirs += "src/test/kotlin" } defaultConfig { minSdk = 21 } dependencies { testImplementation("org.jetbrains.kotlin:kotlin-test") testImplementation("org.mockito:mockito-core:5.0.0") } testOptions { unitTests.all { useJUnitPlatform() testLogging { events "passed", "skipped", "failed", "standardOut", "standardError" outputs.upToDateWhen {false} showStandardStreams = true } } } } dependencies { implementation 'com.github.convertedin:android-pixel-sdk:1.4.4' }
已尝试操作
- 清理并重建项目,无效。
- 确认
com.github.convertedin:android-pixel-sdk:1.4.4确实存在于JitPack。
问题核心:插件自身的仓库配置不会被Flutter主App模块继承,必须在主项目的Android配置中添加JitPack仓库。
1. 修改Flutter项目根目录的android/build.gradle
找到项目根目录下的android/build.gradle,在allprojects的repositories块中加入JitPack:
allprojects { repositories { google() mavenCentral() maven { url 'https://jitpack.io' } // 添加该行 } }
2. 清理缓存并重新构建
执行以下命令确保缓存清理干净:
flutter clean flutter pub get cd android && ./gradlew clean build
关键说明
Flutter插件的allprojects配置仅对插件自身构建生效,主App模块解析依赖时只会使用项目根Android模块和自身的仓库列表。因此必须在主项目的Android配置中添加JitPack,才能让构建系统找到对应的依赖。
内容的提问来源于stack exchange,提问作者youssef gamal

