Конфигурация «компиляция» устарела и заменена «реализацией» и «api». как решить? [Дубликат]

  • Факт 1: GetDataAsync().Result; будет выполняться, когда задача, возвращаемая GetDataAsync(), завершается, тем временем она блокирует поток пользовательского интерфейса
  • Факт 2: продолжение ожидания (return result.ToString() ]) помещается в очередь потока UI для выполнения
  • Факт 3: Задача, возвращаемая GetDataAsync(), будет завершена, когда будет запущено его очередное продолжение
  • Факт 4: Очередное продолжение никогда (факт 1)
  • Тупик!

    Тупик может быть нарушен предоставленными альтернативами, чтобы избежать Факт 1 или Факт 2.

    • Избегайте 1,4. Вместо блокировки потока пользовательского интерфейса используйте var data = await GetDataAsync(), который позволяет потоку пользовательского интерфейса продолжать работать
    • Избегать 2,3. Очередь продолжит ожидание другого потока, который не блокируется, например. используйте var data = Task.Run(GetDataAsync).Result, который выведет продолжение в контекст синхронизации потока threadpool. Это позволяет завершить задачу GetDataAsync().

    Это очень хорошо объясняется в статье Стивена Тууба , примерно наполовину вниз, где он использует пример DelayAsync().

237
задан A-Sharabiani 7 April 2018 в 19:36
поделиться

22 ответа

У меня такая же проблема. Я думаю, что лучше всего на данный момент ждать, пока Google выпустит новое исправление Gradle.

3
ответ дан André Luiz Reis 15 August 2018 в 19:40
поделиться

В моем случае, если я удаляю -> применить плагин: «com.google.gms.google-services» & lt; - эта строка, ошибка предупреждения не отображается, но приложение не может инициировать firebase, поэтому приложение сбойное

4
ответ дан Anil Kumar GN 15 August 2018 в 19:40
поделиться

перейти к вам build.gradle (уровень приложения)

build.gradle module app

и заменить слово «скомпилировать» "реализация"

будет работать на 100%

-3
ответ дан Ayoub El Khatab 15 August 2018 в 19:40
поделиться
  • 1
    Этот ответ не пригодится. ОП уже заявила, что это было сделано, поэтому она не может помочь. – NightOwl888 18 April 2018 в 01:20
  • 2
    у меня была та же проблема, я не мог создать приложение apk bcoz, что ответ решил мою проблему – Ayoub El Khatab 18 April 2018 в 12:52
  • 3
    Это не то же самое, ОП уже заявил, что он сделал это (я тоже в одной лодке), это связано с зависимостью – ElliotM 27 April 2018 в 14:44
  • 4
    OP сказал: «Я заменил все случаи компиляции путем реализации». – mapo 18 July 2018 в 19:55

У меня есть одно и то же предупреждение, вызванное com.google.gms: google-services.

Решение заключается в обновлении classpath com.google.gms: google-services to classpath 'com.google.gms : google-services: 3.2.0 'в файле в build.gradle Project:

buildscript {
    repositories {
        jcenter()
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
        classpath 'com.google.gms:google-services:3.2.0'
    }
}

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

task clean(type: Delete) {
    delete rootProject.buildDir
}

В Android Studio verion 3.1 зависимые слова complie заменен на реализацию

зависимостями с предупреждением в студии android 3.1

dependencies {
            compile fileTree(dir: 'libs', include: ['*.jar'])
            compile 'com.android.support:appcompat-v7:27.1.0'
            compile 'com.android.support.constraint:constraint-layout:1.0.2'
            testImplementation 'junit:junit:4.12'
            androidTestImplementation 'com.android.support.test:runner:1.0.1'
            androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
    }

зависимостями OK в студии android 3.1

    dependencies {
            implementation fileTree(dir: 'libs', include: ['*.jar'])
            implementation 'com.android.support:appcompat-v7:27.1.0'
            implementation 'com.android.support.constraint:constraint-layout:1.0.2'
            testImplementation 'junit:junit:4.12'
            androidTestImplementation 'com.android.support.test:runner:1.0.1'
            androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'

    }

