ChatGPT解决这个技术问题 Extra ChatGPT

Android Studio 在 build.gradle 中默认构建的 Product Flavor 是什么?

我们有一个使用新 Gradle 构建系统的 Android 项目,我们使用 Android Studio 作为开发工具。当 build.gradle 中指定了多个产品风格时,我们注意到 Android Studio 会构建第一个按字母顺序指定的产品风格。有没有办法告诉 Android Studio 在开发过程中只构建和测试特定的产品风格?


X
Xavier Ducrohet

在 Studio 窗口的左下方,有一个名为“Build Variants”的停靠视图。

打开它并选择您要处理的任何变体。这将影响构建的变体以及启用的源文件夹,这将推动代码和资源编辑器中的完成。


凉爽的。有没有办法在初始导入时自定义它喜欢哪个?
变体是风味和构建类型的组合。您只能部署变体。您永远无法构建仅是一种风味的 apk。
如果您有兴趣,可以使用命令行构建指定的变体:./gradlew assemble<...>,例如 assembleGooglePlayRelease。您可以使用以下命令在连接的设备或模拟器上构建和安装:./gradlew install<...>
但是,Android Studio 使用哪种产品风格默认构建应用程序?
如果有一种方法来定义构建风格,我会很感兴趣,这是在签出项目时默认选择的。目前它选择第二种风格和第二种构建类型,但想以我的方式定义它
A
Anton Tananaev

目前似乎没有办法选择默认风味。 Android问题跟踪器中有一个功能请求:

https://code.google.com/p/android/issues/detail?id=64917

您可以为请求加注星标/投票,因此它在 Android 开发工具积压中获得更高的优先级。


此功能将在 Android Studio 3.5 中。不开玩笑 - 这花了 5 年时间来实施! (查看票证创建日期)
C
Community

是的,有一种方法:

android {
    productFlavors {
        foo {
            isDefault true
        }
    }
}

否则,带有调试构建类型的变体是受欢迎的。

它是在 Android Studio 3.5 中添加的,请参阅 feature request

“包含在 Android Gradle 插件 3.5.0-alpha08 和 Android Studio 3.5 Canary 8 [3.5.0.7] 中。使用旧 AGP 的项目和没有显式设置的项目的启发式方法也已更新,以支持具有构建类型调试的变体,如所述在提交消息中。”


isDefault 被声明为 final 并且没有可用的 setter。但是我们可以使用 isDefault.set(true)
也: isDefault = true 或 isDefault true
也许这不适用于 gradle.kts 脚本或 smth - 在我们的项目中什么都不做
R
Roman Tikhonov

实际上对我有用的是启用“Android Studio Preferences -> Experimental -> Only sync the active variant”。选择一次所需的构建变体后,AS在重新打开或重新同步项目时会保留选择的构建变体,基本解决了原来的问题。

AS/AGP v4.1。


a
aprilmintacpineda

在最新的 android studio 上,在菜单栏上,转到 Build > Select build Variant,如果它灰显(禁用),请打开项目目录,然后打开 app 部分,然后再次转到该按钮。点击它后,它会在侧边栏打开一个名为 Build Variants 的窗口,您可以从那里选择要构建的构建变体,然后单击调试,它将构建您选择的变体。


T
Tshunglee

您可以在启动 Gradle-aware Make 之前在部分中指定命令 run

您可以按 gradlew tasks 列出所有 gradle 任务

https://i.stack.imgur.com/MLJYx.png


我试过了,虽然它确实只构建了一种风格,但 Android Studio 仍然只会启动选定的变体。更糟糕的是,如果我选择了一个不在所选变体中的特定活动,那么我会收到一条令人困惑的错误消息,指出“活动必须导出或包含意图过滤器”。一旦我更改构建 bariant 选择,错误就会消失。