Подтвердить что ты не робот

Android Gradle - что использовать вместо compileOnly?

Согласно следующему сообщению SO, compile недавно стала implementation: какая разница между реализацией и компиляцией в gradle

Мой вопрос заключается в том, что я должен использовать вместо compileOnly? Сообщение выше не относится к этой конфигурации градиента. Я знаю, что я все еще могу использовать compileOnly но что такое рекомендуемая конфигурация, которая скоро не будет устаревать?

Казалось, что все конфиги, содержащие ..compile.., будут заменены на ..implementation.. Я попробовал implementationOnly но не принял Android Studio.

4b9b3361

Ответ 1

compileOnly является замена - эквивалентная конфигурация, которая является устаревшим будет provided. См. Документацию.

Ответ 2

Плагин Android для Gradle 3.0.0

provided - до - устаревшая конфигурация
compileOnly - после - Новая конфигурация

Gradle добавляет зависимость только к пути к классам компиляции (он не добавляется в выходные данные сборки). Это полезно, когда вы создаете модуль библиотеки Android и вам нужна зависимость во время компиляции, но это необязательно для представления во время выполнения. То есть, если вы используете эту конфигурацию, то ваш библиотечный модуль должен включать условие времени выполнения, чтобы проверить, доступна ли зависимость, и затем корректно изменить его поведение, чтобы он мог продолжать функционировать, если он не предоставлен. Это помогает уменьшить размер окончательного APK, не добавляя переходные зависимости, которые не являются критическими. Эта конфигурация ведет себя так же, как предусмотрено (что в настоящее время не рекомендуется).

Ответ 3

Есть случай, когда вы принимаете IDE, автоматически предлагающее добавить проект в ваш файл Gradle, он добавит "compile project (path: 'xxx')". Исправьте это, и все будет в порядке.

Ответ 4

Зависимости вашего проекта должны быть изменены с

dependencies {
    provided 'com.someDependency:api:78'
}

в

dependencies {
    compileOnly 'com.someDependency:api:78'
}