Генерация градиров для Android Studio 3.1 для новый проект.

Gradel generate by Android Studio 3.1 for new project. [/g3]

Посетите https://docs.gradle.org/current/userguide/dependency_management_for_java_projects.html

Подробнее https://docs.gradle.org/current/userguide/declaring_dependencies.html

Удачи вам

84
ответ дан Didier 15 August 2018 в 19:40
поделиться

https://issuetracker.google.com/issues/72479188 указывает, что плагины иногда могут вводить «компилируемые» зависимости, и это то, что вызывает предупреждение. Вероятно, просто проще всего запустить эту проблему и подождать, пока они не исправят ее, чтобы указать, какие плагины вызывают проблему.

7
ответ дан Eric 15 August 2018 в 19:40
поделиться

Откройте файл build.gradle, расположенный здесь:

Это старый способ написания библиотек зависимостей (для град версии 2 и ниже):

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile files('libs/volley.jar')
    compile 'com.android.support:support-v4:21.+'
}

Это новый (правый) способ импорта зависимостей для версии 3 градиента:

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    testImplementation 'junit:junit:4.12'
    implementation files('libs/volley.jar')
    implementation 'com.android.support:support-v4:21.+'
}
9
ответ дан Gene 15 August 2018 в 19:40
поделиться

Я попытался изменить службы google gms на последнюю версию com.google.gms:google-services:3.2.1 в Android Studio 3.0.1, но предупреждение все еще сохраняется.

Как рекомендовал компилятор, я изменил все compile зависимости на implementation и testCompile - testImplementation, как это.

dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support:mediarouter-v7:27.1.1'
implementation 'com.android.support:design:27.1.1'
implementation 'com.google.firebase:firebase-ads:12.0.1'
implementation 'com.google.firebase:firebase-crash:12.0.1'
implementation 'com.google.firebase:firebase-core:12.0.1'
implementation 'com.google.firebase:firebase-messaging:12.0.1'
implementation 'com.google.firebase:firebase-perf:12.0.1'
implementation 'com.google.firebase:firebase-appindexing:12.0.1'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
testImplementation 'junit:junit:4.12'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
}

И, наконец, предупреждение удалено!

0
ответ дан Haileapp 15 August 2018 в 19:40
поделиться

Использование последней версии служб google gms разрешило это для меня.

На уровне проекта build.gradle:

buildscript {
    ...
    dependencies {
        classpath 'com.google.gms:google-services:3.2.1'
        ...  
    }
}
19
ответ дан Hovanes Mosoyan 15 August 2018 в 19:40
поделиться

В моем случае это является причиной библиотеки Realm после того, как я обновил ее до последней версии (5.1.0) Realm, проблема решена!

Вот сценарий рабочего градиента:

buildscript {
repositories {
    jcenter()
    google()
}

dependencies {
    classpath 'com.android.tools.build:gradle:3.1.2'
    classpath "io.realm:realm-gradle-plugin:5.1.0"
    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
    classpath 'com.google.gms:google-services:3.2.1'
  }
}
2
ответ дан ken 15 August 2018 в 19:40
поделиться

Я обновил com.google.gms: google-services от 3.2.0 до 3.2.1, и предупреждение перестало появляться.

 buildscript {

    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.1'
        classpath 'com.google.gms:google-services:3.2.1'

    }
}
23
ответ дан Om Infowave Developers 15 August 2018 в 19:40
поделиться
  • 1
    Как вы это обновили? – Jhorra 24 July 2018 в 20:23
  • 2
    вам просто нужно изменить версию, как у меня есть «com.google.gms: google-services: 3.2.0», вам нужно просто заменить 3.2.0 на 3.2.1. – Prateek218 25 July 2018 в 10:03
  • 3
    Спасибо, я обновил неправильный класс, поэтому я получил ошибку. – Jhorra 26 July 2018 в 00:51

Ответ google: https://issuetracker.google.com/issues/74048134

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

