Как правильно установить системное приложение с учетом его .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.

jonesdavide
источник
Да, я подумал, что это будет путь, попробовал, говорит плохая подпись. Я использовал 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

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

Mindwin
источник
3

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

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

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

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

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

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

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

keyboardsurfer
источник
Смотрите комментарии других ответов. У меня уже включены нерыночные установки, так как у меня был установлен
swype