2010-04-21 4 views
8

Из документации подписи на https://developer.android.com/studio/publish/index.html:Вход приложение с несколькими сертификатами

Когда система установки обновления для приложения, если какой-либо из сертификатов в новой версии соответствует ни одному из сертификатов в старой версии , то система позволяет обновить.

Это означает, что приложение может быть подписано несколькими сертификатами.

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

Я неправильно понимаю документацию или это действительно возможно? Если да, то как?

Есть ли другой способ для приложения поддерживать разные сертификаты и с этим, имея два или более объекта подписи?

+1

«Системное приложение, которое было первоначально подписано изготовителем устройства. Дополнительные обновления могут быть подписаны разработчиком». - это конкретно невозможно. «Обновление» подразумевает изменение, и поэтому APK необходимо будет отменить изготовителем. – CommonsWare

+0

Вы говорите, что нельзя иметь больше одного сертификата для данного apk? Возможно, мой пример не был полным, я должен был написать: «Системное приложение, имеющее два сертификата и первоначально подписанное изготовителем устройства. Дополнительные обновления могут быть подписаны разработчиком с использованием второго сертификата». Я думаю, что это противоречит документации или не так ли? – rcabaco

+0

Согласно [официальной документации] (http://developer.android.com/tools/publishing/app-signed.html # подпись-вручную): _ Обратите внимание, что вы можете подписывать APK несколько раз с разными ключами. – Stan

ответ

2

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

Это создаст различные файлы внутри папки META-INF. Я не знаю, какие последствия для процесса обновления на рынке Android.

+0

Я верю, что ваш ответ - это путь. Мой был взломан. Из тестов, которые я сделал, META-INF не учитывается при подписании apks. Это не было выпуском, но я действительно тестировал на реальных устройствах - установку измененного apk. – rcabaco

2

Я нашел решение для этого, но не настолько красивое, но решение тем не менее.

Подписанный APK файл состоит из:

  • Файлы подписаны с данным сертификатом
  • мета-INF папка с открытым сертификатом ключа

иметь APK с несколькими сертификатами:

  • Каждая сторона подписывает apk
  • содержимое META-INF каждого APK собраны
  • новый APK (это просто почтовый файл) создается и папка META-INF содержит все сертификаты

Это позволит любому подписания сторон для обновления apk.

Обратите внимание, что нет возможности добавлять сертификаты в обновление.

+0

Как вы это? Не могли бы вы объяснить это чуть позже? Я думал, что редактирование содержимого apk и его переупаковка должно изменить полученный файл и сделать попытки предварительного подписания бесполезными? – Janusz

+0

Hey - * bump * - мое предположение было бы с @Janusz, как бы вы добавили новые подписи, не затрагивая подпись всего пакета. Изливается ли META-INF из расчета подписи? –