【问题标题】:The uploaded APK does not have valid signature Firebase TestLab instrument test type上传的 APK 没有有效的签名 Firebase TestLab 仪器测试类型
【发布时间】:2019-10-31 10:30:05
【问题描述】:

我正在尝试使用具有仪器测试类型的 firebase 测试实验室使用我的演示应用程序进行测试,但由于以下有关 apk 的错误,我无法对其进行测试。

我在那里上传了 debug-keystore 签名的 apk。即使在我的其他项目中,我也使用我的 androidTest.apk 上传了我自己的密钥库签名的 apk,但出现了同样的错误。如果我错过了一些主要步骤,请指导我。谢谢

【问题讨论】:

  • 这是 v1 还是 v2 签名? APK 在 build.gradle 中有 debuggable true 吗?
  • @Prashant Sable 是的,我尝试使用 v1 和 v2 签名,在发布版本类型中也使用可调试标志 true。但我的 Android 测试 apk app-debug-androidTest.apk 是我们在设备上本地运行仪器时生成的默认 apk。
  • 在上传 APK 时,Debuggable 标志应该为 false 而不是 true。
  • @Prashant Sable 我尝试使用可调试标志 false 但结果相同。 app-debug-androidTest.apk 也需要使用我自己的密钥库而不是默认的 android 密钥库进行签名?
  • 您不应该使用调试密钥库来上传 apk。创建新的发布密钥存储并用于签署 APK

标签: android firebase firebase-test-lab


【解决方案1】:

我遇到了同样的问题。我尝试从 build\outputs\apk 上传不同版本的 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
构建\输出\apk\androidTest\debug\-debug-androidTest.apk

然后,当您上传生成的所有内容时,一切正常。

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

【讨论】:

    【解决方案2】:

    我通过 AndroidStudio > Gradle 构建了两个 apk,它对我有用。

    选择:

    1. 组装调试
    2. 组装AndroidTest

    然后在packages中找到apk:

    1. ...\app\build\outputs\apk\myFlavor\debug
    2. ...\app\build\outputs\apk\androidTest\myFlavor>\debug

    (查看apk的日期,以确保这是刚刚构建的那个)

    然后只需将这些 apk 上传到 Firebase 测试实验室

    顺便说一句,通过 Android Studio > Edit Configuration...> Target > Firebase Test Lab Device Matrix 运行也可以。

    【讨论】:

    • 我必须生成一个签名的 APK,之后位于 app/release/ 中。
    • 为我工作!但是,如果您有多种风格,看起来任何assembleXXX 任务都会为所有风格编译代码。如果您只需要为一种风格编译代码和测试,请转到other 组而不是build,在那里您会找到更多“精确”的任务,例如assembleDemoDebugassembleDemoDebugAndroidTests 等。
    【解决方案3】:

    Firebase 拥有多种设备。 Signature V2 是在 Android 7 中引入的。如果在较低的设备上安装 apk,它可能需要 v1 签名。在生成您的 apk 时,在选项中选择 v1 签名。使用 v1 签名可能会有所帮助。

    【讨论】:

    • 我已经知道了。我也尝试过这些选项。我只选择了 api 级别为 28 的谷歌像素设备,但错误是一样的 :( .
    【解决方案4】:

    我遇到了同样的问题,问题出在测试 APK 签名中(看起来 Firebase 需要对两个 APK 进行签名)。显然,它没有签名,因为我正在测试一个库模块检测测试。我建议的第一件事是检查两个 APK 的签名:

    jarsigner -verify APK_FILE_PATH
    

    如果您发现其中一个 APK 未签名,则需要深入了解您的项目设置。如果您想测试一个库模块,您可能会在该库的build.gradle 中缺少signingConfigs(如果您仅将库作为主应用程序的一部分提供,则通常不存在)。 Firebase 似乎完全可以使用 DEBUG 版本的应用程序和测试 APK,因此您可能只需要在库 build.gradle 中签名 debug.keystore

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

    【讨论】:

      【解决方案5】:

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

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

      您可以在终端中测试构建的apk:adb install xxx/xxx.apk,如果您可以在手机上成功安装它。这意味着apk是好的,然后你可以将你的apk上传到firebase测试实验室。

      【讨论】:

        【解决方案6】:

        我知道太晚了。 但对我有用的解决方案是

        1. 清理 Android Studio 项目。

        2. 构建 Apk。

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

        希望它有效。

        【讨论】:

          【解决方案7】:

          我需要为我们的开发环境构建一个签名的 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 文件名上显示未签名。

          【讨论】:

            【解决方案8】:

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

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2015-07-15
              • 2014-01-07
              • 2021-01-29
              • 2021-05-22
              • 2018-02-14
              • 1970-01-01
              • 1970-01-01
              • 2019-12-20
              相关资源
              最近更新 更多