具体报错
Could not create task ‘:generateLockfiles’.
场景
- 组件化的安卓工程集成flutter_boost
2.验证过程中组件化的安卓工程集成futter依然会出现
分析过程
- 查看报错信息,指向flutter的构建脚本,那么考虑可能flutter版本问题
- 切换至最新版本,再次run,成功。
- 因为flutter_boost在最新flutter版本下有各式问题,考虑找到flutter官方在新版本中修复的具体内容.
- 在2.5.x和最新版本flutter中搜索generateLockfiles对比,发现修复的内容,并且在git提交内容中查找到.
rootProject.tasks.register('generateLockfiles') {
rootProject.subprojects.each { subproject ->
def gradlew = (OperatingSystem.current().isWindows()) ?
"${rootProject.projectDir}/gradlew.bat" : "${rootProject.projectDir}/gradlew"
rootProject.exec {
workingDir rootProject.projectDir
executable gradlew
args ":${subproject.name}:dependencies", "--write-locks"
if (isFlutterAppProject()) {
rootProject.tasks.register('generateLockfiles') {
rootProject.subprojects.each { subproject ->
def gradlew = (OperatingSystem.current().isWindows()) ?
"${rootProject.projectDir}/gradlew.bat" : "${rootProject.projectDir}/gradlew"
rootProject.exec {
workingDir rootProject.projectDir
executable gradlew
args ":${subproject.name}:dependencies", "--write-locks"
}
}
}
}
- 进入flutter module下 flutter clean 然后重新 flutter pub get (flutter 版本切换时会有缓存库的问题)
- 在Android 原生项目下Run,成功运行
回顾构建过程
Configure project :flutter
卡在了flutter 子工程的依赖构建(混合开发时引入),然后busy 导致守护线程不停启动直至电脑卡死(Android Studio 4.1).
从阅读源码上来看,旧版本的flutter在组件化的安卓项目中没有对module做 ‘是否为flutter module’的判断,去执行了 ./gradlew 脚本导致线程等待卡死.