问题标签 [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 回答
1241 浏览

android - 使用 gradle 仅在一个构建变体上运行单元测试

我有一个多维的 android gradle 项目,需要很长时间才能构建和测试。我有一个二维的flaver定义。第一个维度有 2 个项目值,第二个维度有 4 个环境定义,并且有 3 种构建类型。

这导致 2x4x3 = 24 个构建变体。我想以某种方式进行优化,即只构建一个构建变体,并且只有一个构建变体用于在 ci 环境中运行单元测试。

构建.gradle

我以前会清理一切, gradlew clean --refresh-dependencies

然后只是组装调试变体, gradlew assembleDebug

然后我尝试在一个调试变体上只运行单元测试: gradlew testAdvancedFlavorDevelopmentDebugUnitTest -> 这不起作用

如果我运行gradlew test所有构建变体(除了发布构建类型),测试正在工作,但这需要很长时间!

也尝试过gradlew testDebugUnitTest->不起作用

我想我可以将单元测试移动到另一个目录而不是测试例如 testAdvancedFlavorDevelopment 然后当我只输入gradlew testtestAdvancedFlavorDevelopmentDebug 和 testAdvancedFlavorDevelopmentDebugInstantRun 的测试时将启动。

但是必须有一种方法可以让测试在测试目录中并通过 gradlew 命令强制编译和单元测试一个特定的构建变体!有任何想法吗?

蒂亚卢克

0 投票
1 回答
59 浏览

android - 多种 Gradle 产品风味

我正在开发一个具有两种“皮肤”和两种“构建”的 Android 应用程序:

问题是当我使用SkinTwo选择构建变体时,我想更改te API 字符串。

这在 Gradle 中是否可行,还是我必须在 BuildConfig 类中解决这个问题?

我已经尝试过了,但这 variantFilter不起作用。

0 投票
1 回答
1230 浏览

android - Android 构建变体签名配置

我的 android 应用程序模块 build.gradle 文件中有以下内容。

预期输出如下。

实际输出如下。

为什么发布 apk 总是未签名?目的是只让 ProductTwo Release apk 未签名,但 ProductOne Release apk 应根据给定的配置进行签名。

0 投票
0 回答
315 浏览

android - 扩展构建变体的 ABI 过滤器不会覆盖其父级

在一个项目中,我需要每个版本调试的特定 ABI 过滤器以及一些扩展的构建变体。没关系,可以正常使用debugrelease

当我扩展初始化这些两个变体的新 buildvariant 时,abifilters 保持不变并且不会改变。例如,我有debug_on_mainserver初始化debug。但我想添加另一个 abiFilter。但它仍然使用调试abiFilters。

我应该说,也许我可以用 Flavor 来实现这一点,但我出于另一个原因(存储类型和处理存储配置和变量)使用 3 种风味,我不想添加另一种风味并增加我的 buildVariants 品种。因为它在逻辑上应该包含在debug_on_mainserver中。我如何排除或删除基本 abiFilters 并添加新的?或者这是实现这一目标的另一种方式?

0 投票
1 回答
583 浏览

android - Android Studio CMake 为所有构建变体构建一次

我有一个包含 C++ 代码 (JNI) 和大量构建变体和组合的项目。这些用于实现应用程序的不同品牌/风格(即颜色、样式、图标......)。

例如,可能有 n 个客户的构建变体:

  • customerNDebug
  • customerNDebugproguard
  • customerNRelease.

无论如何,每个产品风味的 C/C++ 层都是相同的。

通常,Android Studio 中的CMake会为每个构建变体编译 C 代码。如果您有生成的代码实际上不同的“ debug”和“ ”之类的构建变体,这是有道理的。release但是,对于我拥有的构建变体,编译的输出总是相同的。

目前,C/C++ 代码的编译是使用我们项目中的外部工具完成的,我想在 Android Studio 中使用CMake进行编译,只是为了适当的 IDE 支持 C/C++ 代码。所以对我来说,一个单一的构建就足够了。

是否可以告诉 Android Studio 只构建一次 C/C++ 代码,无论构建变体和风格如何?

0 投票
3 回答
831 浏览

ios - 如何为 Dev 版本和 Prod 版本添加桥接头?

我创建了我的应用程序的两个目标,即 Dev 和 Prod。如何为这两个版本添加桥接头?一个桥接头是否适用于两者,或者我必须为不同的目标创建两个?

0 投票
10 回答
29073 浏览

gradle - variantOutput.getPackageApplication() 已过时

随着 Gradle4.10.1和 Android Gradle 插件更新为3.3.0,我收到以下警告:

警告:API ' variantOutput.getPackageApplication()' 已过时并已替换为 ' variant.getPackageApplicationProvider()'。

该行带有周围的上下文(通过构建变体分配输出文件名):

迁移指南不是很有帮助;虽然variant.outputs.all可能有问题-只是不知道要替换什么-迁移指南指的是任务而不是构建变体。禁用时File → Settings → Experimental → Gradle → Only sync the active variant,我会收到更多弃用警告(关键是,这些方法都没有被直接调用):

问:如何通过迁移到新 API 来避免这些弃用警告?

0 投票
1 回答
263 浏览

android - 多模块 Android 项目 Gradle 建议

我有一个项目 A,它有 3 个 B、C 和 D lib 模块。项目 A 有 4 个内置类型 Debug、Staging、Beta 和 Release,但库模块只有 debug 和 release。现在,如果我想要我的 lib 模块之一,请考虑 C 具有 3 个 buildTypes Debug、Staging 和 release。怎样才能做到这一点?

0 投票
2 回答
38973 浏览

android - 错误:没有方法签名:com.crashlytics.tools.gradle.CrashlyticsPlugin.findObfuscationTransformTask()

尝试在 Android Studio 上构建项目时出现以下错误:

错误:没有方法签名:com.crashlytics.tools.gradle.CrashlyticsPlugin.findObfuscationTransformTask() 适用于参数类型:(java.lang.String) 值:[DevDebug]

如何解决这个问题?

0 投票
1 回答
730 浏览

android - 是否有机会更改 android 中的构建变体运行时间

我使用产品风格来构建不同的应用程序。如果我在运行应用程序之前在构建变体中选择免费风味,则将运行免费风味,如果我选择付费风味,则将运行付费风味。

我想更改运行时间意味着在运行应用程序后,如果我们单击按钮,它必须更改付费应用程序。是否有机会通过编程更改构建变体选择运行时间。

我用这些作为调味剂。

如果有人知道解决方案,请帮助我解决我的问题。

提前致谢。