Как удалить script android

Скрипт удаляет «неудаляемые» мусорные приложения Android

На Хабре уже публиковались инструкции, как удалить со смартфона «неудаляемый» мусор, который туда добавляют производители и операторы сотовой связи. Для этого не требуются рутовые права. Все операции можно выполнить вручную, подключив смартфон к компьютеру по ADB. Подробнее см. статью «Как удалить «неудаляемые» приложения со смартфона».

Сейчас на Gitlab опубликован универсальный bash-скрипт Universal Android Debloater, который автоматизирует большинство операций на большинстве популярных моделей смартфонов.

Поддерживаются следующие функции:

  • Быстрый поиск по всем пакетам
  • Удаление системных или пользовательских пакетов вручную или по списку
  • Переустановка системных или пользовательских пакетов вручную или по списку
  • Бэкап/восстановление по ADB (работает не очень надёжно, см. FAQ)
  • Распознавание производителя устройства и автоматический выбор подходящего списка мусора
  • Ведение логов (под рутом)
  • Поддержка рута
  • Установка альтернативных опенсорсных приложений вместо стоковых, список см. здесь (эта функция пока не реализована)

Примечание: без рута удаление программ не включает полное удаление файлов (см. FAQ).

Универсальные списки мусорных программ:

  • GFAM (Google/Facebook/Amazon/Microsoft)
  • AOSP
  • Производители (OEM)
  • Мобильные операторы
  • Qualcomm / Mediatek / Разное

Списки мусорных программ производителей:

Источник

Как удалить «неудаляемые» приложения со смартфона

Чтобы увеличить привлекательность смартфонов, производители ставят на них как можно больше разных программ. Это понятно. Просто берём и удаляем ненужное… Стоп.

Оказывается, некоторые программы невозможно удалить. Например, на отдельных моделях Samsung невозможно удалить Facebook (есть только опция ‘disable’). Говорят, на Samsung S9 вдобавок предустановлены «неудаляемые» приложения Microsoft.

Эти смартфоны приведены для примера. Такая же проблема и на других моделях. На многих есть неудаляемые программы от самого производителя.

Всё это надо зачистить.

Очень редко встречаются примеры моделей, на которых нет лишних программ. Например, когда вышел первый iPhone, то компания Apple жёстко зафиксировала пакет установленных приложений, поэтому оператор AT&T не смог добавить туда свой привычный мусор.

Есть ещё пример смартфонов от Google начиная с Google Phone G1 в 2008 году, затем линейки Nexus и вплоть до текущих Pixel (Pixel 1, 2 и 3). На них тоже нет почти никакого мусора, если не считать слишком большого количества приложений Google, которые тоже считаются якобы системными и не удаляются полностью. Ну и небольшого количества сторонних неудаляемых приложений. Например, на Nexus5 намертво вшит HP Cloud Print. Но об этом позже.

В принципе, по такой логике и многочисленные приложения от Apple на iPhone можно считать ненужным мусором. Если быть точным, на iPhone предустановлены 42 приложения, не все из которых легко удалить: App Store, Calculator, Calendar, Camera, Clock, Compass, Contacts, FaceTime, Files, Find My Friends, Find My iPhone, Game Center, Health, Home, iBooks, iCloud Drive, iMovie, iTunes Store, iTunes U, Keynote, Mail, Maps, Messages, Music, News, Notes, Numbers, Pages, Passbook, Phone, Photos, Podcasts, Reminders, Safari, Settings, Stocks, Tips, TV, Videos, Voice Memos, Wallet, Watch, Weather.

На Android предустановлено 29 приложений, и тоже некоторые из них не удаляются стандартными средствами: Android Pay, Calculator, Calendar, Camera, Chrome, Clock, Contacts, Docs, Downloads, Drive, Duo, Gmail, Google, Google+, Keep, Maps, Messages, News & Weather, Phone, Photos, Play Books, Play Games, Play Movies & TV, Play Music, Play Store, Settings, Sheets, Slides, YouTube.

