Переход Android dev с Linux на Windows: набор инструментов подписывает APK по-другому? - PullRequest
1 голос
/ 14 ноября 2011

Я разрабатываю свое Android-приложение для Linux и Eclipse уже год.Решил переключиться на окна по ряду причин.Перепрыгнул через все обручи, и теперь мое приложение прекрасно работает и экспортируется в Windows.ADT принимает и использует мой сертификат разработчика - пароль магазина и пароль ключа работают нормально.

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

"APK должен быть подписанс тем же сертификатом, что и в предыдущей версии "

Возвращаясь к Linux, я генерирую APK и могу загрузить его нормально.Очевидно, что цепочка инструментов генерирует другой двоичный файл.Проверено с использованием diff.

Я использую одну и ту же версию Java на обеих платформах.Я экспортирую, используя те же хранилища ключей и те же пароли.При запуске jarsigner -verify я получаю следующее:

Windows:

  X.509, O=VoltUp, C=US
  [certificate is valid from 11/17/10 10:28 AM to 10/24/10 11:28 AM]

Linux:

  X.509, O=BatteryStorm Mobile Inc, C=US
  [certificate is valid from 10/25/10 12:04 AM to 10/17/40 12:04 AM]

Так что, очевидно, O = изменилось.Как это могло произойти?

Ответы [ 2 ]

4 голосов
/ 14 ноября 2011

Бинарные различия ничего не показывают. Используйте jarsigner для проверки различий в реальных подписях:

jarsigner -verify -verbose -certs app.apk

Скорее всего, причиной вашей проблемы является то, что алгоритм дайджеста по умолчанию для jarsigner был изменен на SHA256 в Java 7, если вы явно указали SHA1 с помощью -digestalg SHA1, вы должны получить ту же самую подпись (или просто использовать Java 6). Android и Маркет сравнивают сигнатуру как двоичный двоичный объект и на самом деле не заботятся о действительном сертификате, поэтому он жалуется. Технически, если он подписан одним и тем же ключом одним и тем же лицом (сертификатом), его следует считать действительной подписью. Запрещается изменять алгоритм дайджеста на более безопасный, следует считать ошибкой.

Кстати, я не думаю, что ADT официально поддерживает Java 7.

0 голосов
/ 06 февраля 2012

ДУХ !!!Я сделал глупую ошибку с моим контролем версий и использовал неправильную версию моего хранилища ключей ... игнорируйте это!

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