我也遇到了同样的问题。我尝试上传不同版本的APK文件 —— 签名的、未签名的、来自build\outputs\apk目录下的,以及将测试版与发行版APK文件组合在一起进行测试 —— 但都无法解决问题。
后来,我通过在Android Studio上的Firebase Test Lab Device Matrix上运行仪器化测试解决了问题(请参阅此处的步骤 https://developer.android.com/training/testing/unit-testing/instrumented-unit-tests#run-ctl)。然后,Android Studio会生成以下有效的APK文件:
build\outputs\apk\debug\-debug.apk当您上传这些生成的APK文件时,一切都能正常运行。
顺便提一下,如果您不想在Android Studio上实际运行测试,而只是要生成APK文件(我更喜欢通过firebase网站运行测试,因为它可以更好地控制设备、语言环境等),则可以定义一个不存在的设备和API级别组合,例如Emulator Pixel 2和API级别25。这样做可以让Android Studio生成APK文件,但实际上并不运行测试,据我所见也不会减少您每日的免费配额 :)。
我通过 Android Studio > Gradle 构建两个apk,这对我很有效。
选择:
然后在以下目录中找到apk:
(查看APK的日期,以确保这是刚刚构建的APK)
然后简单地将这些apk上传到Firebase Test Lab
顺便说一句,通过在 Android Studio > Edit Configuration...> Target > Firebase Test Lab Device Matrix 中运行也可以。
assembleXXX
任务都会编译所有版本的代码。如果你只需要为一个版本编译代码和测试,请转到build
组的other
组,那里你会找到更多“精确”的任务,如assembleDemoDebug
、assembleDemoDebugAndroidTests
等。 - Mickäel A.我遇到了同样的问题,问题出在测试APK签名上(似乎Firebase要求两个APK都要签名)。显然,由于我正在测试库模块仪器化测试,因此它未被签名。我建议首先检查两个APK的签名:
jarsigner -verify APK_FILE_PATH
build.gradle
中缺少 signingConfigs
(通常情况下,如果您仅将库作为主应用程序的一部分提供,则该选项不会出现)。似乎Firebase完全支持应用程序的DEBUG版本和测试APK,因此您可能只需要在库的build.gradle
中拥有debug.keystore
签名即可。android {
...
signingConfigs {
debug {
storeFile file(PATH_TO_YOUR_DEBUG_KEYSTORE)
}
}
}
清理 Android Studio 项目。
构建 Apk。
上传 Apk 到测试实验室。
希望这个方法能够起作用。
AndroidManifest.xml
中添加android:testOnly="false"
您可以在终端中测试构建的apk:adb install xxx/xxx.apk
,如果您可以成功安装它在您的手机上。这意味着apk是正常的,然后您可以将apk上传到Firebase Test lab。
只需从...\YOU_PROJECT\app\build\outputs\apk\debug中查找apk文件
不要从...\YOU_PROJECT\app\debug中查找
我需要为我们的开发环境构建一个签名的apk,因此在android/app/build.gradle
中添加了以下内容:
signingConfigs {
config {
keyAlias 'someKeyAlias'
keyPassword 'somePassword'
storeFile file('../keystores/debug.keystore')
storePassword 'somePassword'
}
}
development {
initWith release
applicationIdSuffix '.development'
versionNameSuffix '-DEVELOPMENT'
matchingFallbacks = ['release']
signingConfig signingConfigs.config
}
/android/
目录下,运行 ./gradlew assembleDevelopment
。