Сторонние плагины Gradle могут быть причиной


132

После обновления до Android Studio 3.1 я получил следующее сообщение об ошибке:

Проект работает нормально, и это в основном просто предупреждение, поэтому мой вопрос: в чем смысл предупреждения и как от него избавиться?

Соответствующие части из файлов Gradle:

Это мой проект build.gradle

buildscript {
    ext {
        kotlin_version = '1.2.31'
        anko_version = '0.10.4'
        room_version = '1.0.0'
        support_version = '27.1.0'
        firebase_version = '12.0.0'
        gms_version = '12.0.0'
    }

    repositories {
        google()
        jcenter()
        maven { url 'https://dl.bintray.com/kotlin/kotlin-dev' }
        maven { url 'https://maven.fabric.io/public' }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.0'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        mavenCentral()
        maven { url "https://jitpack.io" }
        maven { url 'https://dl.bintray.com/kotlin/kotlin-dev' }
    }
}

А это build.gradleфайл моего приложения :

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'

android {
    compileSdkVersion 27
    defaultConfig {
        minSdkVersion 21
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

1
согласно Issueetracker.google.com/issues/74537216, эта проблема исправлена ​​в AS3.2
Энджел Ко,

Build> Rebuild Projectработал у меня
Зохаб Али

Ответы:


143

Чтобы решить эту проблему, удалите Instant App Provision из «Конфигураций запуска» и оставьте только файл Gradle-Aware Make.

Run -> Edit Configurations..

Мои конфигурации Run / Debug после успешной сборки

У меня есть версия библиотеки AndroidStudio 3.1, Gradle Plugin 3.1.0и Kotlin 1.2.30.


5
это действительно работает, но любая идея, почему это происходило и как вы пришли к этому решению.
Humazed

59
и почему-то после удаления Instant App Provisionsвсегда возвращается на место.
Humazed

3
Это отключает мгновенный запуск?
Caleb_Allen

7
@Caleb_Allen нет, но все равно никто не использует мгновенный запуск. Это для «мгновенных приложений», а не для мгновенного запуска
Тим

4
Для тех, кто продолжает возвращаться (например, @humazed), я нашел исправление: сначала зайдите Run > Edit Configurationsснова. Затем перейдите к Edit Defaults, нажав кнопку со значком гаечного ключа вверху. Выберите Android Appи оставьте только Gradle-aware Makeкак раньше. Хит применить.
b_yng 04

17

Я перезапустил Android Studio, и проблема исчезла.

Нажмите File -> Invalidate Caches / Restart.

Каждый раз, когда я меняю файл gradle, я должен перезапустить Android Studio, иначе проблема вернется.

Вы также можете попробовать это:

  1. Повторно упорядоченные репозитории:

    mavenCentral()
    maven { url 'https://jitpack.io' }
    google()
    jcenter()
  2. Очистка этой папки: пользовательский ~ / .gradle / caches и удаление папки сборки приложения вручную, затем очистка и повторная сборка .


Но я все еще не могу запустить свое приложение, так как оно построит проект перед его запуском.
Infinite Loops

7

Что устранило проблему для меня:

  • Измените версию плагина gradle на 3.1.0
  • Измените версию Kotlin на 1.2.30
  • Затем студия Android изменила оболочку gradle на версию 4.4
  • Затем студия Android заявила, что использованная версия инструментов сборки была 27.0.3и что я должен изменить ее на, 27.0.3поэтому я также изменил целевой SDK на27
  • Я добавил это в свой gradle.build:

    kapt {
         generateStubs = true
     }

Я надеюсь, что это помогает


5

в android studio v3.1.2 произошла ошибка:

Folder D:\AndroidProjects\app\build\generated\source\kaptKotlin\debug
Folder D:\AndroidProjects\app\build\generated\source\kaptKotlin\release
3rd-party Gradle plug-ins may be the cause

потому что dataBinding использовать, apply plugin: 'kotlin-kapt'поэтому добавьте

kapt {
    generateStubs = true
}
  1. Измените версию плагина gradle на 3.1.2
  2. Измените версию Kotlin на 1.2.30
  3. Затем студия Android изменила оболочку gradle до версии 4.4
  4. Затем студия Android заявила, что используемая версия инструментов сборки - 27.1.1, и что я должен изменить ее на 27.1.1, поэтому я также изменил целевой SDK на 27.

5

Вот несколько шагов, которые я выполнил. В моем случае проблема решена!

Модули платформы, ориентированные на Android. В обновленной функции экспериментальных мультиплатформенных проектов добавлена ​​поддержка модулей платформы Android. Эти модули должны применять соответствующий плагин в скрипте сборки Gradle и могут использовать общий код из общего модуля:

apply plugin: 'com.android.application'
apply plugin: 'kotlin-platform-android'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
// ...
// ...

Диагностические местоположения Kapt На данный момент kapt, инструмент обработки аннотаций Kotlin, может предлагать ссылки на местоположения в исходном коде Kotlin, а не сгенерированные Java-заглушки, поскольку он сообщает об ошибках, обнаруженных во время обработки аннотаций. Вы можете включить эту функцию, добавив эти строки в скрипт сборки Gradle (build.gradle):

kapt {
    mapDiagnosticLocations = true
}

Добавь это:

allprojects {
        repositories {
            jcenter()
            google()
        }
    }

Не забывайте следующее:

// Architecture Component - Room

     implementation "android.arch.persistence.room:runtime:1.1.0-beta1"
        kapt "android.arch.persistence.room:compiler:1.1.0-beta1"

      // Lifecyles, LiveData and ViewModel
    kapt 'com.android.databinding:compiler:3.1.0'


 // ViewModel and LiveData
    implementation "android.arch.lifecycle:extensions:1.1.1"

// alternatively, just ViewModel
    implementation "android.arch.lifecycle:viewmodel:1.1.1"

 // alternatively, just LiveData
     implementation "android.arch.lifecycle:livedata:1.1.1"
       kapt "android.arch.lifecycle:compiler:1.1.1"

 // Room (use 1.1.0-beta1 for latest beta)
    implementation "android.arch.persistence.room:runtime:1.0.0"
      kapt "android.arch.persistence.room:compiler:1.0.0"


// Paging
    implementation "android.arch.paging:runtime:1.0.0-alpha7"

        // Test helpers for LiveData
    testImplementation "android.arch.core:core-testing:1.1.1"

        // Test helpers for Room
 testImplementation "android.arch.persistence.room:testing:1.0.0"
  1. Очисти свой проект

  2. Собери и готово!

Добавьте все это, очистите свой проект, соберите и все! :) Сообщите мне, если это сработает! (Если у вас не работает, я помогу вам с другим решением)

Дополнительная информация: Сайт Android :) Дайте мне знать, если это работает! (Если не сработает, я постараюсь помочь вам найти лучший способ)

