Ошибка Android Not_Market_Managed

Работаю над опробованием службы лицензирования на рынке и столкнулся с несколькими проблемами с образцом приложения.

Когда я впервые запустил образец, я получил сообщение об ошибке, говорящее о том, что приложение не лицензировано. Я связал свою учетную запись с симулятором, чтобы получить тестовый ответ, и теперь я получаю сообщение об ошибке «Ошибка приложения: NOT_MARKET_MANAGED».

Означает ли это, что я должен загрузить приложение на рынок, чтобы проверить, работает ли оно?


person AndyD273    schedule 16.08.2010    source источник
comment
+1 за этот отличный вопрос.   -  person an00b    schedule 15.06.2011


Ответы (9)


Да, ваше приложение должно быть на рынке, и если оно уже есть, у вас должен быть кодовый номер версии, который больше или равен уже опубликованному.

person Sephy    schedule 17.08.2010
comment
Ну фу. Какой смысл иметь пример приложения, чтобы убедиться, что вы делаете это правильно, если вы не можете его запустить? Могу ли я выставить что-то на рынок, не выставляя это на продажу? Есть ли способ создать тестовый сервер? - person AndyD273; 18.08.2010
comment
ну, я не знаю, но я полагаю, что если вы хотите опубликовать на рынке, вам нужно заплатить 25 долларов, нет? - person Sephy; 18.08.2010
comment
Что ж, я оплатил взнос, ввел всю свою информацию, и у меня все готово для этого, я просто не хочу выставлять его на продажу, пока он не будет действительно готов к продаже, без ошибок. Как есть, у меня LVL не реализован полностью, поэтому я почти уверен, что в нем будут всевозможные ошибки. - person AndyD273; 18.08.2010
comment
@ AndyD273 +2 за точное описание моей ситуации и формулировку моих собственных вопросов. - person an00b; 15.06.2011
comment
Вы можете заплатить 25 и загрузить, но НЕ публиковать приложение, а затем протестировать службу лицензирования, но перед загрузкой убедитесь, что имя вашего пакета правильное. - person Robert Massaioli; 01.01.2012
comment
Отменяя свой комментарий сверху, код версии может быть больше. - person tjb; 26.09.2012
comment
Эй, я загрузил apk, но не опубликовал (это приложение для тестирования) с тем же идентификатором пакета. как протестировать приложение, отмеченную загруженную сборку или сборку разработки. - person Bipin Vayalu; 23.10.2013
comment
Я столкнулся с этой ошибкой сегодня и немного протестировал. Вот текущее поведение: мой опубликованный код версии равен 19. Я протестировал код версии 20 и получил NOT_MARKET_MANAGED. Я загрузил черновик версииCode 20, после чего лицензирование заработало правильно. Таким образом, вы можете либо подождать, чтобы увеличить свой код версии, либо загрузить черновик нового кода версии. Понятия не имею, почему Google посчитал такое поведение полезным, но оно есть. - person Luke; 19.01.2016

Может есть другой способ. Комментарии к MainActivity примера гласят:

 * The first thing you need to do is get your hands on your public key.
 * Update the BASE64_PUBLIC_KEY constant below with your encoded public key,
 * which you can find on the
 * <a href="http://market.android.com/publish/editProfile">Edit Profile</a>
 * page of the Market publisher site.
 * <p>
 * Log in with the same account on your Cupcake (1.5) or higher phone or
 * your FroYo (2.2) emulator with the Google add-ons installed. Change the
 * test response on the Edit Profile page, press Save, and see how this
 * application responds when you check your license.

И когда вы войдете в http://market.android.com/publish/editProfile, вы увидите вариант изменения License Test Response:

введите здесь описание изображения

Текстуально говоря:

Этот ответ о проверке лицензии будет отправлен на устройства, использующие @gmail.com или указанные выше тестовые учетные записи для приложений, которые вы загрузили в Market. Кроме того, эта учетная запись (но не тестовые учетные записи) будет получать этот ответ для приложений, которые еще не были загружены в Маркет.

Если вы щелкнете по этому списку выбора, вы увидите различные варианты:

введите здесь описание изображения

Я думаю, все, что вам нужно сделать для этого начального образца обучающей программы LVL, это изменить ответ с Respond normally на LICENSED или любой другой параметр, который вы хотите протестировать.

ОБНОВЛЕНИЕ: оказалось, что вышеуказанная мера недостаточна. Я все еще получаю ошибку NOT_MARKET_MANAGED. Я предполагаю, что «Пример лицензирования рынка» должен быть загружен, как предлагалось в предыдущих ответах. Однако обратите внимание, что это не может быть отладочная версия:

введите здесь описание изображения

О, и вы не можете загрузить этот «Пример лицензирования для рынка» как есть. Вы должны как минимум изменить имя пакета:

