Подписание моего приложения android как системного приложения
подписание моего приложения android в качестве системного приложения
в моей компании мы хотели бы полный контроль за потреблением батареи в полевых условиях, используя только 2g и gps может разрядить батарею ужасно быстро. Мы решили, что нам нужно иметь корневой доступ к мобильному телефону, чтобы, когда телефон простаивает, мы отключили бы это ненужное потребление батареи. А также мы не позволяем пользователям удалять его и очищать данные.
мой вопрос :
- где я могу получить этот ключ подписи?
- будет ли это похоже на корневой доступ, если когда-либо мне удалось подписать?
- в чем разница между Root vs Signed with key?
2 ответов
хорошо ниже ваш ответ,
-
вы можете найти ключи платформы от здесь. Команда для подписания apk (для linux):
java -jar signapk.jar -w platform.x509.pem platform.pk8 APPLICATION.apk APPLICATION_sign.apk
Если вы подписываете свой apk с ключами платформы, вам не потребуется root-доступ, вы можете просто установить его из команды "adb install", и да, в некотором роде это похоже на root, потому что он может получить доступ ко всем внутренним api, но имейте в виду, если ваше приложение подписано системой, то вы не можете написать внешний накопитель.
-
прежде всего, не объединяйте оба root-пользователя, где системное приложение-тип приложения, который отличается от обычного приложения ниже ссылки, может очистить вашу путаницу в отношении него.
что-это-разница-между-android-пользователь-приложение-с-root-access-и-a-system-ap
отвечая на ваши три вопроса:
1-где я могу получить этот ключ подписи?
С собственная документация Android в разделе отпустите клавиши
дерево Android включает тестовые клавиши под build/target/продукт / безопасность
но следующая часть, где вы должны действительно обратить внимание
поскольку тестовые ключи публично известны, каждый может подписать свои собственные .apk файлы с теми же ключами, которые могут позволить им заменить или hijack системные приложения, встроенные в образ ОС. По этой причине важно подписать любой публично выпущенный или развернутый образ ОС Android с помощью специального набора release-ключей, которые только вы есть доступ.
поэтому в основном, если вы не можете каким-то образом получить доступ к ключам pvt производителя, это может быть трудно достичь. Вот почему пользователь в предыдущем комментарий говорил, что это обычно достигается путем создания собственной сборки.
2 - будет ли это похоже на корневой доступ, если я когда-либо успешно управлял подписать?
вы не получите "корневой доступ", делая это, но вы получите доступ к чрезвычайно высокому уровню доступа. В частности, это достигается тем, что вам будут предоставлены разрешения с объявленным android:protectionLevel="signature"
который, возможно, самый эксклюзивный.
еще один опасный следствием (или забавой, в зависимости от того, как вы смотрите на это) этого является то, что теперь вы можете запустить свое приложение в system user process android:sharedUserId="android.uid.system"
- в соответствии с правилами безопасности android "process sandboxed" это обычно не удается.
3-в чем разница между Root vs, подписанным ключом?
С приложением, подписанным ключом платформы из вашей сборки, вы можете получить разрешения, упомянутые выше, или запустить приложение с UID 1000 (system uid), который в android намного больше мощный, чем UIDs других приложений из-за разрешений, которые он может запросить, это поведение, специфичное для Android. В корневом устройстве вы можете использовать UID 0 (root), который имеет самый широкий доступ в системах на базе linux, вы можете обойти большую часть безопасности sandboxing/checks/fences на ОС.
надеюсь, что это помогает ;)