Примечание: описанный ниже способ позволяет удалить любое из этих приложений.

Впрочем, мы говорим в первую очередь не о мусоре в дефолтной операционной системе, а о других ситуациях, когда сторонний производитель вроде Samsung заполняет свой смартфон огромной кучей неудаляемых программ, начиная с собственных фирменных приложений, и заканчивая программами Facebook и Microsoft. Так же поступают и другие производители.

Зачем они это делают? Ну очевидно, что из-за денег. По партнёрским соглашениям установить программы партнёра стоит одних денег. А установить те же самые программы в виде неудаляемых — уже совершенно других денег. Это просто предположение.

Хотя это просто удивительно. Мы платим за телефон Samsung сотни долларов! И они ещё хотят урвать пару баксов на партнёрских соглашениях!

Возможность удалить приложение отсутствует

Facebook всегда заявлял, что «отключение» (disable) приложения — то же самое, что и удаление. Хотя оно (приложение) потом и занимает немного места в памяти, но не должно проявлять никакой активности или собирать данные. Но в последнее время люди настолько потеряли доверие к Facebook, что не верят даже в это. Мол, а почему оно тогда полностью не удаляется из системы?

Facebook и Microsoft годами заключает соглашения c производителями телефонов и операторами связи по всему миру. Финансовые условия не разглашаются. Facebook также отказывается говорить, с какими конкретно партнёрами у него сделки на неудаляемые приложения.

Впрочем, «неудаляемые» они только теоретически. На практике достаточно открыть ADB (Android Debug Bridge) и запустить пару команд.

На телефоне должна быть разрешена отладка по USB, а на компьютере установлен USB-драйвер устройства.

Скачать ADB для разных операционных систем можно по следующим ссылкам:

  • Windows
  • macOS
  • Linux

Извлекаем содержимое zip-архива в любое удобное место, и уже там запускаем окно консоли.

выводит список установленных пакетов.

pm list packages | grep ‘oneplus’
package:com.oneplus.calculator
package:net.oneplus.weather
package:com.oneplus.skin
package:com.oneplus.soundrecorder
package:com.oneplus.opsocialnetworkhub
package:cn.oneplus.photos
package:com.oneplus.screenshot
package:com.oneplus.deskclock
package:com.oneplus.setupwizard
package:com.oneplus.sdcardservice
package:com.oneplus.security
package:cn.oneplus.nvbackup
package:com.oneplus.wifiapsettings

Читайте также:  Что такое клинер для андроид

Как вариант, можно установить на телефоне бесплатную программу Инспектор приложений. Она покажет подробную информацию обо всех установленных приложениях, их разрешения. Вдобавок она может извлекать (скачивать) APK-файлы для любого установленного приложения.

Для удаления конкретного пакета запускаем такую команду:

Это работает без рутования.

Для упомянутых в начале статьи «неудаляемых» программ это выглядит так:

Facebook App Installer

Кстати, приложения от Facebook действительно лучше удалить, потому что они собирают и отправляют в компанию огромный объём персональных данных обо всех аспектах вашей деятельности. Чтобы оценить объём собираемых данных, взгляните на эту диаграмму. Она сравнивает, какие данные о вас собирают разные мессенджеры: Signal, iMessage, WhatsApp и Facebook Messenger.


Источник: 9to5Mac

Facebook Messenger высасывает буквально всё, что может. А вот Signal относится к пользователям гораздо более уважительно. Оно и понятно: это криптомессенджер, ориентированный на приватность.

Понятно, почему в Android нельзя удалить системные приложения штатными средствами. Но список «системных» приложений тоже неоднозначный. Например, перечисленные пакеты трудно назвать системными. Но штатными средствами удалить их тоже нельзя, только отключить (disable):

  • Google Play Музыка
  • Google Play Фильмы
  • Google Play Книги
  • Chrome
  • YouTube
  • и др.

Однако описанный выше метод позволяет полностью удалить их тоже.

Google Play Музыка

Google Play Фильмы

