问题标签 [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.
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 test
testAdvancedFlavorDevelopmentDebug 和 testAdvancedFlavorDevelopmentDebugInstantRun 的测试时将启动。
但是必须有一种方法可以让测试在测试目录中并通过 gradlew 命令强制编译和单元测试一个特定的构建变体!有任何想法吗?
蒂亚卢克
android - 多种 Gradle 产品风味
我正在开发一个具有两种“皮肤”和两种“构建”的 Android 应用程序:
问题是当我使用SkinTwo选择构建变体时,我想更改te API 字符串。
这在 Gradle 中是否可行,还是我必须在 BuildConfig 类中解决这个问题?
我已经尝试过了,但这 variantFilter
不起作用。
android - Android 构建变体签名配置
我的 android 应用程序模块 build.gradle 文件中有以下内容。
预期输出如下。
实际输出如下。
为什么发布 apk 总是未签名?目的是只让 ProductTwo Release apk 未签名,但 ProductOne Release apk 应根据给定的配置进行签名。
android - 扩展构建变体的 ABI 过滤器不会覆盖其父级
在一个项目中,我需要每个版本和调试的特定 ABI 过滤器以及一些扩展的构建变体。没关系,可以正常使用debug和release。
当我扩展初始化这些两个变体的新 buildvariant 时,abifilters 保持不变并且不会改变。例如,我有debug_on_mainserver初始化debug。但我想添加另一个 abiFilter。但它仍然使用调试abiFilters。
我应该说,也许我可以用 Flavor 来实现这一点,但我出于另一个原因(存储类型和处理存储配置和变量)使用 3 种风味,我不想添加另一种风味并增加我的 buildVariants 品种。因为它在逻辑上应该包含在debug_on_mainserver中。我如何排除或删除基本 abiFilters 并添加新的?或者这是实现这一目标的另一种方式?
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++ 代码,无论构建变体和风格如何?
ios - 如何为 Dev 版本和 Prod 版本添加桥接头?
我创建了我的应用程序的两个目标,即 Dev 和 Prod。如何为这两个版本添加桥接头?一个桥接头是否适用于两者,或者我必须为不同的目标创建两个?
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 来避免这些弃用警告?
android - 多模块 Android 项目 Gradle 建议
我有一个项目 A,它有 3 个 B、C 和 D lib 模块。项目 A 有 4 个内置类型 Debug、Staging、Beta 和 Release,但库模块只有 debug 和 release。现在,如果我想要我的 lib 模块之一,请考虑 C 具有 3 个 buildTypes Debug、Staging 和 release。怎样才能做到这一点?
android - 错误:没有方法签名:com.crashlytics.tools.gradle.CrashlyticsPlugin.findObfuscationTransformTask()
尝试在 Android Studio 上构建项目时出现以下错误:
错误:没有方法签名:com.crashlytics.tools.gradle.CrashlyticsPlugin.findObfuscationTransformTask() 适用于参数类型:(java.lang.String) 值:[DevDebug]
如何解决这个问题?
android - 是否有机会更改 android 中的构建变体运行时间
我使用产品风格来构建不同的应用程序。如果我在运行应用程序之前在构建变体中选择免费风味,则将运行免费风味,如果我选择付费风味,则将运行付费风味。
我想更改运行时间意味着在运行应用程序后,如果我们单击按钮,它必须更改付费应用程序。是否有机会通过编程更改构建变体选择运行时间。
我用这些作为调味剂。
如果有人知道解决方案,请帮助我解决我的问题。
提前致谢。