仅构建默认版本(无口味/变体)

12

我为我的构建定义了许多产品口味。 但在某些情况下,我想在没有口味的情况下进行构建。

然而,当我尝试在没有口味的情况下构建发布版时,即

gradlew assembleRelease

它会遍历并构建所有的变体,这需要很长时间。我想启动一个发布版本的构建并忽略所有的变体。这是否可能?

我相信我可以添加一个名为“default”的空变体,并进行构建。似乎我不应该这样做。

编辑:

defaultConfig {
    resValue "string", "hello", "Hello default"
}

productFlavors {
    foo {
        resValue "string", "hello", "Hello Foo"
    }

    bar {
        resValue "string", "hello", "Hello Bar"
    }
}

目前看来最好的解决方案是提供您自己的“默认”风味。

productFlavors {

    defaults {
       // yup its empty cause I just want to build with the defaults
       // that are already defined.
    }

    foo {
        resValue "string", "hello", "Hello Foo"
    }

    bar {
        resValue "string", "hello", "Hello Bar"
    }
}

好的,我明白了。假设我定义了两种风味,foo和bar。我知道我可以组装assembleFooRelease和assembleBarRelease。这不是我的问题。如果在这种情况下我执行assembleRelease,它会构建foo和bar,但我不想要那样。我想要一个没有任何风味的构建。 - lostintranslation
3
我已经寻找了一段时间却没有得到答案,因此发布这篇文章。在我看来很糟糕。仅仅因为我添加了提供一些不同默认值或配置的口味,并不意味着我不能在没有它们的情况下构建。有一个defaultConfig块,我可以定义默认值以在没有任何口味的情况下使用,这似乎是合理的。那就用空口味吧...... - lostintranslation
1
你似乎不理解flavors,你可以创建一个“默认”flavor,只使用你的“defaults”。flavors的目的是为了不同的安装被称为变体。请参见:https://dev59.com/1mMm5IYBdhLWcg3wX-LT#FqefEYcBWogLw_1bU3Tg和https://dev59.com/eWEi5IYBdhLWcg3wZ7q8 - Jared Burrows
3
我怎么不明白呢?在一种风味中,您可以覆盖各种内容。例如,您可以使用resValue提供资源值。因此,在我的两种风味中,我可以为一个资源定义两个不同的值。但是,我也可以在defaultConfig块中放置resValue。这意味着如果我想要使用resValue重写进行构建,则已更新问题以显示此内容。然而,似乎无论如何,如果您定义了风味,则不能构建非风味发布。仍然很糟糕,为什么在这种情况下有默认值呢? - lostintranslation
1
问题在于当Java源文件在不同的版本之间存在差异时,该文件仅存在于特定版本中,因此普通版本将不完整。尽管如此,它应该能够检测到版本仅包含资源,并在这种情况下构建默认版本。 - Kevin Krumwiede
显示剩余2条评论
1个回答

0
我发现“main”作为一种风格是可行的。因此,我不需要添加一个额外的文件夹,其中包含google-services.json或其他任何内容。
productFlavors {

    main{

    }

    flav1 {
        applicationId 'id'
    }

}

2
这会产生以下错误:评估根项目“android”时出现问题。
配置项目“:app”时出现问题。 具有相同键的多个条目:main=[]和main=[]
- Schnodderbalken

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接