最近尝试向我的 flutter 应用程序添加一些 Firebase 功能,这需要我在 Gradle 文件中动手。在某个时刻,Gradle 构建完全停止工作。我试图解决这些问题,结果却给我带来了更多麻烦。我在 Flutter 中几乎没有发挥作用,但 Gradle 对我来说完全是个谜。以至于我收到的错误消息对我来说都没有真正的意义。
上下文:
android/build.gradle:
allprojects {
repositories {
google()
mavenCentral()
// [required] background_fetch
// maven { url "${project(':background_fetch').projectDir}/libs" }
}
}
rootProject.buildDir = '../build'
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
project.evaluationDependsOn(':app')
}
tasks.register("clean", Delete) {
delete rootProject.buildDir
}
//
ext {
compileSdkVersion = 34
targetSdkVersion = 34
appCompatVersion = "1.4.2"
}
app/build.gradle:
plugins {
id "com.android.application"
id "kotlin-android"
id "dev.flutter.flutter-gradle-plugin"
id "com.google.gms.google-services"
}
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
localPropertiesFile.withReader('UTF-8') { reader ->
localProperties.load(reader)
}
}
//def flutterRoot = localProperties.getProperty('flutter.sdk')
//if (flutterRoot == null) {
// throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
//}
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
flutterVersionCode = '1'
}
def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
flutterVersionName = '1.0'
}
//apply plugin: 'com.android.application'
//apply plugin: 'kotlin-android'
//apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
android {
compileSdkVersion 34
ndkVersion flutter.ndkVersion
// compileSdkVersion rootProject.ext.compileSdkVersion
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}
defaultConfig {
applicationId "com.DOMAIN.APP"
minSdkVersion 23
targetSdkVersion 34
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
// targetSdkVersion rootProject.ext.targetSdkVersion
}
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
}
flutter {
source '../..'
}
dependencies {
implementation 'com.google.firebase:firebase-analytics:21.0.0'
implementation 'com.google.firebase:firebase-storage:20.0.0'
}
组装调试错误:
Running Gradle task 'assembleDebug'...
FAILURE: Build failed with an exception.
* Where:
Build file '/Users/drewmoe/Projects/APP/android/build.gradle' line: 15
* What went wrong:
A problem occurred evaluating root project 'android'.
> A problem occurred configuring project ':app'.
> Could not create task ':app:copyFlutterAssetsDebug'.
> Could not create task ':app:mergeDebugAssets'.
> Cannot use @TaskAction annotation on method IncrementalTask.taskAction$gradle_core() because interface org.gradle.api.tasks.incremental.IncrementalTaskInputs is not a valid parameter to an action method.
我假设我的 gradle 代码绝对是不良实践的噩梦:因为我一无所知,所以我试图避免碰它,并且只能通过尝试/错误来继续开发。
知道问题可能是什么吗?我完全不知所措。不知道 IncrementalTask.taskAction 到底指的是什么?我在我的应用程序上取得了一些相当惊人的进展,直到这完全让我失望。
对我来说,将
com.android.application
文件中的 settings.gradle
版本从 7.2.2 升级到 7.3.0 解决了问题。