在Android中构建具有多种风格的jitpack库

时间:2018-10-05 16:44:45

标签: android kotlin android-gradle jitpack

我在Android Studio 3.2上将Gradle 4.1与Gradle-Android插件3.0.1结合使用

我有“生产”和“登台”两种风格,我无法将我的项目构建为具有不同构建变体的库。

应用程序构建。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全新安装,出现的错误是:

任务':app:install'的执行失败。

  

无法发布配置“档案”   一个POM不能有多个具有相同类型和分类器的工件。已经有MavenArtifact app:aar:aar:null,试图添加MavenArtifact app:aar:aar:null。

要使此代码编译,我需要将 android.publishNonDefault true 交换,否则会出现错误:Cannot get the value of write-only property 'publishNonDefault'

任何建议或暗示都会非常有帮助,目的是在jitpack上构建库模块,我们可以在其中将其导入带有构建变体的项目中。谢谢!

1 个答案:

答案 0 :(得分:0)

在研究了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
            }
        }
    }
}