Как правильно установить системное приложение с учетом его .apk?


30

Я удалил системное приложение (com.android.mms), и у меня есть .apk, необходимый для его восстановления, однако он не будет устанавливаться по стандартным каналам (запуск .apk дает мне «приложение не установлено»). Как правильно установить .apk системного приложения?

Ответы:


41

Вам нужно будет передать .apk на телефон в системный раздел в папку /system/appили /system/priv-appпри использовании Android 4.3 с помощью adb. Вы можете найти больше информации adbздесь: http://android-dls.com/wiki/index.php?title=ADB .

Для того, чтобы написать /systemвам, скорее всего, придется перемонтировать его для чтения-записи:

adb shell
su
mount -o rw,remount /system

Или сделайте это полностью из хоста ADB:

adb root
adb remount

Теперь вы можете разместить .apk:

adb push my-app.apk /sdcard/
adb shell
su
cd /sdcard
mv my-app.apk /system/app
# or when using Android 4.3 or higher
mv my-app.apk /system/priv-app

Впоследствии, если флаги еще не установлены, измените разрешения. Все системные приложения должны иметь разрешения rw-r--r--. Вы также можете изменить их через ADB с помощью команды chmod 644 /path_to/your_file. Хотя он довольно старый, это может помочь

После того, как вы разместили, .apkвам необходимо перезагрузить устройство. Например с adb reboot.


Да, я подумал, что это будет путь, попробовал, говорит плохая подпись. Я использовал Mms.apk, который является частью .zip rom, который я использовал для установки текущей версии Android.
Дмитрий Лихтен

2
Прекрасный ответ. Спасибо. Один комментарий, я не смог "mv my-app.apk / system / app". Я получил сообщение об ошибке «Сбой на« XXX.apk »- ссылка для нескольких устройств». Я был в состоянии CP и RM apk, как описано в android.stackexchange.com/questions/75920/…
Майкл Леви

1
Попробуйте использовать cpвместо, mvпотому что вы перемещаетесь между различными файловыми системами, и это не поддерживается во всех mvверсиях
Andres

это не обновляет разрешения Android с расположением apk, что требуется для пакетов, использующих apk
paIncrease

5

Карл Паркер пишет об этом на Android Authority :
(частично воспроизведено на случай, если оригинальное сообщение выйдет из строя)

Для приложений, установленных на устройстве

  • Предполагая, что вы установили приложение на свое устройство, перейдите по ссылке Google Play Store приложения и запишите слова после «? Id =» и проигнорируйте остальные.
  • Подключите устройство к компьютеру через USB-кабель.
  • Откройте командную строку на своем компьютере и введите следующие команды:
adb remount 
adb shell 
su 
cd /data/app/ 
  • Введите команду ls appfilename*(где «appfilename» - это идентификатор приложения в Google Play Store; обязательно добавьте звездочку в конце). Эта команда отобразит полное имя файла APK приложения.
  • Введите следующую команду:
mv apk_full_filename_here /system/app/apk_full_filename_here 
exit 
exit 
adb reboot 
  • Теперь устройство перезагрузится. Ваше приложение теперь сохранено как системное приложение.

Для приложений, чьи APK находятся на жестком диске ПК

  • Откройте командную строку на своем компьютере и перейдите в папку, где находится файл APK.
  • Включите отладку USB на вашем устройстве и подключите устройство к компьютеру с помощью USB-кабеля.
  • Введите следующие команды:
adb remount
adb push apk-filename-here /system/app/
adb shell chmod 644 /system/app/apk-filename-here
adb reboot

Ваш телефон автоматически перезагрузится. Ваше приложение теперь будет сохранено как системное приложение.


3

обратите внимание, что при игре с adb вы будете устанавливать приложения по имени файла пакета (то есть в командной строке вы наберете> adb install myFile.apk)

но вы удалите их через имя пакета (> adb uninstall com.this.that.otherthing)

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

Это поможет добавить adb в вашу PATH, чтобы вы могли просто перейти в каталог, где находится файл .apk, и набрать adb install myFile.apk.


Благодарность! Не знал о механике деинсталляции :)
Дмитрий Лихтен

Не пробовал с системными приложениями, но для обычных приложений /system/bin/pm(Package Manager) у меня работала утилита. Нравится pm install -r myFile.apk( -rдля «замены»). Таким образом, вам не нужно удалять и знать имя пакета.
Александр Малахов

0

Вам необходимо установить Android SDK (или, по крайней мере, инструмент под названием adb). Далее вам нужно разрешить "Non Market установки" на вашем устройстве.

После этого вы перейдете в папку, содержащую файл с консолью. Затем подключите телефон (через USB) и запуститеadb install appname.apk


Смотрите комментарии других ответов. У меня уже включены нерыночные установки, так как у меня был установлен
swype
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.