введите здесь описание изображения

Я вижу, как можно улучшить систему образцов/примеров Google, чтобы она стала более удобной для разработчиков...

Странно. После загрузки приложения (только загрузка и сохранение черновика, без заполнения других обязательных полей) "Пример лицензирования на рынке" перестает выдавать ошибку NOT_MARKET_MANAGED, несмотря на то, что явно выбрано NOT_LICENSED. Вместо этого он отвечает сообщением Allow the user access. Я также попытался установить (для целей тестирования и обучения) значение ERROR_SERVER_FAILURE, но получаю то же сообщение Allow the user access.

Почему?

person an00b    schedule 15.06.2011
comment
Я надеюсь, что когда Android немного повзрослеет, они добавят кое-что из этого в SDK, чтобы он работал без особых усилий. Вот что я сделал, чтобы, наконец, получить правильную работу лицензирования: http://www.droidforums.net/forum/android-app-developers/69899-market-license-easy-implementation-protect-your-apps.html Я могу снова поиграть со всем этим процессом в будущем, когда буду делать другое приложение. Может быть, к тому времени они заставят его работать правильно. Спасибо за тестирование. - person AndyD273; 15.06.2011
comment
О, попробуйте следующее: зайдите в диспетчер приложений и закройте приложение или перезагрузите устройство и повторите попытку. Я обнаружил, что он кэширует ответ от Google, поэтому, если я пометил его как лицензированный, я открыл приложение. вернулся на главный экран, пометил его как нелицензионное и снова открыл приложение, оно все равно будет отображаться как лицензированное. Как только я завершу процесс приложения, он перепроверит статус лицензии и вернет нелицензированный ответ. - person AndyD273; 15.06.2011
comment
@ AndyD273 Еще раз +2 за фантастическую ссылку и за понимание бедственного положения, через которое приходится пройти таким n00bs, как я. Тем временем я обнаружил, что тестирование примера лицензирования рынка невозможно! - person an00b; 16.06.2011
comment
@ AndyD273 - Причина, по которой LVL разрешал доступ к вашему приложению, даже если вы выбрали НЕЛИЦЕНЗИОННОЕ, заключается в том, что вы загрузили apk. Как видно на странице LVL google: Кроме того, как отмечалось выше, приложения, которые находятся в черновом режиме (другими словами, приложения, которые были загружены, но никогда не публиковались), будут возвращать ЛИЦЕНЗИОННОЕ для всех пользователей, даже если они не указаны как тестовые. Пользователь. Поскольку приложение никогда не предлагалось для загрузки, предполагается, что все пользователи, запускающие его, должны были получить его по авторизованному каналу для целей тестирования. - person dell116; 28.07.2011
comment
Спасибо Делл116. Как ни странно, я получил нелицензионное сообщение до того, как официально опубликовал его для продажи в магазине, хотя, может быть, с тех пор они что-то изменили? Мне просто нужно было заставить приложение перепроверить статус, убедившись, что оно полностью закрыто, перезагрузив телефон или уничтожив процесс. В следующий раз, когда я попытаюсь отважиться опубликовать что-то в магазине Android, я буду уделять больше внимания своим шагам. Я надеюсь, что они начнут продумывать все, что связано с лицензией, чтобы сделать ее более удобной и удобной. - person AndyD273; 01.08.2011
comment
@dell116 см. здесь мой вопрос stackoverflow.com/questions/16169622 / он всегда возвращает код ответа 256, который разрешает запуск приложения на устройстве, несмотря на проверку testaccount - person Khan; 24.04.2013
comment
После загрузки в виде черновика вам придется подождать несколько часов, пока APK появится на рынке, и правильно протестировать свое приложение. - person ol_v_er; 25.04.2013

Вы могли бы подумать, что «Сохраненный черновик» будет именно тем, для чего это нужно. В противном случае вы продаете приложение, которое по определению не может быть полностью протестировано вживую.

person Carl Whalley    schedule 20.08.2010
comment
Да, примерно так я и сделал, выложил в маркет, но сохранил, а не опубликовал. По крайней мере избавился от этой ошибки - person AndyD273; 21.08.2010

Загрузите свое приложение (.apk) на рынок. Состояние по умолчанию будет «Сохраненный черновик», поэтому он не будет виден публике, но вы все равно можете протестировать лицензирование.

Еще одна потенциальная проблема:

Убедитесь, что версия, которую вы тестируете/запускаете, имеет тот же android:versionCode в AndroidManifest.xml, что и черновая версия на рынке. Если версии различаются, вы получите сообщение об ошибке NOT_MARKET_MANAGED. (По-видимому, пара ключей RSA, используемая для проверки лицензии, зависит от приложения/версии.)