Более того, метод подходит вообще для любого системного компонента.

… и мы навсегда избавляемся от встроенного лаунчера.

Примечание с форума xda-developers. Что касается системных приложений, то они снова появятся после сброса настроек. Это означает, что они всё-таки по-настоящему не удаляются с устройства, а просто удаляются для текущего пользователя (user 0). Вот почему без ‘user 0’ команда adb не работает, а эта часть команда как раз и указывает произвести удаление только для текущего пользователя, но кэш/данные системного приложения всё равно останутся в системе. И это хорошо, потому что даже после удаления системного приложения телефон всё равно сможет получать официальные обновления OTA.

Кстати, с 1 апреля 2021 года в России начнут принудительно устанавливать российский софт на все новые смартфоны. Список из 16 приложений уже утверждён, вот некоторые из них:

  • ICQ (для обмена сообщениями);
  • Новости Mail.ru;
  • OK Live;
  • MirPay (платёжная система, только на Android);
  • Applist.ru (программа-агрегатор для доступа к социально значимым интернет ресурсам).

Будем надеяться, что этот хлам будет удаляться стандартными средствами, а лучше одним нажатием кнопки — сразу все программы. Если же нет, то мы знаем, что делать.

На правах рекламы

Нужен сервер с Android? У нас возможно даже это! VDSina предлагает недорогие серверы с посуточной оплатой, установка любых операционных систем с собственного ISO.

Источник

Shell-скриптинг в среде Android

Содержание статьи

Android основан на ядре Linux, включает в себя набор стандартных UNIX-команд и простой шелл sh. Все это значит, что мы можем не только использовать командную строку для выполнения низкоуровневых операций, но и писать шелл-скрипты, которые будут выполнять функции, недоступные из графического интерфейса. В этой статье мы поговорим о том, что с их помощью можно сделать и зачем все это нужно.

Для прошлого номера журнала я написал статью о Tasker — системе, которая позволяет автоматизировать работу Android и заменить сотни сторонних приложений. К сожалению, Tasker ограничен высокоуровневыми функциями Android и не позволяет выполнять такие низкоуровневые операции, как монтирование файловых систем, изменение параметров ядра, системных переменных или запуск демонов. Зато все это можно сделать с помощью скриптов.

Сразу оговорюсь, что в этой статье речь пойдет о шелл-скриптах в традиционном для Linux понимании, без использования инструментов вроде SL4A, QPython или Roboto. Главное назначение таких скриптов — изменение поведения системы, параметров ядра, работа с демонами (ADB, например) и тому подобное. Скрипты могут стартовать на этапе загрузки ОС, установки новой прошивки, после тапа по кнопке или же по традиции — из терминала.

В статье я расскажу, как писать такие скрипты, как заставить их стартовать автоматически, привязывать к определенному системному событию. В качестве бонуса также объясню, как заставить консоль восстановления (recovery) выполнить необходимые тебе действия перед установкой или сразу после установки новой прошивки. Начинаем.

Особенности Android-окружения

В самой своей основе, там, где нет Java и Dalvik, Android представляет собой минималистичный Linux-дистрибутив со всеми свойственными ему атрибутами: ядром, системой инициализации, набором библиотек, демонов, консольных команд и, конечно же, шеллом. Последний — это не что иное, как mksh из MirBSD, переименованный в sh; простой командный интерпретатор с поддержкой языковых конструкций классического Bourne shell из UNIX и автодополнением по нажатию Tab.

В качестве комплекта базовых UNIX-команд здесь используется toolbox, своего рода урезанная альтернатива BusyBox, которая позволяет вызывать несколько разных команд из одного бинарника (с помощью симлинков). Toolbox включает в себя очень ограниченный набор команд, в котором нет не только grep или sort, но даже cp. Поэтому для полноценной работы со скриптами настоятельно рекомендуется установка BusyBox, благо в маркете полно бесплатных инсталляторов.

