Я могу подтвердить, что для выпусков на дорожке внутреннего теста в магазине Play Store validityTimestamp действительно устанавливается на одну минуту после успешного ответа «allow» с сервера. Что касается дальнейших исследований, я знаю, откуда взялся этот минутный период кэширования. Это явно не установлено сервером. На самом деле он находится в коде библиотеки lvl, который можно редактировать, как упоминалось выше. Обычно (для производственных выпусков) сервер возвращает validityTimestamp классу ServerManagedPolicy в «extras» следующим образом:
setValidityTimestamp (extras.get ( "VT"));
и вот соответствующая часть того, что происходит в этом методе:
private void setValidityTimestamp(String validityTimestamp) {
Long lValidityTimestamp;
try {
lValidityTimestamp = Long.parseLong(validityTimestamp);
} catch (NumberFormatException e) {
// No response or not parsable, expire in one minute.
lValidityTimestamp = System.currentTimeMillis() + MILLIS_PER_MINUTE;
}
Я добавил некоторый отладочный код, чтобы посмотреть, что было параметром String для этой функции. Оказывается, пустая строка. Таким образом, сервер ничего не возвращает в карте дополнений для "VT". Ответ в ServerManagedPolicy на такую непарсируемую строку должен сделать validityTimestamp текущим временем плюс одну минуту (MILLS_PER_MINUTE).