person Jason Moore    schedule 11.04.2011
comment
Действительно, код версии приложения, которое нужно протестировать, должен совпадать с кодом в Маркете. Использование более высокого кода версии возвращает эту ошибку. Документация неверна! - person amit; 08.02.2012
comment
иногда он проходит и с кодом более высокой версии ... интересно, развернул ли Google некоторые серверы с этой ошибкой, а другие - нет. может быть, это A/B-тест.. ха-ха. - person amit; 08.02.2012

После небольшой борьбы я получил эту работу. Вы не можете использовать образец LVL как есть.

Вот что я сделал:

  • изменить пакет проекта на что-то другое (я использовал: lvl.test)
  • установите для MainActivity BASE64_PUBLIC_KEY значение, указанное в вашем профиле консоли разработчика.
  • экспортировать подписанное приложение
  • перейдите в консоль разработчика и загрузите приложение (создайте фиктивные изображения и дайте ему фиктивное имя, описание и т. д., чтобы оно сохранилось и было указано как «Неопубликованное»)
  • установите экспортированное приложение (из вашей файловой системы) на тестовое устройство (например, adb install bin/path/to/your.apk)
  • на вашем устройстве откройте Android Market, перейдите в «Настройки»> «Учетные записи»> и выберите тот, который соответствует вашей учетной записи консоли разработчика.
  • теперь вы можете выбрать статический ответ на проверку лицензии в своем профиле консоли разработчика и сохранить его. Когда вы запустите образец LVL на своем устройстве, ответ будет соответствовать тому, который вы выбрали!
person fr1550n    schedule 05.01.2012
comment
Я выполнил все ваши шаги, но я все еще не могу заставить это работать. вы пытаетесь это сделать с примером лицензирования рынка, предоставленным Android? Я дал ему другое имя пакета и выполнил все ваши шаги, но я все еще получаю ЛИЦЕНЗИОННЫЙ ответ от сервера, хотя я пробовал разные тестовые ответы... есть предложения? - person Hakan Ozbay; 13.01.2012

По моему опыту, приложение должно быть опубликовано до того, как LVL заработает, в т.ч. тестирование статического отклика. Для меня ERROR_NOT_MARKET_MANAGED исчезло только после публикации, хотя документы говорят, что вы может отладить и протестировать реализацию лицензирования приложения перед его публикацией.

Самое интересное заключается в том, что вы можете публиковать только альфа-/бета-версии – приложение не будет действительно работать, его смогут использовать только тестовые аккаунты.

Когда вы готовитесь к первоначальному выпуску, может показаться неестественным нажимать Опубликовать до того, как вы будете полностью уверены, что все в рабочем состоянии (и тот факт, что вы должны вставить описание и снимки экрана, прежде чем может сделать это еще более тревожно — вы могли бы подумать, что это последние штрихи) — но вы должны, просто убедитесь, что вы сделали разумный выбор в отношении имени пакета и того, является ли приложение платным или бесплатным — эти вещи нельзя изменить после публикации. Публикация сама по себе не делает приложение общедоступным; если у вас нет сборки Production, не беспокойтесь о том, что вы случайно запустите непроверенную версию.

person Ivan Bartsov    schedule 25.05.2014

Это связано, так что это может помочь кому-то:

Я тестировал на Asus Transformer, и мне пришлось удалить все учетные записи, не являющиеся разработчиками, чтобы тестирование лицензии заработало (включая мою учетную запись Yahoo). После того, как другие учетные записи были удалены, все шаги работали без проблем.

person tjb    schedule 26.09.2012

В моем случае я получал из-за разницы в коде версии, поскольку уже опубликованный код версии apk = 2

и после некоторого тестирования выпуска новых apk я установил код версии на 5

что вызывало эту ошибку, поскольку разница версий должна быть точной 1 с опубликованным в настоящее время apk. То же самое было применено и к имени версии.

person akash kubavat    schedule 18.04.2012

Если вы уже попробовали все приведенные выше предложения, попробуйте следующее:

У меня была такая же реакция некоторое время, и я не мог понять, почему это так. Я прочитал всю документацию по лицензированию приложений и до сих пор получаю то же раздражающее Код ответа NOT_MARKET_MANAGED.

Наконец-то я решил проблему, изменив свой идентификатор приложения в файле AndroidManifest.xml. Я переписал приложение с нуля, начав с пустого нового проекта. Проблема заключалась в том, что я не использовал точно правильный идентификатор приложения. Проблема заключалась в том, что в исходном приложении в Google Play Store использовалась буква в верхнем регистре, тогда как во вновь созданном проекте я писал все буквы в нижнем регистре.

Поскольку я исправил applicationId, чтобы он соответствовал 100% (включая регистр), я получаю ожидаемое поведение службы лицензирования.

person Claudio Bernasconi    schedule 28.01.2017