Причиною можуть бути сторонні плагіни 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/isissue/74537216 ця проблема виправлена ​​в AS3.2
Angel Koh

Build> Rebuild Projectпрацював у мене
Зохаб Алі

Відповіді:


143

Щоб вирішити проблему, видаліть Instant App Provision із "Запустити конфігурації" і залиште лише Gradle-Aware Make.

Run -> Edit Configurations..

Мої конфігурації Run / Debug після успішної збірки

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


5
це насправді працює, але будь-яка ідея, чому це сталося і як ти дійшов до цього рішення.
гумав

59
і чомусь після Instant App Provisionsїї видалення завжди повертається на своє місце.
гумав

3
Це відключає миттєвий запуск?
Caleb_Allen

7
@Caleb_Allen ні, але все одно ніхто не використовує миттєвий запуск. Це для 'миттєвих додатків', а не миттєвого запуску
Тім

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

17

Я перезапустив Android Studio і проблема зникла.

Клацніть Файл -> Недійсний кеш / Перезапуск

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

Ви також можете спробувати це:

  1. Повторне замовлення сховищ для:

    mavenCentral()
    maven { url 'https://jitpack.io' }
    google()
    jcenter()
  2. Очищення цієї папки: користувач ~ / .gradle / кешує і видаляє папку збірки додатків вручну, після чого очистіть і відновіть .


Але я все ще не можу запустити свою програму, оскільки вона створить проект перед його запуском.
Нескінченні петлі

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

тому що використання прив'язки даних apply plugin: 'kotlin-kapt'так додає

kapt {
    generateStubs = true
}
  1. Змініть версію додатка gradle на 3.1.2
  2. Змініть версію Котліна на 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, може пропонувати посилання на місця в оригінальному коді Котліна, а не на генеровані заглушки 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

@kuhnroyal Я ціную ваші відгуки! Приємного дня, я продовжую шукати кращого рішення
Крістофер


3

У моєму випадку жодне з перерахованих вище рішень не вирішило мою проблему, я використовував версію Kotlin 1.2.50 без жодної згадки про Instant Run, і збірка не породжувала класи Dagger, тому я знаходжу це питання, яке вирішило мою проблему, мабуть , в моїй ситуації це проблема, пов’язана з новою версією Kotlin, тому я перейшов на версію 1.2.41 і працював чудово. До речі, я просто простежив до цього моменту, тому що використовував Toggle View на екрані Build.

1: Виберіть перегляд Toggle і складіть проект

Переключити перегляд

2: Ви зможете побачити, що саме сталося

Помилка

Питання щодо Stackoverflow: Kotlin 1.2.50 запитує baseFeatureInfoDir

Відстежувач випусків: https://issuetracker.google.com/isissue/110198434


2

Спробуйте видалити миттєвий запуск з налаштувань, і gradle буде добре працювати.

Це працювало для мене.


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 з властивостей gradle.

Нарешті оновіть свою версію kotlin (Обов’язково) до kotlin_version = '1.2.30' або пізнішої версії з файлу gradle проекту build.

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


0

Це відбувається тому, що процесор приміток Kapt використовує цей каталог для зберігання файлів, створених Kotlin. На даний момент Android не розпізнає шлях за замовчуванням.

Див. Подальші подробиці


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 (додаток), то ви будете успішно будувати ...

Поняття не маю, чому цей плагін призводить до цих попереджень.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.