问题标签 [build-variant]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3264 浏览

android-studio - Android Studio 构建变体问题

我很难让 Android Studio 构建正确的构建变体——有时甚至让我根本无法选择构建变体。

基本上,我的项目有两个不同版本,一个是免费版本,一个是“完整”版本。包 ID 是“com.mycompany.myproj”和“com.mycompany.myprojfree”。

一旦我指定了“myproj”和“myprojfree”风格以及“release”和“debug”构建类型,Android Studio 会在列表中生成四个变体:myprojDebug、myprojfreeDebug、myprojfreeRelease 和 myprojRelease。

问题是,选择其中之一并不能可靠地选择用于构建、调试等的变体。例如,我将选择 myprojDebug,点击 Debug,然后 myprojfreeDebug 将构建(可以在控制台中看到),而免费的版本将在连接的设备上打开。

此外,有时我什至无法在构建变体窗格中选择一个或多个构建变体。我可以点击它,但它不会改变。但有时如果我先将其更改为其他内容,它会让我返回并更改未更改的内容。

我看到帖子提到了类似的问题,并遵循了所有建议——清理、重建、删除 .idea、删除构建文件夹、使缓存/重新启动无效、删除 app.iml 等——都无济于事。

值得注意的是,直到昨天我从 Android Studio 3.1 更新到 3.4.1 之前,所有这些都运行良好。

这是我的应用程序 build.gradle 的简化版本:

0 投票
2 回答
1454 浏览

java - 如何构建两个构建 android 变体以使用 Retrofit 获取两个不同的 URL?

我正在开发一个 android 应用程序,用于为共享相同数据源的两个不同 Build Variant 获取两个不同的 Rest API。我正在将产品风味用于构建变体。但我不知道如何配置改造部分来为不同的构建变体选择不同的 API。

预先感谢

0 投票
1 回答
242 浏览

android - 构建变体风味维度未覆盖的矢量可绘制对象

我有一个带有基本品牌和多个白标品牌以及多个服务器目标的应用程序。在我的应用程序的 build.gradle 中,风味定义为: flavorDimensions("server", "whitelabel")

在我src/main/res/drawable的基础品牌中,我有一个 logo.xml VectorDrawable,它被覆盖在src/whitelabel1/res/drawable.

当我的应用程序的 build.config 包含vectorDrawables.useSupportLibrary = true正确的 logo.xml 时,将在我的 ImageView 中使用。如果我从 Whitelabel1的 apk 中删除useSupportLibraryImageView 呈现logo.xmlmain

0 投票
1 回答
189 浏览

android-studio - Android Studio gradle 发布构建需要无限时间

我最近将我的代码库更新为 Androidx,现在尝试使用命令构建生产变体

它继续在过程 transformClassesAndResourcesWithProguardForProductionRelease 构建

这是输出

我的 gradle.properties 看起来像这样

我正在使用 proguard 并发布 buildType 有以下

我尝试使用和不使用 androidx proguard 但结果相同

你能帮我解决这个问题,这样我就可以生成一个签名的apk

0 投票
2 回答
1911 浏览

android - Android Studio 未显示构建变体

我最近正在努力解决我的构建变体无法正常工作的问题。我无法选择变体,-----选择行上只有一个。

在此处输入图像描述

我试图:

  • 删除我的 .idea 文件夹,使缓存和所有内容无效
  • 将项目与 Gradle 文件同步

我的 buildConfig Gradle 看起来像:

可能是什么问题呢?

0 投票
4 回答
2269 浏览

android - 如何在 Android Studio 运行时以编程方式设置构建变体?

是否可以在 Android Studio 中以编程方式更改构建变体运行时间?

我有不同的服务器环境(Release、Debug、Production、Dev、Dev1、Dev2、QA 等)。代码本身依赖于我选择构建变体时设置的一些字符串、SDK 的初始化和服务器地址。因此,当我为实例选择调试时,字符串会使用调试服务器地址和 SDK。发布也是一样。但是,如果我希望能够在运行时选择环境怎么办?

0 投票
1 回答
337 浏览

android - 用于仅测试依赖项的 Gradle 变体感知依赖项管理

我有一个多模块 Android 项目,其中包含一个仅用于测试的模块testImplementation project(path: 'libtestsupport')。除非我通过 为非测试构建包含此模块,否则自动变体切换似乎不起作用,implementation project(path: 'libtestsupport')我不想这样做,因为它只被测试使用。这导致此库模块的构建变体与其他模块不匹配:

构建变体不匹配

有没有办法让这个库依赖项像应用程序中的其他依赖项一样自动切换构建变体?

0 投票
1 回答
204 浏览

android - 确定 Android 中其他模块的 buildType

我的模块有 2 个buildTypeapp名为releaseand debug

该模块依赖于其他一些模块,例如lib1.

当我想组装一个 apk 时,我应该运行:

在 和 中的两个build.gradle文件中applib1我定义了buildTyle{ ... }section 和 set minifyEnabled true

但是当我分析签名 apk 的release类型时,似乎 gradle 并没有缩小和缩小未使用的资源。

如何确定应该为我为app模块选择的 buildType 使用哪个 buildType?(当我运行上面的命令时)

0 投票
0 回答
332 浏览

android - 如何使用 maven 在 android 中选择的当前构建变体的基础上发布库 aar 文件

我有三个构建变体 - android 库中的暂存、调试和生产。我需要在 maven 上发布 aar 文件,但限制是,如果当前选择的构建变体是调试或暂存,那么只有 debugAar 应该发布,如果选择了发布,那么 releaseAar 应该发布。默认情况下,gradle 只发布 releaseAar。

目前,每次我想要调试变体时,我都需要将“artifact(bundleReleaseAar)”更改为“artifact(bundleDebugAar)”

0 投票
26 回答
68101 浏览

android - 出现错误说 - “条目名称 'res/layout/test_toolbar.xml' 碰撞”,同时创建签名的 apk

我今天已将我的 android studio 从3.5.x更新到3.6,并在为构建变体生成签名 apk 时出现错误,显示以下消息 - Entry name 'res/layout/test_toolbar.xml'碰撞我在整个项目中根本没有任何像这样命名的布局。我有一个名为“ stage ”的自定义构建变体,每当我尝试构建签名的 apk 时,它总是失败。我算找到任何解决方案了。请帮我解决这个问题。谢谢

更新: 以下消息也可能出现同样的问题(正如我在AS - 3.6.1 -有时继续 4.xx中发现的那样)。所以不要担心这些未知且不可解析的消息。到目前为止,我在生成签名 apk 时发现了两种新类型的消息:

  • Entry name 'kotlin/collections/MapWithDefault.kotlin_metadata' collided
  • Access Denied

结果是一样的。有时你可能需要Invalidate Cache and Restart你的 AS 来做这件事。让我知道你的发现。谢谢

快速的解决方案是:(作为最受欢迎的答案,我同意)

  1. 删除 projectFolder\build 删除 projectFolder\debug
  2. 删除项目文件夹\发布
  3. 删除 projectFolder\app\build
  4. 删除 projectFolder\app\build\debug
  5. 删除 projectFolder\app\build\release

所以你需要删除所有的构建、调试和发布目录。

请注意,您可能无法删除整个调试和发布目录,但可以删除其所有内容。