Почему Google Market Billing не может создать образец подписанной версии? - PullRequest
8 голосов
/ 04 января 2012

Я пытался изучить похожие проблемы, но предлагаемые там решения, похоже, не соответствуют моей конкретной ситуации:

Сначала я следовал инструкциям для Настройка и создание примера приложения для биллинга в приложении, заменив ключ безопасности открытым ключом из учетной записи Google для разработчиков и изменив имя пакета с com.example на com.billtheape.

Затем я собрал неофициальную версию и запустил «проверку работоспособности» на своем телефоне Android. Все прошло нормально (за исключением доступа к серверу Android Market, конечно, поскольку по дизайну он работает только с подписанной версией).

Затем я попытался создать подписанную версию выпуска, но получил ошибку:

[2012-01-03 20:52:45 - Dex Loader] Unable to execute dex: 
  Multiple dex files define Lcom/android/vending/billing/IMarketBillingService;

[2012-01-03 20:52:45 - Dungeons] Conversion to Dalvik format failed: 
  Unable to execute dex: Multiple dex files define Lcom/android/vending/billing/IMarketBillingService;

Проблема теперь в том, что даже в «отладочной версии» возникла одна и та же ошибка, независимо от того, сколько раз я пытался очистить проект.

Это не выглядело для меня как проблема пути сборки в том смысле, что описан принятый ответ (я тоже это проверил, но не нашел ничего подозрительного). Поэтому я попробовал что-то еще:

  1. Выходное затмение
  2. Пятнистые три подкаталога в %ANDROID_HOME%\extras\google\market_billing\gen\com: (1) Android (2) пример (3) billtheape
  3. Удален подкаталог example.
  4. Запустил Eclipse и очистил проект.

Отладочная версия теперь собирается правильно, но подписанный выпуск по-прежнему генерирует ту же ошибку. Оказывается, что удаление этого постороннего подкаталога было не тем, что сотворило магию, а скорее перезапустить Eclipse и затем очистить проект.

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

Есть идеи, что означает эта ошибка, почему она происходит и как ее исправить?

Ответы [ 2 ]

11 голосов
/ 06 января 2012

Краткий ответ: Потому что Eclipse + ADT отстой. Это почему.

Более длинный ответ: Я только что импортировал один и тот же точный проект на другую машину с немного другой конфигурацией: Eclipse 3.6.2 (вместо 3.6.1 в проблемной системе, описанной выше) и SDK R13 (вместо R9 в проблемной системе).

Затем я попытался экспортировать его, используя точно такие же шаги, описанные выше.Работает как шарм!

Что это?Voodoo?

Что случилось со днями, когда IDE вел себя более предсказуемо, чем программное обеспечение, которое я пытался разработать?

Следующий шаг: Обновите Eclipse (до 3.6.2) только в проблемной системе и посмотрите, решает ли это проблему и в этой системе.

Обновление: Я только что закончил обновление Eclipse 3.6.1 до 3.6.2 в системе-нарушителе.Оказывается, невозможно установить Eclipse и сохранить существующий ADT.https://dl -ssl.google.com / android / eclipse / заставляет вас устанавливать «последние и самые лучшие», даже если вы хотите иначе (например, для управления конфигурацией и отслеживания).Так что с новым Eclipse 3.6.2 я тоже получил ADT 16.0.0.v201112150204-238534.Работает как шарм!

Основная причина и объяснение странного поведения комбинации Eclipse 3.6.1 + ADT 9.0.1.v201101191456-93220 никогда не будет известна ... и это комбо, с помощью которого разработчики должны были (и делали) выпускать рекламуОценка приложений для Android Market в определенный момент времени. Удивительная .

3 голосов
/ 28 ноября 2012

У меня тоже была такая же проблема, и я решил ее следующим образом:

  1. Удалить папку bin & gen
  2. Удалить библиотеки зависимостей (если есть) и добавить их обратно
  3. Наконец очистите проект и соберите его снова.

Готово!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...