【问题标题】:Google Play error: cannot upload a test-only APKGoogle Play 错误:无法上传仅供测试的 APK
【发布时间】:2017-04-28 23:21:27
【问题描述】:

尝试将第一个 apk 上传到 GooglePlay 控制台中最近创建的项目时,我收到此错误:

您不能上传仅供测试的 APK

按照今天的情况,在 Google 中搜索该确切字符串的结果为 0。

我还提交了 Play 管理中心的票证。如果有任何答案,将在这里更新。

2017 年 11 月 29 日更新

正如@paul-lammertsma 建议的那样,有一个解决方法。仍然很高兴知道为什么我们需要采用 gradle 方式,而我们不能通过 IDE 来实现。

【问题讨论】:

  • 有关于 Google Play 管理中心门票的消息吗? AS 3.0 稳定版已经发布,最新的 3.1.0-alpha02 版本仍然出现错误。真的很奇怪。
  • 回答你的问题stackoverflow.com/questions/47093554/…>
  • @AngelKoh 我找不到我提交的任何票。那时我可能已经忘记这样做了。我们现在有一个解决方法.. 仍然很高兴发现为什么它没有按预期工作..

标签: android google-play


【解决方案1】:

通过 Android Studio 3.0 及更高版本构建您的应用程序会将 android:testOnly="true" 添加到您的应用程序清单中,并将 PackageManager 的 APK 标记为 FLAG_TEST_ONLYMore information on CommonsBlog here.

尝试在 Android Studio 之外安装此类 APK 会失败:

安装 app-debug.apk 失败:失败 [INSTALL_FAILED_TEST_ONLY: installPackageLI]

尝试将其上传到 Google Play 也会失败,并显示:

您不能上传仅供测试的 APK

对此有四种解决方案:

从 Android Studio 构建

只需从 Android Studio 的“构建”菜单中选择“构建 APK(s)”。

从 Android Studio 手动签名

只需从 Android Studio 的“构建”菜单中选择“生成签名的 APK...”。提供密钥库并在显示的对话框中输入签名详细信息。

通过 Gradle 构建

您当然可以简单地从终端执行 Gradle 以实现一些自动化,例如,如果您的部署周期通过 CI 运行(我强烈推荐!):

./gradlew assembleRelease

(或者,您可能更喜欢在 Android Studio 的 Gradle 窗格中运行此 Gradle 任务。)

在 Android Studio 中禁用此功能

如果您不喜欢这种行为,您可以选择将此标志添加到您的gradle.properties。请注意,测试标志是为了保护您自己,所以您不会意外发布仅用于测试的 APK!

# Disble testOnly mode for Android Studio
android.injected.testOnly=false

【讨论】:

  • 它适用于我的 AS 3.0 beta2。谢谢保罗,你拯救了我的一天
  • 是的,如果您从 Android Studio 构建,您会收到此错误,但在终端上可以正常工作。刚刚用 Android Studio 3.0 beta 7、gradle-4.1、gradle plugin 3.0.0-beta7 测试过
  • 解决方法对我有用,因为即使是 AS 3.0 也产生了导致错误的 APK。
  • 谷歌“想要你”.... kotlin, gradle 3....为什么不只专注于让他们的工具工作。老实说,我已经受够了......
  • 解决方案要简单得多,您应该使用 Build apks 而不是从运行按钮构建的 apks
【解决方案2】:

看起来我发现了一些非常相关的东西: ADB Install Fails With INSTALL_FAILED_TEST_ONLY

我正在使用 2.4.0-alpha6 的 gradle 插件,这似乎远未准备好用于生产。

所以解决办法是使用最新的稳定的gradle插件:

classpath 'com.android.tools.build:gradle:2.3.1'

【讨论】:

  • 如果您使用的是 AS3 Canary,请务必降级 gradle 和插件
  • ...或升级到com.android.tools.build:gradle:3.0.0-beta2 ;)
【解决方案3】:

点击 Build 然后按 BuildAPK(s) 然后上传就可以了。 android studio 3.0 上的即时运行 APK 仅在连接到 adb 的设备上运行。

【讨论】:

    【解决方案4】:

    我发现这个博客解决了“仅测试”错误的原因

    https://commonsware.com/blog/2017/10/31/android-studio-3p0-flag-test-only.html

    基本上,有两点需要注意:

    您无法通过传统方式安装带有 android:testOnly="true" 的应用,例如从 Android 文件管理器或从网站下载

    Android Studio 3.0 在从 IDE 运行的 APK 上设置 android:testOnly="true"

    android studio 3.0 现在在您使用绿色运行按钮编译发布版本时设置此“testOnly”标志(制作项目 CTRL+F9)。

    我找到的解决方案是不调用“make project”,而是调用任何一个

    • 构建 > 构建 APK 或
    • 构建 > 生成签名的 APK...

    【讨论】:

      【解决方案5】:

      我正在使用 Android Studio 3.1 Canary 5

      我尝试过的(但没有奏效):

      • 我尝试了上述所有答案,但不幸的是我没有得到解决方案。
      • 我删除了 kotlin 依赖项并签名,但不起作用。
      • 我尝试使用像./gradlew assembleRelease 这样的命令行
      • 我尝试使用“Build APK”和“Generate Signed APK”构建 apk

      在所有可能性之后我通过以下方式得到了解决方案: - 编译 SDK 版本从 Android P 更改为 Android Oreo 27 - 将 AppCompat 版本更改为 27.0.1

      它现在可以成功运行。

      谢谢。

      【讨论】:

        【解决方案6】:

        它对我有用。尝试运行它并再次构建。 ./gradlew assembleRelease

        也许您上传了错误的 apk 文件,该文件之前生成的不是签名的 apk。因此,通过找到生成的签名 apk 文件的确切路径来选择 apk 文件。

        【讨论】:

        • 你所说的已经是这个问题的公认答案
        猜你喜欢
        • 1970-01-01
        • 2014-04-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多