Сам шелл располагается не совсем по адресу, поэтому «шибанг» в скриптах будет выглядеть несколько по-иному, а именно #!/system/bin/sh. Зато о расположении бинарников можно не думать вообще, так как в переменной $PATH всегда прописаны правильные значения. Каталогов для поиска команд тут всегда три: /system/bin/, /system/sbin/ и /system/xbin/ для внешних бинарников. Туда обычно устанавливается BusyBox.

Читайте также:  Mountain goat mountain андроид

Основное назначение скриптинга в Android — работа с ядром и системными утилитами. Ядро тут стандартное и экспортирует все те же интерфейсы /proc и /sys, через которые можно рулить железом и состоянием системы. Плюс есть набор специфичных для Android утилит, которые будут очень полезны при разработке скриптов:

  • pm — менеджер пакетов, позволяет устанавливать, удалять и перемещать софт;
  • am — менеджер активностей (Activity), может быть использован для запуска приложений;
  • dumpsys — дамп в консоль массы различной информации о состоянии системы;
  • screencap — утилита для снятия скриншота;
  • screenrecord — утилита для записи скринкастов;
  • getprop/setprop — команды для чтения и изменения системных переменных;
  • start/stop — запуск и остановка системных служб;
  • input — позволяет отправлять в текущее окно кей-коды (эмуляция клавиатуры);
  • service — утилита для управления Java-сервисами, имеет очень много возможностей;
  • svc — позволяет управлять Wi-Fi, USB-подключением и питанием.

Часть вывода команды dumpsys

Хакер #185. Докажи баг!

Первый пример

Теперь давайте попробуем написать первый скрипт. Делать это лучше на компе, а еще лучше в Linux или редакторе, который умеет создавать текстовые файлы без символа возврата каретки (который при открытии в Android будет выглядеть как ^M в конце каждой строки). Наш первый скрипт будет состоять всего из двух строк, которые делают бэкап всех установленных приложений на карту памяти. Его код (требует BusyBox):

Сохраняем (пусть он называется apk_backup.sh) и перекидываем на смартфон с помощью ADB:

Теперь его нужно запустить. Проще всего сделать это с помощью все того же ADB:

Примерно таким же образом скрипт можно запустить из консоли на самом смартфоне/планшете:

Само собой, такой способ не очень удобен. Поэтому нам нужен какой-то быстрый способ запуска скрипта. Наиболее удобное из найденных мной решений — это приложение QuickTerminal. Устанавливаем, запускаем, переходим на вкладку Quick Command, нажимаем кнопку «+», вбиваем имя (произвольное) и команду (sh /sdcard/apk_backup.sh), в поле Output Type выбираем либо Dialog Output, либо Nothing. В первом случае во время выполнения скрипта на экране появится окно с результатом, во втором все пройдет в фоне. Кому что удобнее. Далее сохраняем и получаем кнопку, с помощью которой скрипт можно будет запустить быстро и легко.

Теперь напишем скрипт, который восстановит наш бэкап:

В нем мы задействовали команду pm с опцией install и флагами -t и -r, которые заставляют систему устанавливать приложения, даже если они подписаны тестовым ключом или уже установлены. Также можно использовать флаг -s, который принуждает приложения к установке на карту памяти (если такая возможность есть), или -f — установка во внутреннюю память устройства.

Почти все команды Android имеют подробную справку

Имея рут, можно даже сделать бэкап настроек всех приложений с помощью копирования и архивации каталога /data/data/, однако восстановить его будет очень проблематично, так как в Android каждое приложение исполняется от имени созданного специально для него Linux-юзера и хранит настройки внутри каталога, принадлежащего этому пользователю. Проблема здесь в том, что идентификатор Linux-юзера для каждого приложения генерируется динамически, поэтому после восстановления бэкапа в заново установленной системе идентификаторы не будут совпадать и приложения не смогут прочитать свои настройки. Придется вручную выяснять ID юзера для каждого приложения и менять права доступа на каталоги с данными.

