Как обновить системное приложение без переустановки ОС?

Я создал приложение и установил его на устройство в образе системы Android.

Теперь я добавил несколько новых функций в свое приложение и хочу обновить свое текущее установочное приложение этой новой функцией.

Один из способов сделать это — переустановить ОС Android с новой версией приложения.

Есть ли другой способ сделать это, чтобы я мог обновить приложение без обновления всей операционной системы Android?

Ответы (3)

Пока у вас есть ключ разблокировки (или любой другой ключ, который вы используете), вы подписываете приложение в /system, вы можете просто быстро загрузить свое приложение:

adb install -r bin/my-signed-app.apk

Обратите внимание на опцию '-r'.

Это обновит приложение, но не удалит/обновит файл apk в /system или очистит данные пользователя.

Возможно, вам придется сначала очистить данные из-за изменений схемы базы данных:

adb shell pm clear my.app.package

Затем вы можете пойти и вручную удалить это «обновление» через действие настроек приложения.

Не существует «прямого» способа сделать это. Вы не можете обновить системное приложение из Play Store — вы можете загрузить обновление, но оно будет установлено как независимое приложение (которое будет работать вместо системного приложения), но системное приложение все равно останется в системе, и его нельзя заменить Play Store или установщиком по умолчанию, присутствующим в системе.

Вы можете сделать это вручную, заменив файл .apk из /system/app (или priv-app) другим .apk и установив соответствующие разрешения.

И это также можно сделать путем обновления системы, либо OTA, либо путем перепрошивки ROM - это полностью заменит старое приложение.

Спасибо, Александр Стефаннович, да, мы не можем обновить системное приложение из Google Play. Я тоже не хочу обновлять систему. И после публикации мы не можем обновить его вручную на устройстве каждого пользователя. Можем ли мы иметь какой-либо другой вариант для этого?
  1. Укорените устройство

  2. Перемонтируйте /systemкак доступный для записи (я использую для этого Root Explorer )

  3. Заменить /system/app/NameOfYourApp.apkна новую версию

  4. Возможно, вам придется очистить кеш/данные приложения и перезагрузиться.

Привет, Мэтью, спасибо за ваш ответ, но мы не можем рутировать устройство каждого пользователя. Я, мое приложение использует 1000 пользователей, тогда как я могу получить root права на любое пользовательское устройство.
Вы не можете изменить системный раздел без рута или перепрошивки. Вероятно, вы можете установить обновление обычным способом с помощью установщика пакетов, который оставит исходную версию на устройстве, но если вы ищете систему удаленной доставки и не хотите использовать существующие, такие как Play... придется создать его самостоятельно.