Для моего приложения включена функция подписи Google App. Я создал APK, подписал его, используя файл хранилища ключей, и загрузил его в devConsole. Затем Google снова подписал APK с помощью подписи приложений Google, которую затем отправил пользователям в Playstore.
keytool -importcert -file [app_signing_certificate] -keystore [current_keystore_file]
Failure [INSTALL_FAILED_UPDATE_INCOMPATIBLE: Package xyz signatures do not match previously installed version; ignoring!]
Я хочу знать, что нужно сделать, чтобы локально создать APK, который соответствует подписи того, который был загружен из Playstore.
Вам понадобится фактический ключ подписи от Google. Я не думаю, что вы сможете это получить, поэтому и не можете.
@Gabe Sechan, когда я добавляю «Сертификат подписи приложения» (который я получаю из devConsole -> Подписание приложения) в свой файл хранилища ключей, это не делает его эквивалентным фактической подписи от Google? Какая разница между двумя?
Вы не можете этого сделать. Для подписания приложений Google Play только Google может подписывать APK.
Как написано на страницы помощи:
- Certificate: A certificate contains a public key as well as some extra identifying information about who owns the key.
Сертификат подписи приложения, который вы получаете от Google, - это просто информация об открытом ключе, которую можно использовать для проверки подписи. Это не позволяет вам подписывать приложения. Когда вы добавляете его в хранилище ключей, вы просто получаете возможность проверить.
Это не значит, что вы застряли. Зачем нужно подписывать самому?
Спасибо за подробный ответ. @Nick Fortescue Рассмотрим сценарий, в котором пользователь использует нашу сборку с двусторонней подписью (установленную из Playstore). Пользователь сталкивается с проблемой, требующей отладки на уровне кода на этом устройстве. Таким образом, мы должны переместить пользователя в отладочную сборку (но без удаления предыдущей сборки). Один из способов - создать локальную сборку с «отлаживаемым истинным». Но согласно вашему ответу выше, мы не можем создать APK локально с такой же подписью. Другой способ - загрузить производный APK из Playstore, но Playstore не позволяет загружать отладочные сборки. Что мы можем сделать в этой ситуации?
Да, это сложно. По сути, Google play не хочет, чтобы пользователи могли отлаживать APK-файлы, потому что это подвергает их опасности. Я вижу два варианта: 1) выполнить отладку с помощью операторов журнала и получить пользователя на внутреннем тестовом треке. 2) если он настолько серьезен, вам нужна отладка, создайте резервную копию локального хранилища пользователей, удалите игровую версию и заново установите отлаживаемую версию. Ни то, ни другое не идеально, но вы почти никогда не должны оказаться в ситуации, когда вам нужно предоставить отлаживаемый APK производственному пользователю.
Правильный. Одна из целей использования подписи приложений в Google Play с другим хранилищем ключей загрузки - не хранить хранилище ключей на вашем компьютере. Для локальной разработки вы должны протестировать с помощью ключей отладки. Если вы хотите протестировать выпуск, вы можете использовать тестовый трек в Play Console.