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

Posted

技术标签:

【中文标题】Android Studio 在 build.gradle 中默认构建的 Product Flavor 是啥?【英文标题】:What Product Flavor does Android Studio build by default in build.gradle?Android Studio 在 build.gradle 中默认构建的 Product Flavor 是什么? 【发布时间】:2013-07-13 11:17:00 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

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

AS/AGP v4.1。

【讨论】:

【参考方案3】:

是的,有办法:

android 
    productFlavors 
        foo 
            isDefault true
        
    

另外,调试构建类型的变体更受青睐。

它是在 Android Studio 3.5 中添加的,见feature request:

“包含在 Android Gradle 插件 3.5.0-alpha08 和 Android Studio 中 3.5 金丝雀 8 [3.5.0.7]。

使用旧 AGP 的项目和不使用 AGP 的项目的启发式方法 显式设置也已更新,以支持具有 构建类型调试,如提交消息中所述。"

【讨论】:

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

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

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

【讨论】:

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

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

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

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

【讨论】:

此功能将在 Android Studio 3.5 中。不开玩笑 - 这花了 5 年时间来实施! (查看工单创建日期)【参考方案6】:

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

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

【讨论】:

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

以上是关于Android Studio 在 build.gradle 中默认构建的 Product Flavor 是啥?的主要内容,如果未能解决你的问题,请参考以下文章

使用 react-native run-android 运行时出现 React-Native 错误

Android 依赖 '..' 对于编译 (..) 和运行时 (..) 类路径有不同的版本

Android Gradle 插件AaptOptions 配置 ③ ( cruncherEnabled 配置 | cruncherProcesses 配置 )

greendao的基本操作

Libgdx 桌面版本无法编译

Cordrova 后台地理位置 phonegap 构建失败