Как вариант отладочной версии может зависеть от кода выпуска - PullRequest
0 голосов
/ 08 ноября 2018

Я публикую многомодульную библиотеку Android. Сценарий использования: я хочу запустить пример приложения (в режиме отладки) против выпуска AAR (которые защищены) моей библиотеки. Конечная цель - проверить, какие именно артефакты будут опубликованы.

Мои модули и их требуемые типы сборки:

:my-library (release)
:mock-server (debug)
:sample (debug)

:sample зависит от :my-library и :mock-server. :mock-server также зависит от :my-library.

Для этого я настроил размер вкуса:

android {
  flavorDimensions "SOURCE_OR_BINARY"

  productFlavors {
    source {
      // indicates that project dependencies are used directly
    }
    binary {
      // dependencies added via here will be AARs
    }
}

dependencies{
  binaryImplementation(name: ':my-library', ext: 'aar')
  sourceImplementation project(':my-library')
  implementation project(':mock-server')
}

task prepareBinaryDependencies(dependsOn: [
        ":my-library:assembleRelease" // to generate AARs
]) {}

//
tasks.whenTaskAdded { task ->
    def taskName = task.name.toLowerCase()
    if (taskName.toLowerCase().contains("binary")) {
        // Prepare libs as binaries
        task.dependsOn prepareBinaryDependencies
        task.doFirst {
            prepareBinaryDependencies
        }
    }
}

Это прекрасно работает с ./gradlew в командной строке, но Android Studio часто сообщает о Failed to resolve: :my-library-release: во время синхронизации gradle. Если я выполню ./gradlew assemble в командной строке, , а затем синхронизирую Android Studio, синхронизация AS Gradle завершится успешно.

Кажется, я здесь что-то не так делаю. Есть ли способ сделать это лучше, чтобы избежать ошибки синхронизации Failed to resolve Android Studio Gradle?

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