2014-01-05 4 views
7

У меня есть приложение в Google Play в течение многих лет, которое обнаружило бесчисленные обновления. Последнее обновление (первое за время) не удается установить для некоторых людей, они просто получают сообщение об ошибке «Не зарегистрировано в пакете».«Пакет не подписан правильно», появляющийся для некоторых пользователей

Работает на устройствах для Android У меня дома. Я строй и подписание с пользовательской системой сборки, которая в основном сводится к вызову ant release, а затем

jarsigner -verbose -keystore $(keystore) -storepass $(storepass) $(appname).apk $(alias) 
zipalign -v 4 $(appname).apk $(finalname).apk 

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

я заметил, что documentation добавили следующую осторожность:

По состоянию на JDK 7, по умолчанию подписания algorithim [так в оригинале] изменилось, требуя указать подпись и переваривать algorithims [так в оригинале] (- sigalg и -digestalg), когда вы подписываете APK.

Поэтому я добавил -sigalg SHA1withDSA -digestalg SHA1, который производит APK с разным размером. Я могу опробовать это, но я не хочу продолжать выталкивать обновления и раздражать пользователей, не зная, что я на самом деле что-то исправляю.

Почему это происходит только для некоторых людей? Как это исправить? Явным образом задаю -sigalg/-digestalg достаточно?

+0

Возможный дубликат [Опубликованный Android apk дает ошибку «Файл пакета был подписан неправильно»] (http://stackoverflow.com/questions/2519374/published-android-apk-gives-error-package-file-was- not-signed-правильно) –

ответ

1

Проверить этот ответ:

Published Android apk gives error “Package file was not signed correctly

Проблема, как представляется, связано с jdk7 так ваши исправления может решить эту проблему (но я не испытал это сам!)

+0

Это означает, что мое предполагаемое исправление в вопросе действительно исправит его. Я не понимаю, почему это влияет только на процент пользователей? – EboMike

+0

Я считаю, что у arju есть ответ на это: некоторые устройства могут отсутствовать в этом алгоритме или не использовать правильный по умолчанию –

4

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

Try, добавив

<presetdef name="signjar"> 
<signjar sigalg="MD5withRSA" digestalg="SHA1" /> 
</presetdef> 

в файле build.xml

Note

Проблема состоит в том, после построения версии выпуска с ant release apk не может быть установлен на физическом устройстве

Это происходит только с JDK 7 с JDK 1.6.25, все в порядке!

Это влияет только на небольшой процент, потому что for jarsign jdk7 need SHA1 digest algm, but not with the default algorithms, whatever they are. Таким образом, устройство с некоторыми другими алгоритмами по умолчанию отклонит это и вызовет проблему.

Ниже приведены алгоритмы, используемые

По умолчанию Jarsigner подписывает файл JAR, используя один из следующих вариантов:

DSA (Digital Signature Algorithm) with the SHA1 digest algorithm 
RSA algorithm with the SHA256 digest algorithm. 
EC (Elliptic Curve) cryptography algorithm with the SHA256 with ECDSA (Elliptic Curve Digital Signature Algorithm). 

Для более jar signing

+1

Спасибо Arju. Я предполагаю, что моя путаница исходит из того, что я не знаю, что у каждого устройства свой собственный алгоритм по умолчанию - я не думал, что это будет отличаться по всем устройствам. – EboMike

+0

Да, ваш вопрос также дает мне еще больше знаний об этом –

1

Мы подписали приложение, используя затмение. как: - правой кнопкой мыши проект в Eclipse,> Выбрал Android Tool> Export Подпись Application Package ...

Android Application APK signing?

Я надеюсь, что это может help.Thanks !!

Смежные вопросы