10
ответ дан quangkid 15 August 2018 в 19:40
поделиться
  • 1
    Я удалил ВСЕ зависимости в ALL build.gradles для моего проекта и все еще получаю ошибку – behelit 28 March 2018 в 02:39
  • 2
    EDIT: Это было вызвано сферой, используя более старую версию – behelit 28 March 2018 в 02:45

перейдите в файл build.gradle на уровне проекта, вы увидите следующие строки:

dependencies {
    classpath 'com.android.tools.build:gradle:3.1.4'  //place your cursor over here 
    //and hit alt+enter and it will show you the appropriate version to select


    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files

    classpath 'com.google.gms:google-services:4.0.2' //the same as previously
}
0
ответ дан Rabie Hamza 15 August 2018 в 19:40
поделиться

Я обновил com.google.gms:google-services с 3.1.1 до 3.2.0, и предупреждение перестало появляться.

buildscript {

    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.0'

    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files

    classpath 'com.google.gms:google-services:3.2.0'
    }
}
285
ответ дан Rohit Sharma 15 August 2018 в 19:40
поделиться
  • 1
    Конфигурация «компиляция» устарела и заменена «реализацией». Он будет удален в конце 2018 года. Чтобы быть ясным, я не использую никаких зависимостей службы google {classpath 'com.android.tools.build:gradle:3.1.0'} – Amit_android 4 April 2018 в 04:31
  • 2
    Я получаю «Не могу найти com.google.gms: google-services: 3.2.0. & Quot; когда я пробую это. Обновление: изменение вручную вызвало предупреждение lint, когда я изменил его на 3.1.1, затем Alt + Enter для применения исправления автоматически изменил его на com.google.gms: google-services: 3.2.0 без ошибок при синхронизации. Я не уверен, в чем разница, но это расстраивает. – jwehrle 8 April 2018 в 21:18
  • 3
    Хорошо, я считаю, что понимаю разницу. Я изменил путь проекта и модуля build.gradle gms к версии 3.2.0. Это связано с изменением модуля. Измените только версию проекта build.gradle gms classpath. – jwehrle 8 April 2018 в 21:27
  • 4
    Это должен быть принятый ответ – JFValdes 13 April 2018 в 09:23
  • 5
    Мне также не хватало jcenter () repo! Проект был очень старым и не включал это репо! – Yani2000 22 April 2018 в 16:53

Не нужно удалять строку. Как писал Джкревис, обновите com.google.gms: google-services до 3.2.0 и остановите предупреждения.

6
ответ дан Tom 15 August 2018 в 19:40
поделиться
  • 1
    Это не помогло мне – PhilipS 9 April 2018 в 09:49
  • 2
    Вы заменили каждое «компиляцию» на «реализацию» в проекте build.gradle (Module: App) и обновили com.google.gms: google-services в файле build.gradle (Project) до 3.2.0? – Tom 9 April 2018 в 20:58
  • 3
    Да, конечно. И то и другое – PhilipS 10 April 2018 в 22:19

Обходной путь для решения этой проблемы был для меня тем, что я использовал более старую версию Gradle, которую можно найти здесь здесь :

Я использовал gradle-3.0-rc- 1-src, но другие могут работать тоже, хотя, вероятно, это не должно быть новее, чем версия 3.0.

Сначала извлеките zip-файл в любом месте.

Затем перейдите в File -> Settings -> Build, Execution, Deployment -> Gradle и измените настройку на Use local gradle distribution. После этого убедитесь, что поле Gradle Home - указывает на каталог .gradle в каталоге, который вы только что распаковали.

Перестройте проект, и все должно быть в порядке.

1
ответ дан tpn 15 August 2018 в 19:40
поделиться
0
ответ дан Ajjay Arora 5 September 2018 в 18:53
поделиться
0
ответ дан Khemraj 5 September 2018 в 18:53
поделиться
0
ответ дан Pradeep Sheoran 5 September 2018 в 18:53
поделиться
0
ответ дан liang zhang 29 October 2018 в 03:00
поделиться
0
ответ дан PerrierCitror 29 October 2018 в 03:00
поделиться
-1
ответ дан Thiyagu 29 October 2018 в 03:00
поделиться
-1
ответ дан Ujjwal Singh 29 October 2018 в 03:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: