Создание системного приложения
Что мне нужно сделать для создания системного приложения (для получения прав на использование android:sharedUserId="android.uid.system"
в файле манифеста без получения ошибок диспетчера пакетов о проблемах сертификации?
Я использую встроенный телефон с прошивкой.
Ответы
Ответ 1
Хорошо, я считаю, что я нашел решение от великих разработчиков xda: http://forum.xda-developers.com/showthread.php?t=1776095 здесь представлено полное описание того, как получить доступ к приложениям, подписанным ключами платформы.
Вы применяете этот подход?
PS PS Интересно, что пользователи из стека вместо того, чтобы исследовать жесткую проблему, сразу скажут, что вы не можете ее решить, а затем уменьшите репутацию пользователя...
Ответ 2
Что мне нужно сделать для создания системного приложения
Существует два типа системных приложений:
-
Приложения, установленные на системном разделе, которые могут выполняться пользователями с привилегиями root
-
Приложения, подписанные одним и тем же ключом подписки, который подписал прошивку
для получения прав на использование android: sharedUserId = "android.uid.system"
Это определенно потребовало бы, чтобы ваше приложение было подписано с помощью того же ключа подписи, который подписал прошивку. Это верно для любого android:sharedUserId
.
Но некоторые ребята редактируют фондовые приложения, готовят zip файл, который пользователь может обновлять системные приложения путем восстановления.
Вы можете предоставить какие-либо доказательства того, что они каким-то образом связаны с android:sharedUserId="android.uid.system"
.
Ответ 3
Мне не нужно было подписывать мое приложение с помощью прошивки! У меня есть корневое устройство. Поэтому я могу предоставить себе права на запись в определенные каталоги с помощью adb.
Я переместил приложение в /system/priv-app
вместо /system/app
с помощью следующих шагов: Push my apk to/system/app
Теперь я могу получить доступ к системным разрешениям, например, android.permission.SHUTDOWN
Ответ 4
Существует два типа системных приложений.
Тип 1: Приложение с той же подписью в ПЗУ устройства.
Тип 2. Подписанное приложение, которое находится в system/priv-app (может отличаться в зависимости от версии adnroid) в вашем хранилище устройства.
Посетите эту ссылку → http://www.archive.ricston.com/blog/explaining-behavior-android-application-system-apps-nonsystem-apps/
Ответ 5
Системное приложение должно быть подписано ключом платформы. Это делается разработчиками, внедряющими платформу Android на собственном устройстве, или мобильными операторами.
Если это ваш случай, проще всего добавить это на свой Android.mk:
LOCAL_CERTIFICATE := platform
LOCAL_PRIVILEGED_MODULE := true
Если вы добавите эти строки без добавления android: sharedUserId = "android.uid.system" в свой манифест, вы станете платформенным приложением. Системное приложение является более привилегированным, чем приложение платформы. Он использует ключ платформы и работает как системный пользователь.
Если вы не являетесь поставщиком платформы, поставщику платформы потребуется подписать ваше приложение, используя свой ключ платформы. Некоторые поставщики, в том числе и моя компания, сделают это для третьих лиц, демонстрируя уважительную причину этого.
Без подписи ваше приложение может использоваться только на рутованных устройствах.