Невозможно получить транзитивные зависимости моей библиотеки в моем приложении для Android - PullRequest
1 голос
/ 18 июня 2019

Я создал библиотеку Android в Android-студии, которая имеет некоторые внешние зависимости (например, Retrofit).Но когда я пытался использовать эту библиотеку в приложении для Android, приложение не включало транзитивные зависимости (включенные в библиотеку).

Я уже пытался опубликовать библиотеку в Bintray, изменитеКлючевое слово «реализация» в файле app-gradle - «api».Я также попытался установить transitive = true в файле Gradle моего приложения

. При попытке создать приложение для Android отображается Resource Linking Failed для CardView, который используется в моей библиотеке.

1 Ответ

1 голос
/ 28 июня 2019

Я столкнулся с той же проблемой при создании библиотеки для Android.Я пытался напрямую загрузить файл .aar из андроид-студии в bintray.Но, по-видимому, это не был файл pom.xml.Поэтому я следовал этому руководству, чтобы сгенерировать zip-файл.Затем создайте новую версию на bintray и затем вручную загрузите zip-файл, используя параметр UI upload. Кроме того, не забудьте проверить параметр explode this Archive при загрузке.Затем вы можете опубликовать библиотеку и использовать ее со всеми ее переходными зависимостями.Вот пример build.gradle code:

def version = 'your.version'
def localReleaseDest = "${buildDir}/release/${version}"
uploadArchives {
    repositories.mavenDeployer {
        pom.groupId = 'your.package.name'
        pom.artifactId = 'yourModuleName'
        pom.version = 'your.version'
        // Add other pom properties here if you want (developer details / licenses)
        repository(url: "file://${localReleaseDest}")
    }
}

task androidJavadocs(type: Javadoc) {
    source = android.sourceSets.main.java.srcDirs
    classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}

task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
    classifier = 'javadoc'
    from androidJavadocs.destinationDir
}

task androidSourcesJar(type: Jar) {
    classifier = 'sources'
    from android.sourceSets.main.java.srcDirs
}

artifacts {
    archives androidSourcesJar
    archives androidJavadocsJar
}
task zipRelease(type: Zip) {
    from localReleaseDest
    destinationDir buildDir
    archiveName "release-${version}.zip"
}

task generateRelease {
    doLast {
        println "Release ${version} can be found at ${localReleaseDest}/"
        println "Release ${version} zipped can be found ${buildDir}/release-${version}.zip"
    }
}

generateRelease.dependsOn(uploadArchives)
generateRelease.dependsOn(zipRelease)

- поместите этот код за пределы всех блоков на уровне вашего уровня приложения после его изменения по мере необходимости.Теперь синхронизируйте проект и откройте терминал внутри Android-студии и выполните следующую команду:

./gradlew clean build generateRelease

. В вашем каталоге app/build будет создан файл .zip, который вы можете загрузить в bintray, как описано выше

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