Ошибка Google Play: не удается загрузить тестовый APK

При попытке загрузить первый apk в недавно созданный проект в консоли GooglePlay, я получаю эту ошибку:

Вы не можете загрузить APK с тестовым протоколом

Поиск Google дает мне 0 результатов для этой точной строки, как сегодня.

Я также отправил билет на Play Console. Будет обновлен здесь, если у вас есть ответ.

ОБНОВЛЕНИЕ 29 ноября 2017 года

Как предложил @paul-lammertsma, есть обходной путь. Тем не менее было бы хорошо знать, почему нам нужно идти gradle, и мы не можем сделать это через IDE.

Ответы

Ответ 1

Создание приложения через Android Studio 3.0 и более поздние android:testOnly="true" добавит android:testOnly="true" в манифест приложения, помечая APK как FLAG_TEST_ONLY для FLAG_TEST_ONLY. Больше информации о CommonsBlog здесь.

Попытка установить такой APK вне Android Studio не удастся:

Не удалось установить app-debug.apk: ошибка [INSTALL_FAILED_TEST_ONLY: installPackageLI]

Попытка загрузить его в Google Play также не удастся:

Вы не можете загрузить только тестовый APK

Есть четыре решения этого:

Сборка из Android Studio

Просто выберите "Build APK (s)" в меню "Build" в Android Studio.

Войдите из Android Studio вручную

Просто выберите "Создать подписанный APK..." в меню "Сборка" в Android Studio. Укажите хранилище ключей и введите данные подписи в появившемся диалоговом окне.

Построить через Gradle

Конечно, вы можете просто запустить Gradle из терминала. Кроме того, если ваш цикл развертывания проходит через CI (и он должен!), Это действительно путь!

./gradlew assembleRelease

(В качестве альтернативы вы можете предпочесть запускать эту задачу Gradle из панели Gradle из Android Studio.)

Отключить эту функцию в Android Studio

Если вам не нравится это поведение, вы можете добавить этот флаг в свои gradle.properties. Помните, что тестовый флаг предназначен для вашей собственной защиты, поэтому вы не можете случайно опубликовать APK только для тестирования!

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

Ответ 2

Похоже, я нашел нечто очень близкое: Ошибка ADB с установкой INSTALL_FAILED_TEST_ONLY

Я использую плагин 2.4.0-alpha6 из gradle и, похоже, далеко не готов к использованию для производства.

Таким образом, решение заключается в использовании последнего стабильного плагина gradle:

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

Ответ 3

Нажмите "Создать", а затем нажмите "BuildAPK (ы)", а затем загрузите его, и он будет работать. Мгновенный запуск APK на студии Android 3.0 выполняется только на устройстве, прикрепленном к adb.

Ответ 4

Я нашел этот блог, который устраняет причину ошибки "только для тестирования"

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

в основном, есть две вещи, на которые следует обратить внимание:

Вы не можете установить приложение с android: testOnly = "true" обычными способами, например, из файлового менеджера Android или из загрузки с веб-сайта.

Android Studio 3.0 устанавливает Android: testOnly = "true" на APK, которые запускаются из IDE

android studio 3.0 теперь устанавливает этот флаг "testOnly", когда вы компилируете версию выпуска с помощью зеленой кнопки "Выполнить" (создайте проект CTRL + F9).

Решение, которое я нашел, состоит в том, чтобы не называть "сделать проект", а вызвать

  • build> build APK или
  • build> Создать подписанный APK...

Ответ 5

Я использую Android Studio 3.1 Canary 5

Что я пробовал (но не сработало):

  • Я попробовал все ответы, как указано выше, но, к сожалению, я не нашел решения.
  • Я удалил зависимость kotlin и подписал, но не работает.
  • Я пытался использовать командную строку, как ./gradlew assembleRelease
  • Я пытался собрать apk, используя "Build APK" и "Generate Signed APK"

После всех возможностей я получил решение следующим образом: - Версия Compile SDK изменена с Android P на Android Oreo 27 - Изменена версия AppCompat на 27.0.1

и его успешно работает сейчас.

Спасибо.

Ответ 6

Перейдите на терминал и запустите эту команду из корня вашего проекта:

gradle assembleRelease

Ответ 7

Это сработало для меня. Попробуйте запустить это и построить снова. ./gradlew сборка

Возможно, вы загружаете неправильный apk файл, созданный ранее, а не подписанный apk. Поэтому выберите файл apk, указав точный путь к сгенерированному файлу apk со знаком.