AOSP OTA - обновление системных приложений до более новой версии не отменяет ранее установленные, более старые обновления apk.

Мы управляем собственной прошивкой на основе AOSP для наших приставок.

Когда мы создаем новую прошивку OTA с более новыми версиями системных приложений. Новые версии системных приложений не отменяют более старые версии, установленные в / data.

Есть ли какие-либо сценарии после установки или другие методы для обеспечения этого?


person Code Rebel    schedule 23.08.2019    source источник


Ответы (2)


Исходный код Android для PackageManagerService содержит следующие строки:

mIsUpgrade = !Build.FINGERPRINT.equals(ver.fingerprint);
... some other code

if (mIsUpgrade && !onlyCore) {
                Slog.i(TAG, "Build fingerprint changed; clearing code caches");
                ... cache clearing logic
                ver.fingerprint = Build.FINGERPRINT;
}

То есть кеши кода будут очищены при изменении отпечатка сборки. Неочищенный кеш означает, что информация о пакете для вашего приложения будет одинаковой (информация о версии, флаги и т. Д.).

Эта проблема может возникнуть из-за того, что ваш OTA-пакет имеет тот же отпечаток, что и система, в которой он установлен.

Проверьте свой make-файл и убедитесь, что вы создаете уникальный отпечаток для каждой сборки.

Значение отпечатка пальца можно найти в файле "system / buildprops". Так что вы можете проверить, не в этом ли проблема.

person t.m.    schedule 24.04.2020

Убедитесь, что более новые версии системных приложений имеют более высокий код версии, чем старый существующий код версии.

PackageManagerService ищет лучшую версию, сравнивая код версии. После обновления OTA, если ваша система / priv-app имеет более высокую версию, чем версия данных / приложения, система / priv-app будет иметь приоритет.

person Daud Arfin    schedule 27.08.2019