Можно ли добавить новую подпись в существующее приложение?
После прочтения документации по Signature Scheme v2 здесь мне стало интересно, смогу ли я добавить новую подпись в мое текущее приложение.
Просто, чтобы выяснить, у меня есть версия приложения 1.0 с ключом подписи "A". Я хочу отправить обновление (версия 2.0) с ключами подписи "A" и "B".
Эта цитата из документации, кажется, подтверждает возможность, но я не смог этого добиться.
Проверка успешна, если был найден хотя бы один подписант, и для каждого найденного подписчика был выполнен шаг 3.
Каждый раз, когда я пытаюсь установить версию 2.0 как обновление поверх версии 1.0, я получаю следующее сообщение об ошибке:
Ошибка [INSTALL_FAILED_UPDATE_INCOMPATIBLE: подписи пакета (имя пакета) не соответствуют ранее установленной версии; не обращая внимания!]
2 ответа
apksigner в SDK 31.0.0 имеет новую функцию: --append-signature. С помощью этой функции в подписанный apk можно добавить новую подпись, а предыдущая подпись не будет удалена.
Однако, если одна является системной подписью, а другая — сторонней подписью, apk станет несистемной подписью.
Вы не можете "добавить" подпись. Любая дополнительная операция подписания удалит предыдущую подпись APK. Однако вы можете войти в одну операцию с помощью схем подписания v1 и v2. Это то, что apksigner
по умолчанию, когда вы используете его с sign
субкоманда.
Обратите внимание, что вы не можете подписать новое хранилище ключей, вы должны продолжать подписывать то же хранилище ключей, чтобы обновления вашего приложения работали на Android.
Надеюсь, это поможет. Дайте мне знать, если я могу уточнить.