Как создавать приложения в android, которые нельзя удалить? Можем ли мы делать системные приложения?

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

Я нашел еще один возможный способ установить приложение в папку System / apps, как и все приложения Google (я не уверен).

Для этого мне нужен root-доступ, поэтому я планирую сделать следующее, но не знаю, как это реализовать.

  1. Программное рутирование устройства
  2. Установить приложение в папку System / apps
  3. Отключите устройство снова

Как и у многих системных приложений, как они справляются с такой функцией?

Пожалуйста помоги.


person Hardik Joshi    schedule 22.08.2014    source источник
comment
Системные приложения предустановлены. Вы используете собственный код AOSP?   -  person Pankaj Kumar    schedule 22.08.2014
comment
Я уже упоминал, что использовал Device Administrator, это не повторяющийся вопрос. Пожалуйста, сначала прочтите вопрос.   -  person Hardik Joshi    schedule 22.08.2014
comment
@PankajKumar Спасибо за ответ. Я использовал концепцию администратора устройства. thenewcircle.com/s/post/1291/, но пользователь может отключить его в меню настроек и удалите приложение. Мне нужно сделать Системное приложение.   -  person Hardik Joshi    schedule 22.08.2014
comment
Обычно просто рутировать устройство недостаточно. Обычно вам нужно разблокировать загрузчик, смонтировать системный раздел как чтение-запись, а затем записать новый образ. Часто он хранится в ПЗУ, поэтому для его написания вам понадобится программа восстановления, такая как Team Win Recovery Project. Возможно, Stack Exchange для энтузиастов Android станет хорошим местом для продолжения. XDA, если вы можете терпеть этот сайт.   -  person jww    schedule 22.08.2014
comment
@jww Хм, ладно! Спасибо за ответ. Но надеюсь, что какой-нибудь разработчик системных приложений прочитает вопрос и даст несколько советов или решений: - /   -  person Hardik Joshi    schedule 22.08.2014
comment
@Prince Making system app, ваше приложение должно быть подписано сертификатом, который использовался для подписи ОС. Такой простой ответ: вы не сможете сделать свое приложение системным, пока у вас не будет собственной сборки AOSP.   -  person Pankaj Kumar    schedule 22.08.2014
comment
@PankajKumar Я тестировал приложения Google: play.google.com/ store / apps / details? id = com.android.chrome. ЕСЛИ я загружу это приложение, оно не будет удалено   -  person Hardik Joshi    schedule 22.08.2014
comment
Разработчик Google, пожалуйста, помогите мне.   -  person Hardik Joshi    schedule 22.08.2014


Ответы (2)


Я сделал кастомный лаунчер, который нельзя удалить.

  1. Важно: рутируйте телефон
  2. установить приложение как системное (установить в /system/app) из recovery mode.
  3. Необязательно: подпишитесь на удаление пакета, проверьте, пытается ли пользователь удалить ваше приложение, и не позволяйте ему выполнять это действие (закрыть действие по удалению пакета)

Сделал архив, который можно установить с recovery mode. Также моему Launcher требуется пользовательское приложение Superuser (я не хочу видеть уведомления от Superuser приложения, когда мой Launcher выполняет корневые команды - молча предоставить root-доступ моему Launcher).

Что у меня в результате: Launcher приложение, установленное как системное (не может быть удалено). Также я заблокировал установку других лаунчеров, добавил белый список разрешенных приложений (не устанавливайте приложения, которые могут управлять файловой системой и изменять что-то важное).

Это решение полно уловок, но его проще реализовать, чем кастомное ПЗУ.

Если вы настроите ПЗУ и каким-то образом установите его на устройство (например, обратитесь к производителю устройства из Китая, запросите драйверы целевого устройства и создайте ПЗУ на устройстве), вы можете подписать свое приложение системным ключом, поместить его в другие системные приложения, и тогда его нельзя будет удалить. В этом случае root-права не нужны, но для его реализации требуется гораздо больше времени и ресурсов.

Если вы будете рутировать устройство программно, то у вас должен быть эксплойт, который выполняет рутирование. И разные устройства по-разному имеют root-доступ.

person Veaceslav Gaidarji    schedule 22.08.2014
comment
Что, если человек получит устройство с вашим лаунчером и запустит его? Тогда он сможет удалить вашу программу запуска, не так ли? Или ваш лаунчер как-то защищает телефон от рутирования? - person Anuar Serikov; 04.12.2017

Просто есть что-то вроде Device Administrator, но обратите внимание на этого пользователя будет предложено включить режим администратора в установленном приложении.

ЗДЕСЬ вы можете найти неплохое описание примера и руководство - попробуйте.

person Robert    schedule 22.08.2014
comment
Других вариантов нет - как правило, пользователь должен иметь полный контроль над всем, что он устанавливает. Если приложение поставляется с изображением, его можно установить как невозможное для удаления. - person Robert; 22.08.2014
comment
Хм, есть различные производители мобильных устройств, которые предоставляют некоторые системные приложения. Как они это делают? Мне нужно создать одно и то же системное приложение в качестве приложения по умолчанию с устройством Android. - person Hardik Joshi; 22.08.2014
comment
КСТАТИ. Как его можно деактивировать в настройках? - person Robert; 22.08.2014
comment
Как я уже упоминал, они создают образ ОС с приложениями, которые уже есть, со специальным флагом, но этот бесполезен, когда вы позже устанавливаете приложение. - person Robert; 22.08.2014
comment
Хм, так что на момент изготовления устройства нам нужно установить наше приложение со специальными перьями? - person Hardik Joshi; 22.08.2014
comment
Позвольте нам продолжить это обсуждение в чате. - person Hardik Joshi; 22.08.2014