Как я могу создать свой APK локально, который имеет подпись, совместимую с моим приложением в Playstore (в котором используется подпись приложений Google)?

Для моего приложения включена функция подписи Google App. Я создал APK, подписал его, используя файл хранилища ключей, и загрузил его в devConsole. Затем Google снова подписал APK с помощью подписи приложений Google, которую затем отправил пользователям в Playstore.

  1. Я загрузил и установил APK из Playstore (который содержит подпись для подписи приложений Google).
  2. Я загрузил сертификат подписи приложения из devConsole -> Подписание приложения -> Сертификат подписи приложения
  3. Я добавил сертификат в свой текущий файл хранилища ключей, используя команду ниже:

keytool -importcert -file [app_signing_certificate] -keystore [current_keystore_file]

  1. Я создал выпуск APK, используя новое хранилище ключей, созданное на шаге 3.
  2. Теперь, когда я пытаюсь обновить этот новый APK поверх APK, который я установил из Playstore, я получаю сообщение об ошибке.

Failure [INSTALL_FAILED_UPDATE_INCOMPATIBLE: Package xyz signatures do not match previously installed version; ignoring!]

Я хочу знать, что нужно сделать, чтобы локально создать APK, который соответствует подписи того, который был загружен из Playstore.

0
0
942
2

Ответы 2

Вам понадобится фактический ключ подписи от Google. Я не думаю, что вы сможете это получить, поэтому и не можете.

Правильный. Одна из целей использования подписи приложений в Google Play с другим хранилищем ключей загрузки - не хранить хранилище ключей на вашем компьютере. Для локальной разработки вы должны протестировать с помощью ключей отладки. Если вы хотите протестировать выпуск, вы можете использовать тестовый трек в Play Console.

Pierre 17.12.2018 23:44

@Gabe Sechan, когда я добавляю «Сертификат подписи приложения» (который я получаю из devConsole -> Подписание приложения) в свой файл хранилища ключей, это не делает его эквивалентным фактической подписи от Google? Какая разница между двумя?

Harminder Singh 18.12.2018 05:42

Вы не можете этого сделать. Для подписания приложений Google Play только Google может подписывать APK.

Как написано на страницы помощи:

  • Certificate: A certificate contains a public key as well as some extra identifying information about who owns the key.

Сертификат подписи приложения, который вы получаете от Google, - это просто информация об открытом ключе, которую можно использовать для проверки подписи. Это не позволяет вам подписывать приложения. Когда вы добавляете его в хранилище ключей, вы просто получаете возможность проверить.

Это не значит, что вы застряли. Зачем нужно подписывать самому?

  • если это просто для использования API на стороне сервера, то большинство API позволит вам добавить более одной подписи, и вы можете использовать свой ключ разработки, а также ключ Google, как разрешено
  • если это так, вы можете быстро выполнять итерацию во время разработки, это можно сделать с помощью Google Play Внутренние тестовые треки, который позволяет очень быстро отправлять внутреннюю тестовую версию разработчикам или QA.

Спасибо за подробный ответ. @Nick Fortescue Рассмотрим сценарий, в котором пользователь использует нашу сборку с двусторонней подписью (установленную из Playstore). Пользователь сталкивается с проблемой, требующей отладки на уровне кода на этом устройстве. Таким образом, мы должны переместить пользователя в отладочную сборку (но без удаления предыдущей сборки). Один из способов - создать локальную сборку с «отлаживаемым истинным». Но согласно вашему ответу выше, мы не можем создать APK локально с такой же подписью. Другой способ - загрузить производный APK из Playstore, но Playstore не позволяет загружать отладочные сборки. Что мы можем сделать в этой ситуации?

Harminder Singh 21.02.2019 13:19

Да, это сложно. По сути, Google play не хочет, чтобы пользователи могли отлаживать APK-файлы, потому что это подвергает их опасности. Я вижу два варианта: 1) выполнить отладку с помощью операторов журнала и получить пользователя на внутреннем тестовом треке. 2) если он настолько серьезен, вам нужна отладка, создайте резервную копию локального хранилища пользователей, удалите игровую версию и заново установите отлаживаемую версию. Ни то, ни другое не идеально, но вы почти никогда не должны оказаться в ситуации, когда вам нужно предоставить отлаживаемый APK производственному пользователю.

Nick Fortescue 21.02.2019 17:21

Другие вопросы по теме