Ошибка в моем проекте флаттера после попытки изменить цель SDK

Я больше не могу запускать свое приложение, так как пытался изменить целевой SDK с 33 на 34. Теперь, даже когда я меняю его обратно, я получаю ту же ошибку:


ОШИБКА: сборка не удалась с исключением.

  • Где: Строка файла сборки «C:\Users\dicov\Downloads\Flutter-Dating-App-master\android\build.gradle»: 28

  • Что пошло не так: Возникла проблема при оценке корневого проекта «android». Возникла проблема при настройке проекта «:app». Не удалось уведомить прослушиватель оценки проекта. > 'com.android.build.api.variant.SourceDirectories$Flat com.android.build.api.variant.Sources.getByName(java.lang.String)'


Это мой build.gradle

    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 keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
    keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}


def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
    flutterVersionCode = '1'
}

def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
    flutterVersionName = '1.0'
}



android {
    compileSdkVersion 34
    ndkVersion flutter.ndkVersion

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    kotlinOptions {
        jvmTarget = '1.8'
    }

    sourceSets {
        main.java.srcDirs += 'src/main/kotlin'
    }

    defaultConfig {
        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
        applicationId "...."
        // You can update the following values to match your application needs.
        // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration.
        minSdkVersion 24
        targetSdkVersion 33
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName

    }

    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 platform('com.google.firebase:firebase-bom:32.0.0')
    implementation 'com.google.firebase:firebase-analytics'
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.22"
    implementation 'com.google.android.gms:play-services-ads:23.1.0'
}

И это мой манифест:

<manifest xmlns:android = "http://schemas.android.com/apk/res/android"
    package = "......">

    <!-- Internet permission -->
    <uses-permission android:name = "android.permission.INTERNET"/>

    <!-- Google Mobile Ads ID permission -->
    <uses-permission android:name = "com.google.android.gms.permission.AD_ID"/>

    <!-- Google Play Billing permission -->
    <uses-permission android:name = "com.android.vending.BILLING" />

    <!-- Foreground service special use permission -->
    <uses-permission android:name = "android.permission.FOREGROUND_SERVICE_SPECIAL_USE"/>

    <application
        android:label = "Smash or Pass"
        android:name = "${applicationName}"
        android:icon = "@mipmap/launcher_icon">

        <activity
            android:name = ".MainActivity"
            android:exported = "true"
            android:launchMode = "singleTop"
            android:theme = "@style/LaunchTheme"
            android:configChanges = "orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
            android:hardwareAccelerated = "true"
            android:windowSoftInputMode = "adjustResize">

            <meta-data
                android:name = "io.flutter.embedding.android.NormalTheme"
                android:resource = "@style/NormalTheme"
                />

            <intent-filter>
                <action android:name = "android.intent.action.MAIN"/>
                <category android:name = "android.intent.category.LAUNCHER"/>
            </intent-filter>

            <service
                android:name = "Smash or pass"
                android:foregroundServiceType = "specialUse">
                <property
                    android:name = "android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE"
                    android:value = "My foreground service is showing pictures but I don't use the packages that is needed for the Media Projection foreground type"
                    />
            </service>
        </activity>

        <!-- Don't delete the meta-data below. This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
        <meta-data
            android:name = "flutterEmbedding"
            android:value = "2" />

        <!-- Google Mobile Ads Application ID -->
        <meta-data
            android:name = "com.google.android.gms.ads.APPLICATION_ID"
            android:value = "real one here"/>
    </application>
</manifest>

Это мой уровень Android build.gradle:

buildscript {
    ext.kotlin_version = '2.0.0'
    repositories {
        google()
        mavenCentral()

    }

    dependencies {
        classpath 'com.android.tools.build:gradle:7.4.2'
        classpath 'com.google.gms:google-services:4.4.2'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.0"
    }
}

allprojects {
    repositories {
        google()
        mavenCentral()
    }
}

rootProject.buildDir = '../build'
subprojects {
    project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
    project.evaluationDependsOn(':app')
}

tasks.register("clean", Delete) {
    delete rootProject.buildDir
}

И помощник по обновлению SDK для Android мне тоже не помогает: я делаю все, что он говорит, но он все еще не проверяет компоненты, которые я сделал для обновления моего SDK с 33 до 34.

Может кто-нибудь, пожалуйста, помогите мне, спасибо.

Вы пробовали следующие команды в терминале? flutter clean, flutter pub get

Texv 06.07.2024 18:29

Я только что попробовал эти команды, но все равно получаю ту же ошибку.

Android_devNL 06.07.2024 20:11

Вы показываете нам build.gradle уровня приложения, но ошибка говорит об уровне проекта (C:...\android\build.gradle). Можете ли вы показать нам другой build.gradle? должны быть изменения, внесенные автоматически при обновлении SDK.

Texv 07.07.2024 08:02

Я добавил build.gradle на уровне Android

Android_devNL 07.07.2024 12:34

Я попытался воспроизвести ваш код и не вижу никаких проблем. Я не уверен, почему вы получаете ошибку. Если вы используете студию Android, можете ли вы попробовать вернуть всю папку к предыдущему состоянию? Щелкните правой кнопкой мыши папку Android> Локальная история> Показать историю> щелкните правой кнопкой мыши, затем нажмите «Вернуть более старую версию папки, которая раньше работала».