С другой стороны, мы можем использовать встроенный в Android Backup Manager, позволяющий сторонним приложениям использовать возможности системы для бэкапа и восстановления приложений и их данных. Управлять им можно из консоли (а значит, и с помощью скриптов), но сам по себе он никакого бэкапа не производит, а возлагает эту работу на сторонние приложения. Helium — одно из таких приложений. Если установить и настроить его, операцию бэкапа и восстановления можно будет заскриптовать. Например, следующий простой скрипт сделает резервную копию всех сторонних приложений:

Конструкция $ здесь нужна, чтобы обрезать слово «packages:», которое pm добавляет в начало имени каждого пакета. Чтобы восстановить бэкап, можно использовать либо тот же Helium, либо команду bmgr:

Автозапуск

«Это все круто, но скрипты должны запускаться сами», — скажешь ты и будешь абсолютно прав. Без автозапуска от скриптов толку мало, но это легко исправить, если воспользоваться все тем же Tasker. Он умеет запускать любые шелл-команды в ответ на любое событие. Чтобы воспользоваться этой функциональностью, достаточно создать новый профиль, выбрать событие (для бэкапа лучшим событием будет время), затем добавляем действие, выбираем Script -> Run Shell, вбиваем команду (sh /sdcard/script.sh), выбираем, если необходимо, файл для записи результата и включаем профиль.

Другой популярный способ автозапуска — это использование средств автоматического исполнения скриптов при загрузке в сторонних прошивках. Сегодня почти все сколько-нибудь известные кастомные прошивки умеют стартовать скрипты из каталога /system/etc/init.d/, а в стоке такую функциональность можно получить с помощью приложения Universal init.d из маркета. С последним, однако, надо быть осторожным, так как оно запускает скрипты не на раннем этапе загрузки, как это происходит в том же CyanogenMod, а уже после полной загрузки системы.

Итак, что мы можем поместить в автозагрузку? Например, скрипт запуска демона ADB в сетевом режиме:

Для подключения к нему с ПК набираем такую команду:

Также мы можем применить некоторые оптимизации подсистемы виртуальной памяти:

Читайте также:  Установить мой мегафон для андроид

Ну или подогнать механизм lowmemorykiller (автоматическое убийство фоновых приложений при нехватке памяти) под наши нужды:

Ну и конечно же, автоматический выбор планировщика процессов:

Все это можно сделать с помощью специализированного софта, но зачем загружать систему дополнительным ПО, которое еще и будет висеть в фоне, когда можно обойтись несколькими простыми скриптами?

Как запустить скрипт с помощью Tasker

Запуск скриптов до и после установки прошивки

Почти каждый, кто устанавливает на свой гаджет стороннюю прошивку, также ставит поверх нее пакет с фирменными приложениями Google (gapps), который включает в себя маркет, YouTube, Gmail и другой софт. Каждый раз, когда происходит обновление прошивки, раздел /system, содержащий ее и gapps, полностью стирается, но приложения Google всегда остаются на месте. Это происходит потому, что, кроме всего прочего, gapps содержит в своем составе специальный скрипт, который размещается в каталоге /system/addon.d/ и запускается консолью восстановления до и после установки прошивки. Этот скрипт делает бэкап и восстановление приложений Google.

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

Скрипт удаляет рингтоны, уведомления, движок синтеза речи и несколько приложений. Все эти действия запускаются в ответ на передачу скрипту опции командной строки restore (это делает консоль восстановления после установки прошивки), однако также предусмотрены и варианты обработки таких опций, как backup, pre-backup, post-backup, pre-restore и post-restore. Здесь это просто заглушки, но если бы мы захотели сделать бэкап некоторых файлов и приложений перед установкой прошивки, мы могли бы добавить их в блок backup, как это сделано в скрипте /system/addon.d/70-gapps.sh:

Этот кусок скрипта прекрасно иллюстрирует, как сделать бэкап файлов. Ключевые элементы здесь: функция listfiles, которая при запуске выводит листинг файлов, и функция backupfile, которая является частью консоли восстановления (определена в файле /tmp/backuptool.functions). Она делает бэкап файлов в цикле.

