Сборка библиотеки jitpack с несколькими вариантами в Android - PullRequest
0 голосов
/ 05 октября 2018

Я использую Gradle 4.1 с плагином Gradle-Android 3.0.1 на Android Studio 3.2

У меня есть два варианта «production» и «staging», и я не могу собрать свой проект как библиотеку с разнымиВарианты сборки.

app build.gradle:

apply plugin: 'com.android.library'
apply plugin: 'com.github.dcendents.android-maven'

android {
  ...

    productFlavors {
        production {        
        }

        staging {  
        }
    }

    defaultPublishConfig "productionRelease"
    publishNonDefault true
}

if( android.productFlavors.size() > 0 ) {
    android.libraryVariants.all { variant ->
        if( android.publishNonDefault && variant.name == android.defaultPublishConfig ) {
            def bundleTask = tasks["bundle${name.capitalize()}"]
            artifacts {
                archives(bundleTask.archivePath) {
                    classifier name.replace('-' + variant.name, '')
                    builtBy bundleTask
                    name name.replace('-' + variant.name, '')
                }
            }
        }

...

Затем я запускаю: ./gradlew clean install, ошибки, которые я получил, это:

Не удалось выполнить задачу ': app: install'.

Не удалось опубликовать конфигурационные «архивы». POM не может иметь несколько артефактов с одинаковым типом и классификатором.У меня уже есть приложение MavenArtifact: aar: aar: null, я пытаюсь добавить приложение MavenArtifact: aar: aar: null.

И чтобы получить этот код для компиляции, мне нужно поменять android.publishNonDefault с true , в противном случае я получу ошибку: Cannot get the value of write-only property 'publishNonDefault'

Любые предложения или подсказки будут очень полезны, цель состоит в том, чтобы собрать модуль библиотеки на jitpack, гдемы можем импортировать его в проект с вариантами сборки.спасибо!

1 Ответ

0 голосов
/ 12 октября 2018

После изучения этого в течение 2 дней и отправки электронной почты в службу поддержки Jitpack проблема заключается в том, что библиотека обновилась и publishNonDefault устарела.вам просто нужно изменить свое приложение build.gradle на:

apply plugin: 'com.github.dcendents.android-maven'
dependencies {...}

group = 'com.github.your-group'

if (android.productFlavors.size() > 0) {
    android.libraryVariants.all { variant ->
        if (variant.name.toLowerCase().contains("debug")) {
            return
        }

        def bundleTask = tasks["bundle${variant.name.capitalize()}"]

        artifacts {
            archives(bundleTask.archivePath) {
                classifier variant.flavorName
                builtBy bundleTask
                name = project.name
            }
        }
    }
}
...