Почему Android разрешает установку APK с истекшим сроком действия сертификата?

#android #certificate #apk #demo #trial

#Android #сертификат #скачать #ДЕМОНСТРАЦИЯ #пробная версия

Вопрос:

Я создал APK, подписанный сертификатом, срок действия которого составляет 1 день. Моя цель — предоставить некоторым людям пробное приложение, но не допустить, чтобы они копировали приложение после истечения срока действия. Если они скопируют приложение до истечения срока действия, это нормально. Я думал, что ОС Android заблокирует установку любого приложения с истекшим сроком действия сертификата на телефоне. Однако я обнаружил, что могу установить приложение на свой телефон через 2 дня после истечения срока действия сертификата, которым оно подписано. Jarsigner подтверждает, что срок действия сертификата истек. Почему Android разрешает установку приложения с истекшим сертификатом?

Комментарии:

1. Это интересно. Но обычно люди проводят ограниченные по времени пробные версии, но вводят код в приложение, чтобы заставить его отказаться от запуска после определенной даты, а не надеясь, что ОС откажется установить его после этой даты. Вы специально хотите ограничить дату установки, а не дату запуска? Если это так, вы могли бы после установки до истечения срока действия создать запись авторизации в личных настройках и / или на SD-карте — у каждого из них разные проблемы с возможностью очистки / переустановки.

2. Да, я не хочу ограничивать дату запуска, приложение должно быть полностью доступно для людей, которым я его предоставляю, но его не следует переустанавливать. Я в замешательстве, потому что в руководстве по Android говорится, что система проверяет дату истечения срока действия сертификата во время установки, но, похоже, это не так. Возможно, я мог бы выполнить эту работу сам, как вы предложили, но я хотел бы знать, почему сертификат не проверяется.

3. Вполне возможно, что вы обнаружили ошибку (или что-то неуловимо неправильное в тестировании). Но для достижения вашей цели, возможно, будет эффективнее полагаться на то, что вы внедряете самостоятельно. Схема авторизации при запуске (возможно, кэшированная) также не обязательно должна зависеть от даты — она может быть привязана к учетной записи пользователя, которую вы создали бы где-нибудь на сервере. Кстати, обратите внимание, что ваша первоначальная схема, даже если бы она работала, была бы тривиально нарушена при повторной подписи apk.

4. Просто для проверки — вы тестируете это с помощью своего приложения, встроенного в режим выпуска, не так ли? И вы не загружали apk на свой телефон с помощью adb push ?

5. Повторная подпись не особенно сложна, вам просто нужно разбираться в инструментах командной строки. По сути, поскольку сертификаты генерируются самостоятельно, телефон не может видеть ничего особенного в вашем, в отличие от чьего-либо другого — он может только обеспечить, чтобы две вещи, утверждающие, что они подписаны одним и тем же объектом, были, так что обновления или схемы общих идентификаторов пользователей (включая системные приложения) могут быть проверены на соответствие существующей установленной части.

Ответ №1:

Я понимаю, что разработчику разрешено устанавливать его через adb или стороннюю программу. Я уверен, что если вы загрузите его на рынок, вы столкнетесь с трудностями. ИМХО, это логично, потому что, устанавливая приложения из Market, вы принимаете на себя множество рисков, которые вы не смогли бы решить с помощью приложения с правильной подписью.