Если вы дадите голосование, объясните, почему


1
Добавление строки mapDiagnosticLocations = trueв kaptконфигурацию работает - ну иногда по крайней мере: /
кухнроял

@kuhnroyal Я ценю ваш отзыв! Хорошего дня, я продолжаю искать лучшее решение
Кристофер


3

В моем случае ни одно из вышеперечисленных решений не решило мою проблему, я использовал версию 1.2.50 Kotlin без какого-либо упоминания о Instant Run, а сборка не генерировала классы Dagger, поэтому я выяснил, что этот вопрос решил мою проблему, по-видимому , в моей ситуации это проблема, связанная с новой версией Kotlin, поэтому я перешел на версию 1.2.41 и работал нормально. Кстати, я просто дошел до этой точки, потому что использовал Toggle View на экране сборки.

1. Выберите Toggle View и создайте свой проект.

Переключить вид

2: Вы сможете точно увидеть, что произошло

ошибка

Вопрос о переполнении стека: Kotlin 1.2.50 запрашивает baseFeatureInfoDir

Система отслеживания проблем: https://issuetracker.google.com/issues/110198434



2

Вот несколько шагов, которые я выполнил, и в моем случае проблема была решена.

  1. Прежде всего установите версию плагина kotlin до «1.2.31» и обновите ее в файле build.gradle, как показано ниже.

