Сборка AOSP: заменить мои собственные ключи тестовыми ключами по умолчанию

Я собираю AOSP и хочу подписать сборку своим ключом. Существует некоторый официальный документ об этом процессе здесь.

Но мне интересно, могу ли я просто изменить весь этот процесс и вместо этого сделать следующее:

  1. Удалите тестовые ключи Android по умолчанию, которые расположены по адресу build/target/product/security.
  2. поместите мои ключи (сгенерированные по официальным инструкциям на здесь) в той же папке с теми же именами. (Предположим, что один ключ для всех общих, медиа,...)

Но этот подход не работает. После записи образа системные приложения (SystemUI, настройки и т. д.) остановятся и будут постоянно отображать диалоговое окно ANR. Я знаю, что это происходит, если системная подпись не совпадает с подписью этих приложений... но почему?

Другой вопрос: использование того же ключа, что и shared.pk8 , media.pk8, testkey.pk8 , ... вызывает какие-либо проблемы?

Спасибо


person Saleh    schedule 16.09.2019    source источник


Ответы (2)


Во-первых, убедитесь, что сборка повторно подписала приложения. Возможно, вам придется выполнить make clean, чтобы избавиться от предыдущих артефактов.

Также проверьте файлы Android.mk для ваших связанных системных приложений (например, в packages/apps или где бы вы их ни разместили). Где вы видите эту строку:

LOCAL_CERTIFICATE := PRESIGNED

вместо этого замените его на это:

LOCAL_CERTIFICATE := platform

Это позволит сборке переподписать ваши системные приложения ключом, по которому они будут проверяться.

Хотя использование одного и того же ключа для shared, media, testkey, platform будет работать (в том смысле, что ваша система должна загружаться и функционировать), он удаляет слой изоляции от приложений, созданных с помощью этих ключей. В частности, несистемные приложения, которые обычно подписываются с помощью testkey, теперь будут подписаны тем же ключом, что и platform. Это даст им доступ к данным и коду системных приложений, а также даст им повышенные привилегии (например, им не нужно запрашивать у пользователя подтверждение для использования камеры или доступа к своим файлам). Я не думаю, что это рекомендуется.

person Allen Luce    schedule 16.09.2019
comment
Ключевым шагом для меня является выполнение make clean. После этого можно заменить мои ключи вместо testkey. Мне было лень это делать, потому что пересборка AOSP на моем ПК занимает много времени! Спасибо - person Saleh; 18.09.2019
comment
Для своих сборок я использую блок AWS EC2 с 96 ядрами и 768 МБ оперативной памяти (экземпляр r5.metal/r5d.metal). Этому зверю требуется около 15 минут, чтобы сделать полную сборку AOSP с чистого листа. При спотовых ставках в штате Огайо, включая время загрузки/переноса, это обычно составляет около 0,50 доллара США за сборку (плюс около 10 долларов США в месяц за место на диске). - person Allen Luce; 18.09.2019

Одно предложение:

Если вы не хотите хранить свои приватные ключи в системе управления версиями вместе с кодом aosp, вы можете указать путь к ним в вашем устройстве mk:

PRODUCT_DEFAULT_DEV_CERTIFICATE :=  /home/my_user/release_keys_folder/releasekey
PRODUCT_VERITY_SIGNING_KEY := /home/my_user/release_keys_folder/verity
person Rick Sanchez    schedule 19.09.2019