Содержимое /system/addon.d/ в CyanogenMod 11 на Motorola Defy

Скрипт бэкапа приложений Google

По словам разработчика mksh, изначально пользовательские версии Android-смартфонов вообще не должны были иметь в своем составе шелл, но после выпуска смартфона для разработчиков HTC (T-Mobile) G1 он фактически стал стандартной частью системы.

Версии Android 2.3 и ниже вместо mksh использовали минималистичный шелл ash, который входит в базовый комплект всех BSD-систем.

Чтобы получить одни и те же скрипты на всех устройствах, можно использовать приложение DropSync или FolderSync (автоматическая синхронизация через Dropbox).

Что еще?

С помощью скриптов в Android можно сделать намного больше, чем бэкапы и настройка параметров системы. Вот, например, скрипт, который просыпается каждые десять минут и, если уровень заряда батареи стал меньше 30%, отключает Wi-Fi и Bluetooth:

Чтобы скрипт работал в фоне, достаточно вызвать его следующим образом:

А это скрипт, который позволяет быстро заполнять формы, требующие ввода имэйла и пароля (в приложениях и на веб-сайтах):

Запускать его можно разными способами. Либо перед запуском приложения, установив задержку:

Либо повесить на какое-то событие Tasker, например на взмах смартфоном. Другой вариант — использовать буфер обмена. В Android, чтобы вставить нужный текст в буфер обмена, достаточно выполнить такую команду:

Не ахти как удобно, зато работает. Как мы можем использовать такую функциональность? Например, сделать простенький скрипт clip.sh:

Соль в том, что скрипт можно вызывать через удаленный ADB либо вообще поместить в /system/etc/init.d/, заменив $1 на нужный текст. Так нужные нам данные всегда будут под рукой, а бесполезный на смартфоне механизм копирования/вставки получит хоть какое-то назначение. Консольные команды можно использовать и для более высокоуровневых операций, например позвонить по указанному номеру:

Или просто открыть окно номеронабирателя с нужным номером:

Примерно таким же образом можно отправить SMS:

Скрипт принимает два аргумента: номер телефона и содержимое SMS. После запуска он откроет окно SMS-приложения, вставит в него нужный текст, а затем нажмет кнопку Enter для отправки, после чего окно закроется.

Другие полезные при скриптинге команды:

  • Перезагрузка в режим recovery:
  • Мягкая перезагрузка (без перезапуска ядра):
  • Открыть нужное приложение (в данном примере — «Настройки»):
  • Открыть веб-страницу:
  • Сообщить приложениям о низком уровне заряда батареи (есть софт, который при этом снижает свою активность):
  • Изменить MAC-адрес:
  • Активировать вибратор:
  • Включить фонарик:
  • Проиграть файл (может не сработать):
  • Отключить указанное приложение (можно организовать цикл для отключения bloatware по списку):
  • Получить список приложений, которые имеют уведомления в строке состояния:
  • Оптимизировать внутренние базы данных с настройками (можно добавить скрипт в автозагрузку, требуется BusyBox):
  • Переключить Wi-Fi-тизеринг на основной интерфейс (нужно для обмана операторов, которые ограничивают скорость соединения при раздаче интернета по Wi-Fi):

Для «отлова» нажатий кнопок можно использовать команду getevent

Вместо выводов

Для кого-то все описанное в статье может показаться несколько надуманным. Дескать, все это можно сделать с помощью стандартного софта и Tasker. Но зачем использовать тяжелый Java-софт там, где нужное действие можно выполнить с помощью простенького скрипта, который не занимает лишней памяти и может быть легко перенесен на другое устройство? Скрипты удобны, просты, быстро отрабатывают и дают возможность тонкой настройки под себя.

Евгений Зобнин

Редактор рубрики X-Mobile. По совместительству сисадмин. Большой фанат Linux, Plan 9, гаджетов и древних видеоигр.

Источник

Оцените статью