зависимости {classpath 'com.android.tools.build:gradle:3.1.0' classpath "org.jetbrains.kotlin: kotlin-gradle-plugin: $ 1.2.31"}

  1. Чистый проект.

  2. Наконец, перестройте проект.


1
  1. удалять apply plugin: 'kotlin-kapt'
  2. добавьте mavenCentral()build.gradle, например:

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

  3. Синхронизация и очистка проекта

0

Вот несколько подходов к решению этой проблемы в моем случае:

Прежде всего обновите версию плагина android gradle из файла gradle сборки проекта, а затем обновите версию gradle из свойств gradle.

Наконец, обновите свою версию kotlin (обязательно) до kotlin_version = '1.2.30' или более поздней из файла gradle сборки проекта.

Теперь попробуйте очистить свой проект и собрать. Проблема должна быть решена. Каждый раз после сборки, если вы собираете снова, вероятно, проблема будет возникать снова, поэтому просто очистите свой проект еще раз, а затем выполните сборку.



0

Добавляем еще один ответ для тех, кто не смог удалитьInstant App Provision , потому что он продолжает появляться.

Соберите проект вручную: ./gradlew assembleDebug

Это исправление, но оно будет работать (поскольку проблема, вероятно, связана с Android Studio).


0

У меня возникла эта проблема при использовании Realm с kotlin в студии Android.
Чтобы решить, выполните следующие действия:

  1. После добавления Realm в проект build.gradle убедитесь, что файл build.gradle вашего приложения выглядит следующим образом:

    apply plugin: 'com.android.application'  
    apply plugin: 'kotlin-android'  
    apply plugin: 'kotlin-android-extensions'  
    apply plugin: 'kotlin-kapt'  
    apply plugin: 'realm-android'  
    .  
    .  
    .  
    androidExtensions {  
    experimental = true
    }
  2. Используйте kaptвместо annotationProcessorзависимостей build.gradle в вашем приложении.

  3. Перейти Run -> Edit Configurations..и удалить Instant App Provisionвариант.

  4. Запустите эту команду в терминале студии Android:

    gradlew assembleDebug  
  5. Все нормально !

Примечание. Если вы снова видите сообщение «Причиной могут быть сторонние плагины Gradle», повторите шаги 3 и 4.


0

Конфигурация по запросу с Gradle 4.6 и выше: если вы используете Android Gradle Plugin 3.0.x или 3.1.x с Gradle 4.6 и выше, вам следует отключить настройку по запросу, чтобы избежать некоторых непредсказуемых ошибок сборки. (Если вы используете Android Gradle Plugin 3.2.0 или более поздней версии, вам не нужно предпринимать никаких действий для отключения конфигурации по запросу.)

Отключите конфигурацию по запросу в вашем файле gradle.properties, как показано ниже:

org.gradle.configureondemand = false Чтобы отключить настройку по запросу в настройках Android Studio, выберите «Файл»> «Настройки» (Android Studio

Предпочтения на Mac), выберите категорию «Компилятор» на левой панели и снимите флажок «Настроить по запросу».

В Android Studio 3.2 Beta 1 и более поздних версиях удалена возможность включения конфигурации по запросу. Прочтите раздел известных проблем по ссылке ниже. введите описание ссылки здесь



-4

Что ж, я обнаружил, что это из-за apply plugin: 'kotlin-kapt',, если вы удалите эту строку в build.gradle (app), вы успешно выполните сборку ...

Понятия не имею, почему этот плагин выдает эти предупреждения.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.