Я создал приложение, которое использует интерфейсы и классы, а также разрешения от скрытого API. Теперь я хотел бы создать прошиваемый zip-файл, который устанавливает apk как системное приложение. Если я прав на это, я должен подписать файл apk сертификатом текущего ПЗУ (из-за использования скрытого API).
Чтобы быть как можно более бессистемным, я подумал, что было бы здорово извлечь сертификат из ПЗУ и подписать apk в процессе флэш-памяти, прежде чем копировать его во внутреннюю память. Это возможно?
Или я что-то не так понял и все гораздо проще, как мне кажется?
Похоже, у вас тут какое-то недоразумение: чтобы подписать пакет, вам нужен ключ, который вы не можете извлечь из ПЗУ (его там нет, иначе это будет проблемой безопасности). Таким образом, вам понадобится этот ключ только в том случае, если ваше приложение запрашивает разрешения, защищенные уровнем ¹ ( signature
достаточно signatureOrSystem
сделать его системным приложением).
Из вашего вопроса я не могу сказать, к какой категории относятся разрешения вашего приложения, но в любом случае это будет не в тему, поскольку Android.SE ориентирован на конечных пользователей. Чтобы прояснить это, вам лучше использовать Stack Overflow .
¹ Раскрытие информации: ссылка ведет на мой сайт
Я сам провел несколько экспериментов с системными приложениями. Итак, я говорю это по своему опыту: если вы сделали выпуск приложения из Android Studio (постарайтесь избегать отладочных выпусков), вам не нужно никаких исправлений сертификатов. Идите вперед и создайте прошиваемый почтовый индекс с соответствующими разрешениями ( 0644
), который помещает приложение /system/app/
или, /system/priv-app/
если вам нужен полный доступ к некоторым системным разрешениям.
Я советую вам сначала попробовать поместить приложение вручную, используя любой корневой проводник в /system
каталоге, потому что прошиваемые zip-файлы могут стать непосильными, если они не сработают за несколько попыток.
Силенко
Иззи
privileged
должно быть достаточно, чтобы поместить.apk
в/system/priv-app/
(как указал Чинмей ). Согласно документации разработчика , это замененоsystem
на API 24+ (подробности см.PROTECTION_FLAG_SYSTEM
Там). Дляdevelopment
см. первую ссылку, которую я предоставил в своем ответе.Силенко
Иззи