Не могу построить в автономном режиме. «Нет списка кэшированных версий для androidx.fragment: fragment: [1.2.0], доступного для автономного режима» - PullRequest
5 голосов
/ 07 мая 2020

Я бы хотел работать над своим проектом в автономном режиме. Поэтому я отключаю автономный режим, нажимаю кнопку «syn c project with gradle files», затем включаю автономный режим и пытаюсь построить. Однако каждый раз, когда я это делаю, я получаю сообщение об ошибке:

FAILURE: Build failed with an exception.

*What went wrong:

Could not determine the dependencies of task ':app:compileDebugRenderscript'.
  > Could not resolve all task dependencies for configuration ':app:debugCompileClasspath'.
      > Could not resolve androidx.fragment:fragment:[1.2.0].
        Required by
           project :app > androidx.fragment:fragment-ktx:1.2.0
               > No cached version listing for androidx.fragment:fragment:[1.2.0] available for offline mode.
               > No cached version listing for androidx.fragment:fragment:[1.2.0] available for offline mode. 

Я также пробовал аннулировать кеш / перезапуск, а затем gradle syn c перед включением автономного режима с тем же результатом.

Я запускаю Android Studio 3.6.3

gradle-wrapper.properties содержит следующее:

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

Как сделать androidx.fragment: fragment доступно для автономного режима?

1 Ответ

0 голосов
/ 09 июня 2020

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

Я предполагаю, что вы используете другую зависимость фрагмента (androidx.fragment:fragment) где-то еще, которая выбрана по умолчанию в онлайн-режиме. Теперь в автономном режиме, поскольку такая проверка невозможна, Gradle ищет версию 1.2.0 (требуется androidx.fragment:fragment-ktx:1.2.0) и не может ее найти, потому что if никогда не загружался / не кешировался.

Лучшее решение - попробуйте сделать так, чтобы ваши зависимости ссылались на одни и те же версии конфликтующих суб-зависимостей. Вы можете проверить свое дерево зависимостей с помощью ./gradlew app:dependencies и обновить зависимости, которые конфликтуют, чтобы они использовали одни и те же версии (если возможно).

Другое решение - установить зависимости в Gradle. Вы можете добавить в свой build.gradle файл что-то вроде этого:

configurations.all {
    resolutionStrategy {
        if (project.gradle.startParameter.offline) {
            // x.y.z being the version that Gradle picks in the online mode.
            force 'androidx.fragment:fragment:x.y.z'
        }
    }
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...