У меня есть библиотечный модуль, который я хочу включить в пример приложения в качестве зависимости AAR:
:my-library
:sample-app
Итак, в sample/build.gradle
я делаю следующее:
repositories {
flatDir {
dirs "../my-library/build/outputs/aar"
}
}
// I have different flavors that specify whether to use the source or binary (aar) dependency
flavorDimensions "SOURCE_OR_BINARY"
productFlavors {
source { }
binary { }
}
dependencies {
sourceImplementation project(':my-library')
binaryImplementation(name: 'my-library-release', ext: 'aar') // <-- this line fails with error
}
tasks.whenTaskAdded { task ->
def taskName = task.name.toLowerCase()
if (taskName.toLowerCase().contains("binary")) {
// Prepare libs as binaries
task.dependsOn ('my-library:assembleRelease')
}
}
Это прекрасно работает с ./gradlew
в командной строке, но Android Studio сообщает Failed to resolve: :my-library-release:
во время синхронизации gradle.Если я выполню ./gradlew assemble
в командной строке, затем , синхронизирую Android Studio, синхронизация AS Gradle завершится успешно.
Проблема связана с синхронизацией binaryImplementation(name: 'my-library-release', ext: 'aar')
.Когда выполняется Gradle Sync, aar
еще не существует, потому что он еще не построен.
Есть ли лучший способ сделать это, чтобы избежать ошибки Failed to resolve
Android Studio Gradle Sync?