上载的APK没有有效的签名Firebase TestLab仪器测试类型

时间:2019-10-31 10:30:05

标签: android firebase firebase-test-lab

我正在尝试使用具有仪器测试类型的Firebase测试实验室使用演示应用程序进行测试,但是由于以下有关APK的错误,我无法进行测试。 enter image description here

我在此处上传了已签名的 debug-keystore APK。即使在我的其他项目中,我也用我的 androidTest.apk 在这里上传了自己的密钥库签名的apk,但仍显示相同的错误。如果我缺少一些主要步骤,请指导我。谢谢

7 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,但是我解决了以下问题:

  1. 在您的android:testOnly="false"中添加AndroidManifest.xml
  2. 重建apk

如果可以在手机上成功安装,则可以在终端adb install xxx/xxx.apk中测试内置的APK。这表示APK正常,然后您可以将APK上传到Firebase测试实验室。

答案 1 :(得分:0)

Firebase有各种各样的设备。 Android 7中引入了签名V2。如果将apk安装在较低的设备中,则可能需要v1签名。生成APK时,请在选项中选择v1签名。使用v1签名可能会有所帮助。 enter image description here

答案 2 :(得分:0)

我遇到了同样的问题。我尝试上传不同版本的APK-从build \ outputs \ apk中签名(未签名),将测试与发行版APK结合使用-没有任何效果。

让它工作的方法是在Android Studio的Firebase测试实验室设备矩阵上运行仪器测试(有关步骤https://developer.android.com/training/testing/unit-testing/instrumented-unit-tests#run-ctl,请参见此处)。然后事实证明,Android Studio在以下位置生成有效的APK:
build \ outputs \ apk \ debug \ -debug.apk
build \ outputs \ apk \ androidTest \ debug \ -debug-androidTest.apk

然后,当您上传这些生成的文件时,一切正常。

作为一个提示-如果您不希望测试从Android Studio实际运行,而只是生成APK(我更喜欢通过firebase网站运行它们,因为它可以更好地控制哪些设备,区域设置等),您可以定义它以在设备和API级别不存在的组合上运行它,例如模拟器像素2和API级别25。如果执行此操作,Android Studio会生成APK,但实际上不会运行-这意味着,据我所知,它不会减少您的每日免费配额:)。

答案 3 :(得分:0)

我遇到了同一问题,问题出在测试APK签名中(看起来像Firebase要求两个APK都签名)。显然,由于我正在测试库模块的测试,因此未签名。我建议的第一件事是去检查两个APK的签名:

jarsigner -verify APK_FILE_PATH

如果看到其中一个APK未签名,则需要将北斗挖入您的项目设置中。如果要测试库模块,则该库signingConfigs中可能缺少build.gradle(通常,如果仅将库作为主应用程序的一部分来提供服务,则该库模块不存在)。似乎Firebase可以很好地使用该应用的DEBUG版本并测试APK,因此您可能只需要在debug.keystore库中进行build.gradle签名:

android {
    ...
    
    signingConfigs {
        debug {
            storeFile file(PATH_TO_YOUR_DEBUG_KEYSTORE)
        }
    }
}

答案 4 :(得分:0)

我知道为时已晚。 但对我有用的解决方案是

  1. 清理 Android Studio 项目。

  2. 构建 Apk。

  3. 将 Apk 上传到测试实验室。

希望它有效。

答案 5 :(得分:0)

我需要为我们的开发环境构建一个签名的 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

并且 firebase 接受了它,确保它没有在 apk 文件名上显示未签名。

答案 6 :(得分:0)

只需从 ...\YOU_PROJECT\app\build\outputs\apk\debug 中找到 apk

不是来自 ...\YOU_PROJECT\app\debug