Texv 08.07.2024 06:01

Также проверьте, что для оболочки Gradle (android/gradle/wrapper/gradle-wrapper.properties) установлено значение distributionUrl=https\://services.gradle.org/distributions/g‌​radle-7.5-all.zip, и обязательно запускайте flutter clean после любых изменений.

Texv 08.07.2024 06:03

Я изменил ее на эту ссылку и запустил flutter clean, но все равно получаю сообщение об ошибке, теперь оболочка выглядит так: #Пятница, 23 июня, 08:50:38 CEST 2017. Dists DistributionUrl=https\://services.gradle.org/distributions/g‌​radle-7.5-all.zip

Android_devNL 08.07.2024 21:02

Может ли моя версия Java или версия Kotlin иметь к этому какое-либо отношение?

Android_devNL 09.07.2024 00:22

попробуй очистить и восстановить

Hanif Shaikh 09.07.2024 09:22

Да, в основном причиной может быть что угодно, более подробная информация об ошибке должна быть указана после части «Не удалось уведомить прослушиватель оценки проекта». Должна быть полная трассировка стека, в которой должна быть корневая проблема («вызванная SomeException»), возможно, ее необходимо включить, чтобы она стала видимой (например, подсказки stackoverflow.com/q/21674091). Странные ошибки сборки часто возникают из-за несоответствия версий. Версия Java, версия Gradle, версии плагинов Gradle, версия флаттера, версии флаттера, ...

zapl 09.07.2024 19:03

почему вы используете targetSdkVersion 33 и компилируетеSdkVersion 34?

Aman khan Roohani 11.07.2024 09:08

Требовалось пространство имен, и это решило ошибку на данный момент: у меня было много других ошибок, я сообщу вам, ребята, действительно ли это исправило это.

Android_devNL 12.07.2024 00:10

Чтобы ответить Аману Хану, это потому, что в противном случае это будет отображаться как ошибка в коде.

Android_devNL 12.07.2024 00:11
2
13
241
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

Сделайте резервную копию вашего проекта, а затем попробуйте выполнить следующие действия, чтобы обновить проект с помощью SDK 34:

В /android/app/build.gradle

android {
    compileSdk = 34
    ndkVersion = flutter.ndkVersion
}

Обновите версию Gradle в вашем файле /android/build.gradle:

dependencies {
        classpath 'com.android.tools.build:gradle:8.1.4'
}    

Обновите оболочку Gradle в URL-адресе распространения в /android/gradle/wrapper/gradle-wrapper.properties:

distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-all.zip

В настройках Android Studio перейдите в «Внешний вид и поведение» > «Настройки системы» > Android SDK > «Инструменты SDK» > убедитесь, что установлена ​​версия 34.0.0.

После этих изменений выполните следующие команды по порядку:

flutter clean

flutter pub get

cd android

./gradlew clean

Выполнение приведенной выше команды может занять от 5 до 7 минут в зависимости от скорости вашего интернета. Пожалуйста, будьте терпеливы. Также не забудьте сначала создать каталог cd android и НЕ делать что-то вроде ./android/gradlew clean, иначе он не найдет необходимые файлы.

./gradlew build

cd ../

Теперь запустите свой проект и посмотрите, работает ли он. Если нет, пожалуйста, используйте подробный ответ и обновите свой вопрос, указав дополнительную информацию об ошибке.

flutter run --verbose --debug

Попробуйте обновить градиент корневого уровня, уровень приложения и настройки градиента, как указано в этой статье. Его необходимо было обновить новыми версиями флаттера. https://docs.flutter.dev/release/breaking-changes/flutter-gradle-plugin-apply

Если у вас все еще есть проблема, возможно, это вам поможет, сначала удалите pubspec.lock, а затем

flutter clean
flutter pub get

Иногда, когда мы обновляем pubspec.yaml или меняем какую-либо зависимость в основной папке Android pubspec.lock, она не обновляется, поэтому нам нужно обновить ее, удалив и создав заново.

Добавьте целевую версию SDK и скомпилируйтеSdkVersion с 33 по 34. После открытия папки проекта Android для студии Android и обновите все версии Gradel и Kotline.

Я обновил версию Gradel и Kotlin в build.gradle, но все равно получаю ту же ошибку.

Android_devNL 11.07.2024 23:36

Порхайте чисто и порхайте в пабе. пожалуйста, проверьте версию вашей студии Android. моя версия студии Android — Медуза | 2023.3.1 (апрель 2024 г.). Пожалуйста, попробуйте использовать последнюю версию Android Studio.

Dimmithra Perera 12.07.2024 09:46

от targetSdkVersion 33 до targetSdkVersion 34

Возможно, вы можете попробовать обновить версию Gradle, совместимую с SDK 34.

Когда вы обновляете SDK компиляции до версии 34, необходимо обновить версию плагина Gradle как минимум до 8.1.1, а версию Gradle — до 8.1.

Ответ принят как подходящий

Требовалось пространство имен, и это решило ошибку на данный момент.

Другие вопросы по теме