Подписать apk как системное приложение во время прошивки

Я создал приложение, которое использует интерфейсы и классы, а также разрешения от скрытого API. Теперь я хотел бы создать прошиваемый zip-файл, который устанавливает apk как системное приложение. Если я прав на это, я должен подписать файл apk сертификатом текущего ПЗУ (из-за использования скрытого API).

Чтобы быть как можно более бессистемным, я подумал, что было бы здорово извлечь сертификат из ПЗУ и подписать apk в процессе флэш-памяти, прежде чем копировать его во внутреннюю память. Это возможно?

Или я что-то не так понял и все гораздо проще, как мне кажется?

Ответы (2)

Похоже, у вас тут какое-то недоразумение: чтобы подписать пакет, вам нужен ключ, который вы не можете извлечь из ПЗУ (его там нет, иначе это будет проблемой безопасности). Таким образом, вам понадобится этот ключ только в том случае, если ваше приложение запрашивает разрешения, защищенные уровнем ¹ ( signatureдостаточно signatureOrSystemсделать его системным приложением).

Из вашего вопроса я не могу сказать, к какой категории относятся разрешения вашего приложения, но в любом случае это будет не в тему, поскольку Android.SE ориентирован на конечных пользователей. Чтобы прояснить это, вам лучше использовать Stack Overflow .

¹ Раскрытие информации: ссылка ведет на мой сайт

Спасибо за этот полезный ответ. Я спрашиваю из-за этого разрешения. У него нет подписи или системы, но, может быть, привилегия или разработка тоже в порядке?
Я не уверен на 100% (наши друзья в SO должны знать), но этого privilegedдолжно быть достаточно, чтобы поместить .apkв /system/priv-app/(как указал Чинмей ). Согласно документации разработчика , это заменено systemна API 24+ (подробности см. PROTECTION_FLAG_SYSTEMТам). Для developmentсм. первую ссылку, которую я предоставил в своем ответе.
А ладно спасибо! Кстати, первая ссылка вашего ответа защищена htaccess.
Упс, исправлено, извините (неверная ссылка). И я как можно скорее обновлю этот список новыми protLevels, добавленными после MM.

Я сам провел несколько экспериментов с системными приложениями. Итак, я говорю это по своему опыту: если вы сделали выпуск приложения из Android Studio (постарайтесь избегать отладочных выпусков), вам не нужно никаких исправлений сертификатов. Идите вперед и создайте прошиваемый почтовый индекс с соответствующими разрешениями ( 0644), который помещает приложение /system/app/или, /system/priv-app/если вам нужен полный доступ к некоторым системным разрешениям.

Я советую вам сначала попробовать поместить приложение вручную, используя любой корневой проводник в /systemкаталоге, потому что прошиваемые zip-файлы могут стать непосильными, если они не сработают за несколько попыток.