我有一个包含三种不同构建类型的项目:debug,beta和release。我的测试包总是为调试版本创建,但QA使用beta版本,我们希望QA在其大量设备上运行这些测试。
我正在尝试为QA创建一个测试版apk,它由与beta版本相同的密钥签名。通过Android-Gradle文档,我没有看到任何告诉我我不能这样做的东西,但我不认为无论如何配置它。无论如何我可以配置组装测试apk时使用哪个密钥库?或者有没有办法创建一个未签名的测试apk?
答案 0 :(得分:44)
您现在可以将其指向其他目标,我不知道这种情况何时发生,但from the docs:
目前只测试了一种Build Type。默认情况下,它是调试 构建类型,但可以使用以下命令重新配置:
android { ... testBuildType "staging" }
答案 1 :(得分:14)
对于您的问题,这是一个不完整的答案,因为它记录了您可以执行的操作,但connectedAndroidTest
任务(在您的项目中运行androidTest
测试的任务)是硬编码的要针对debug
构建类型运行,我也没有看到将其指向不同构建类型的方法。
从Is there a way to list task dependencies in Gradle?获取建议并检查任务依赖关系树,如果你运行:
./gradlew tasks --all
你在输出中得到了这个:
Verification tasks
------------------
app:check - Runs all checks. [app:lint]
app:connectedAndroidTest - Installs and runs the tests for Build 'debug' on connected devices. [app:assembleDebug, app:assembleDebugTest]
app:connectedCheck - Runs all device checks on currently connected devices. [app:connectedAndroidTest]
app:deviceCheck - Runs all device checks using Device Providers and Test Servers.
connectedAndroidTest
任务的文档声称它针对debug
运行测试,而任务依赖项(使用-all
标志看到)确认任务取决于{{1 }}
添加其他构建类型和风格似乎不会影响对内置assembleDebug
类型的依赖。
有可能使用比我更大的Gradle-fu,你可以重新连接任务以使测试依赖于不同的构建类型,但这样做很可能是脆弱的,因为它必然会取决于Android Gradle插件中不支持的API。
要最直接地回答您的问题,但是,如果您只想对具有不同证书的版本运行测试,则可以更改debug
版本上的签名配置以使用测试版证书:
debug
我测试了它,我能够以这种方式对使用自定义密钥库的调试版本运行androidTest目标。但是,我怀疑这可以解决您的问题,因为我怀疑您想要针对beta build 运行测试,而不是使用beta 证书进行调试构建。
答案 2 :(得分:2)
要为构建变体添加测试源集,请按照下列步骤操作:
现在,您可以按照上述步骤添加测试,以添加新测试。到达“选择目标目录”对话框时,选择新的变体测试源集。
src/androidTest/
源集中的检测测试由所有构建变体共享。为" MyFlavor"构建测试APK时您应用的变体Gradle
结合了src/androidTest/
和src/androidTestMyFlavor/
来源集。
另一种方法是将以下行放在默认配置中。
目前只测试了一种Build Type。默认情况下,它是调试构建类型,但可以使用以下命令重新配置:
android {
...
testBuildType "staging"
}