问题的根本原因是在同一仓库中存在多个使用 Flutter(Android)开发的应用,并且当前的 AppCenter 缺少对多模块应用构建的支持。为了解决这个问题,我们需要手动修改 AppCenter 的构建脚本来针对不同的应用进行构建,并且使用不同的构建规则来生成不同的应用包。
以下是一个使用 Flutter 开发的 Android 应用在 AppCenter Build 中的构建脚本示例,其中包含了生成不同应用包的规则:
// Android Gradle task to build and package the app task assembleApp1Debug(type: GradleBuild) { def buildFlavor = "app1Debug" def buildType = "debug"
group "Build"
description "Build ${buildFlavor} for ${buildType}"
// Set the build flavor and build type for the task
tasks = ["assemble${buildFlavor.capitalize()}${buildType.capitalize()}"]
// Set the environment variables for the task
environment "FLAVOR", buildFlavor
environment "TYPE", buildType
}
task assembleApp2Debug(type: GradleBuild) { def buildFlavor = "app2Debug" def buildType = "debug"
group "Build"
description "Build ${buildFlavor} for ${buildType}"
tasks = ["assemble${buildFlavor.capitalize()}${buildType.capitalize()}"]
environment "FLAVOR", buildFlavor
environment "TYPE", buildType
}
// Add the tasks to AppCenter Build pipeline appcenter { stages { build { steps { gradle { // Run the Gradle tasks to build and package the apps targets = ["assembleApp1Debug", "assembleApp2Debug"] build_file = "android/app/build.gradle" } } } } }
在以上示例中,我们通过定义不同的 Gradle 任务来生成不同应用包,并且将这些任务添加到了 AppCenter Build 的构建流程中。这样一来,即使在同一仓库中存在多个使用 Flutter(Android)开发的应用,我们也能够使用 AppCenter 分别针对不同应用进行构建和发布。